Режим прошивки
Для перевода микроконтроллера в режим прошивки необходимо соединить:
- GPIO0 — GND через резистор 1 кОм;
- GPIO15 — GND через резистор 1 кОм;
- GND контроллера к GND преобразователя;
- 3.3v контроллера (vcc) к 3.3v преобразователя;
- RST к 3.3v контроллера (vcc) через резистор 1 кОм;
- EN к 3.3v контроллера (vcc) через резистор 1 кОм;
- TX/RX контроллера к RX/TX преобразователя.
Пример подключения в режиме прошивки представлен на рисунке 1.

Для прошивки необходим USB-UART преобразователь. Выбор пал на преобразователь под ESP-01 с алиэкспресс на чипе CH340. Программатор изображен на рисунке 2.
По идее может подойти любой преобразователь.

Прошивка
Для прошивки MicroPython понадобится Python3 и пакет esptool, который можно установить командой:
pip install esptool
Помимо этого утилиту можно скачать с репозитория:
https://github.com/espressif/esptool/
После установки пакета можно запустить команду очистки flash памяти контроллера:
esptool --port COM4 erase_flash
Если скрипту не удалось соединиться — проверьте схему или попробуйте подобрать подходящую «скорость передачи данных» (baudrate) с помощью добавления к команде параметра -b (например: -b 9600)
Порт устройства задается параметром port. Посмотреть порт можно в Диспетчере устройств Windows. Пример отображения номера порта в диспетчере устройств представлен на рисунке 3.

В случае успеха в результате выполнения команды очистки можно увидеть информацию о контроллере и результат очистки. Пример изображен на рисунке 4.

После очистки flash памяти контроллера можно установить MicroPython. Бинарный файл доступен по ссылке.
Важно: бинарный файл необходимо скачать для модуля с 1МБ памяти: ссылка на бинарник из статьи
Важно: ссылка указывает на бинарные файлы для esp8266, которые не применимы на esp32.
Если вы не уверены в объеме памяти — выполните команду:
esptool --port COM4 flash_id
Результат с указанием объема flash памяти представлен на рисунке 5.

После загрузки бинарного файла прошивки с сайта можно выполнить команду:
esptool --port COM4 write_flash --flash_size=detect 0 esp8266-1m-20210902-v1.17.bin
Рабочий режим
В случае успешной прошивки контроллер можно переподключить в рабочем режиме — схема представлена на рисунке 6.
Необходимо соединить:
- GND контроллера к GND преобразователя;
- 3.3v контроллера (vcc) к 3.3v преобразователя;
- EN к 3.3v контроллера (vcc) через резистор 1 кОм;
- GPIO15 к GND через резистор 1 кОм;
- TX/RX контроллера к RX/TX программатора.
Важно: питание должно быть переподключено для перезагрузки контроллера.

Внимание: контроллер работает в диапазоне от 3.0 до 3.6 вольт. Подача большего напряжения может привести к выходу из строя контроллера.
Загрузка скриптов на контроллер
Для загрузки скриптов на контроллер понадобится программа EsPy, которую можно скачать по ссылке.
Для первой настройки в меню Device необходимо указать порт (Ports), который использовался ранее для прошивки устройства. Пример интерфейса представлен на рисунке 7.

Помимо этого в меню Device необходимо выбрать пункт «EspTool…» и указать там местоположение пакета esptool, установленного ранее. Интерфейс окна настройки esptool представлен на рисунке 8.

Изменив настройки из меню Device можно выполнить подключение нажав на кнопку Connect, подсвеченную на рисунке 9.

В результате будет произведено подключение к устройству. Необходимо в окне терминала нажать Enter, так как main.py не найден в памяти устройства. На рисунке 10 представлено окно терминала с зависшим вводом/выводом.

Если нажатие кнопки Enter не исправило ситуацию, как это изображено на рисунке 11 — необходимо подтянуть пин GPIO15 к земле как описывалось ранее в части о переводе в рабочий режим.

На рисунке 11 подсвечена кнопка файлового менеджера с помощью которого можно загружать и выгружать файлы с памяти контроллера.