Прошивка ESP32, Arduino и Pico из браузера

ESP32, ESP8266, Arduino, STM32, Pico и Digispark прямо из браузера, без Arduino IDE. Файл остаётся на вашем компьютере.

Подключить плату

Кабелем USB к этому компьютеру. Браузер спросит, какой порт открыть.

Pico, Digispark и nRF52 подключаются без порта:

Выбрать прошивку

Перетащите сюда прошивку (.bin, .hex, .uf2, .elf), все .bin от ESP разом или файлы .py для MicroPython. Файлы остаются на компьютере.

Прошить

Сначала выберите файл.

Как прошить плату своим файлом

Прошивалка открывает порт платы через Web Serial, сбрасывает плату в загрузчик и узнаёт её: у ESP32 и ESP8266 чип, ревизию и размер flash, у Arduino чип по подписи, загрузчик и скорость. ESP шьётся через esptool-js от Espressif со сжатием и проверкой MD5, Arduino Uno, Nano и Mega через свой загрузчик по протоколу STK500 с чтением записанного обратно, Pico файлом .uf2 на диск платы. Файл читается в браузере и остаётся на компьютере.

Адрес для .bin прошивалка выбирает по содержимому файла: полный образ, программа или загрузчик. Несколько .bin, выбранных сразу, встают в таблицу с адресами по чипу платы и по таблице разделов из того же набора, адрес в ней правится вручную.

Примеры

  • Три файла из PlatformIO (bootloader.bin, partitions.bin и firmware.bin) для ESP32 встают на 0x1000, 0x8000 и 0x10000 и пишутся за один раз. Для ESP32-C3 загрузчик из того же набора уйдёт на 0x0.
  • Скетч .hex для Nano с CH340 прошивалка пробует на 115200 бод (новый загрузчик Optiboot) и на 57600 бод (Old Bootloader) и пишет на той скорости, на которой загрузчик ответил.

Частые ошибки

  • Вписывают в настройках адрес 0x0 для файла программы без загрузчика. Программа затирает загрузчик, и плата не запускается, пока на неё не запишут полный образ.
  • Берут файл для другого чипа, например для ESP32 при подключённой ESP32-C3. Прошивалка видит чип в заголовке образа и запись не начинает.

Частые вопросы

Как перевести ESP32 в режим прошивки?
Обычно плата входит в загрузчик по сигналам DTR и RTS переходника. Если прошивалка пишет «Плата не вошла в режим прошивки», зажмите BOOT, нажмите и отпустите EN (RESET), отпустите BOOT и сразу нажмите «Ещё раз». У NodeMCU и Wemos D1 mini на ESP8266 кнопки называются FLASH и RST.
По какому адресу шить .bin: 0x0, 0x1000 или 0x10000?
Полный образ (merged bin: загрузчик, таблица разделов и программа) пишется с 0x0, программа без загрузчика с 0x10000, таблица разделов с 0x8000. Отдельный загрузчик идёт на 0x1000 у ESP32 и S2, на 0x2000 у C5 и P4 и на 0x0 у S3, C3, C6 и H2, так их раскладывает esptool. Поле «Адрес записи (ESP)» в настройках нужно для своей раскладки.
Что делать, если Failed to connect или порта нет в списке?
Возьмите кабель с линиями данных и подключите плату к разъёму компьютера без хаба. Если в диспетчере устройств плата без драйвера, поставьте драйвер переходника: CH340 у WCH, CP2102 у Silicon Labs. Откройте страницу в Chrome, Edge или Opera на компьютере и войдите в загрузчик кнопками BOOT и EN.
Можно ли прошить плату с телефона?
С iPhone и iPad нельзя: в браузерах там нет ни Web Serial, ни WebUSB. В браузере на Android без Web Serial прошивалка открывает плату через WebUSB, и так работают только переходники CH340 и CH341, подключённые кабелем OTG.
Как залить скетч в Arduino Nano без Arduino IDE?
Нужен готовый .hex: его даёт автор проекта или Arduino IDE командой «Скетч → Экспорт бинарного файла», берите файл без with_bootloader в имени. Старый загрузчик (Old Bootloader) прошивалка находит сама. Если плата молчит, нажмите «Ещё раз» и сразу RESET.
Как прошить Raspberry Pi Pico файлом .uf2?
Зажмите BOOTSEL и, не отпуская, подключите Pico кабелем: появится диск RPI-RP2, у Pico 2 диск RP2350. В Chrome, Edge и Opera прошивалка записывает файл на этот диск, в других браузерах перетащите .uf2 на диск сами. С прошивкой Arduino или MicroPython Pico переходит в этот режим по ссылке «Перевести в BOOTSEL через порт».

Пригодится ещё