Прошиваем MicroPython на ESP32 через esptool

Превращаем «голую» плату в устройство, понимающее Python.

Прошивка (firmware) — это файл с самим интерпретатором MicroPython, который записывается во флеш-память ESP32 и заменяет заводское ПО.

Зачем это нужно

Когда вы покупаете ESP32, в нём обычно стоит заводская прошивка (часто это AT-команды или прошивка под Arduino). Чтобы плата понимала Python, нужно записать в неё интерпретатор MicroPython. Делается это один раз с помощью утилиты esptool.

Шаг 1. Ставим esptool

Это обычная Python-программа для компьютера, ставится через pip:

pip install esptool

Шаг 2. Скачиваем прошивку

На сайте micropython.org в разделе Downloads выбираем плату ESP32 и качаем последний стабильный файл .bin, например ESP32_GENERIC-20240602-v1.23.0.bin.

Шаг 3. Находим порт

Подключите плату по USB. Порт выглядит так:

Linux/Mac:  /dev/ttyUSB0  или  /dev/cu.usbserial-XXXX
Windows:    COM3, COM4, ...

Шаг 4. Стираем старую прошивку

esptool.py --port /dev/ttyUSB0 erase_flash

Шаг 5. Заливаем MicroPython

esptool.py --port /dev/ttyUSB0 --baud 460800 \
  write_flash -z 0x1000 ESP32_GENERIC-20240602-v1.23.0.bin

Адрес 0x1000 — стандартное смещение для ESP32. После успешной заливки плата уже понимает Python.

Как работает под капотом

На плате есть микросхема-преобразователь USB↔UART (CP2102 или CH340). Через неё компьютер общается с ESP32 по последовательному порту. Чтобы войти в режим прошивки, чип нужно перевести в bootloader — на большинстве плат это происходит автоматически благодаря кнопкам EN и BOOT, которыми esptool управляет через сигналы DTR/RTS. Если автоматика не срабатывает, придётся в нужный момент зажать кнопку BOOT вручную. Сама прошивка пишется блоками во флеш-память; параметр -z включает сжатие для ускорения.

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

  • «Failed to connect». Не установлен драйвер USB-UART, либо нужно зажать BOOT при подключении. Проверьте кабель — некоторые кабели только для зарядки, без данных.
  • Неверный адрес. Для ESP32 это 0x1000; для ESP8266 — 0x0. Перепутали — плата не загрузится.
  • Не тот файл. Прошивка для ESP8266 на ESP32 не встанет.
  • Занятый порт. Закройте Thonny или монитор порта перед прошивкой — порт может быть занят.

Итог

  • Прошивка ставится один раз утилитой esptool.
  • Порядок: установить esptool → скачать .bin → найти порт → стереть флеш → залить прошивку по адресу 0x1000.
  • Общение идёт через USB-UART; для входа в bootloader иногда нужна кнопка BOOT.
  • Нужен кабель с поддержкой передачи данных, а не только зарядки.
Проверьте себя
1. Что такое прошивка (firmware) в контексте MicroPython?
AВаш пользовательский скрипт
BФайл с самим интерпретатором MicroPython, записываемый во флеш
CДрайвер для компьютера
DСхема подключения светодиода
2. По какому адресу обычно заливают прошивку MicroPython на ESP32?
A0x0
B0x1000
C0xFFFF
D0x8000000
3. Частая причина ошибки «Failed to connect» при прошивке — это…
AСлишком новая версия Python
BКабель только для зарядки без данных или не нажата кнопка BOOT
CСлишком быстрый компьютер
DПрошивка слишком маленькая