yunsi-toolbox-vue/components/esp-flasher
kerms 92dd27ed9b
feat: add chipDetected emit, hide single-option firmware selector, remove alerts
2026-03-08 19:14:05 +01:00
..
assets chore(esp-flasher): relocate esptools-js files into components directory 2026-02-20 18:32:20 +01:00
lib_esptools-js chore(esp-flasher): relocate esptools-js files into components directory 2026-02-20 18:32:20 +01:00
EspFlasher.vue feat: add chipDetected emit, hide single-option firmware selector, remove alerts 2026-03-08 19:14:05 +01:00
README.md chore(esp-flasher): relocate esptools-js files into components directory 2026-02-20 18:32:20 +01:00
web-serial.d.ts fix(esp-flasher): enforce imageOptions.value uniqueness via prop validator 2026-02-22 16:08:04 +01:00

README.md

ESP Flasher Component

A Vue 3 component for flashing ESP32 series microcontrollers directly from the browser using the Web Serial API. This component is based on esptools-js.

Demo

Live Demo - Wireless UART DIY Guide

ESP Flasher Screenshot

Features

  • Supports ESP32, ESP32-C3, ESP32-S3, and more.
  • Built-in Xterm.js terminal for progress and logging.
  • Support for multiple firmware image options.
  • Dark mode support via prop.

Usage

Props

Prop Type Description
imageOptions ImageOption[] An array of firmware images available for flashing.
isDark boolean (Optional) Toggle dark mode for the terminal.

ImageOption Object

type ImageOption = {
  value: string;  // Display name of the firmware
  link: string;   // Path/URL to the .bin file
  target: string; // Target chip (e.g., 'ESP32-C3', 'ESP32', 'ESP32-S3')
};

Example

<script setup lang="ts">
import EspFlasher from './path/to/yunsi-toolbox/esp-flasher/EspFlasher.vue';
import { ref } from 'vue';

const isDark = ref(false);

const imageOptions = [
  {
    value: 'MyFirmware_v1.0_esp32c3.bin',
    link: '/downloads/firmware_c3.bin',
    target: 'ESP32-C3',
  },
  {
    value: 'MyFirmware_v1.0_esp32s3.bin',
    link: '/downloads/firmware_s3.bin',
    target: 'ESP32-S3',
  }
];
</script>

<template>
  <EspFlasher :imageOptions="imageOptions" :isDark="isDark" />
</template>

Dependencies

  • vue
  • xterm
  • xterm-addon-fit
  • crypto-js

Credits

This tool uses a modified version of esptools-js.