Прошивка MicroPython с помощью esptool.py на ESP32 и ESP8266

В этом руководстве показано, как прошить прошивку MicroPython на платы ESP32/ESP8266 с помощью esptool.py. Он работает на Windows, Mac OS X и Linux. Официальную документацию можно найти на странице esptool.py на GitHub.

Прошивка MicroPython с помощью esptool.py на ESP32 и ESP8266

Совет: для более простого способа прошивки ESP32/ESP8266 с MicroPython рекомендуем прочитать руководство Прошивка MicroPython с помощью uPyCraft IDE. Однако недавно мы получили комментарии от читателей о проблемах с установкой/использованием uPyCraft IDE. По этой причине мы публикуем альтернативный способ с использованием программы esptool.py.

Установка esptool.py на ваш компьютер

Для работы с esptool.py вам потребуется Python 2.7, Python 3.4 или более новая версия Python, установленная в вашей системе. Мы рекомендуем использовать `Python 3.7.X <https://www.python.org/downloads/>`_, поэтому перейдите на сайт Python и установите его на ваш компьютер.

После установки Python 3 откройте окно терминала и установите последнюю стабильную версию esptool.py с помощью pip:

pip install esptool

Примечание: в некоторых установках Python эта команда может не сработать, и вы получите ошибку. В этом случае попробуйте установить esptool.py одной из следующих команд:

  • pip3 install esptool

  • python -m pip install esptool

  • pip2 install esptool

Setuptools также является обязательным компонентом, который может быть недоступен во всех системах по умолчанию. Вы можете установить его следующей командой:

pip install setuptools

После установки esptool.py будет установлен в стандартную директорию исполняемых файлов Python, и вы сможете запускать его командой esptool.py. В окне терминала выполните следующую команду:

python -m esptool

Если установка прошла успешно, должно отобразиться похожее сообщение (независимо от вашей операционной системы):

esptool.py запущен и работает

После установки esptool.py на ваш компьютер вы можете легко прошить платы ESP32 или ESP8266 прошивкой MicroPython. Этот пост разделён на две части — читайте Часть 1 или Часть 2 в зависимости от вашей платы:

  • Часть 1 — ESP32

  • Часть 2 — ESP8266

Примечание: после установки прошивки MicroPython на ESP32 или ESP8266 вы можете вернуться к использованию Arduino IDE. Для этого просто загрузите код через Arduino IDE. Затем, если вы снова захотите использовать MicroPython, вам нужно будет заново прошить прошивку MicroPython.

[Часть 1 — ESP32] Загрузка и прошивка MicroPython на ESP32

Чтобы скачать последнюю версию прошивки MicroPython для ESP32, перейдите на страницу загрузки MicroPython и прокрутите до раздела ESP32.

Вы должны увидеть похожую веб-страницу (см. рисунок ниже) со ссылками для загрузки .bin-файлов. Скачайте последний стабильный релиз. На момент написания этой статьи последний релиз — v1.17 (2021-02-02).bin. Не скачивайте Nightly-сборки — эти версии нестабильны и рекомендуются только для продвинутых программистов.

Скачать прошивку MicroPython

Примечание: если вы используете другую плату (например, PyBoard, WiPy или другую), перейдите на страницу загрузки MicroPython и скачайте подходящую прошивку для вашей платы.

Определение имени последовательного порта

Определение имени последовательного порта немного различается в разных операционных системах, поэтому для простоты мы рекомендуем найти имя последовательного порта ESP через Arduino IDE. Выполните следующие шаги:

  1. Подключите плату к компьютеру

  2. Откройте Arduino IDE

  3. Перейдите в Tools > Port

  4. Запишите имя последовательного порта ESP32 (в нашем случае это COM7)

  5. Закройте Arduino IDE

COM-порт в Arduino IDE

Важно: если вы подключили плату ESP32 к компьютеру, но не можете найти доступный порт ESP32 в Arduino IDE, это может быть одна из двух проблем: 1. отсутствуют USB-драйверы или 2. USB-кабель без проводов данных.

1. Если вы не видите COM-порт ESP, это часто означает, что у вас не установлены USB-драйверы. Внимательно посмотрите на чип рядом с регулятором напряжения на плате и проверьте его название.

Плата ESP32 DEVKIT V1 DOIT использует чип CP2102.

Чип CP2102 на ESP32

Найдите в Google ваш конкретный чип, чтобы найти драйверы и установить их в вашей операционной системе.

Скачать драйвер CP2102

Вы можете скачать драйверы CP2102 на сайте Silicon Labs.

Сайт загрузки драйверов CP2102

После установки перезапустите Arduino IDE, и вы должны увидеть последовательный порт в меню Tools > Port.

2. Если драйверы установлены, но вы не видите своё устройство, убедитесь, что вы используете USB-кабель с проводами данных.

USB-кабели от повербанков часто не имеют проводов данных (они только для зарядки). Поэтому ваш компьютер никогда не установит последовательное соединение с ESP32. Использование правильного USB-кабеля должно решить проблему.

Поиск .bin-файла MicroPython

После загрузки .bin-файла ESP32 он должен находиться в папке Downloads. В окне терминала перейдите в папку Downloads с помощью команды cd:

cd Downloads
Переход в папку Downloads в терминале

Выведите список всех файлов в папке Downloads, чтобы убедиться, что .bin-файл находится именно там. В Windows используйте:

dir

В Mac OS X или Linux выполните следующую команду:

ls
Поиск .bin-файла прошивки MicroPython

Как видно на скриншоте выше, .bin-файл ESP32 находится в папке Downloads: esp32-20190113-v1.9.4-779-g5064df207.bin.

Очистка флеш-памяти ESP32

Перед прошивкой MicroPython необходимо очистить флеш-память ESP32. Подключив ESP32 к компьютеру, удерживайте кнопку «BOOT/FLASH» на плате ESP32:

Кнопка BOOT/FLASH на ESP32

Примечание: если на вашей плате нет кнопки BOOT/FLASH, она, вероятно, перейдёт в режим прошивки автоматически.

Удерживая кнопку «BOOT/FLASH», выполните следующую команду для очистки флеш-памяти ESP32:

python -m esptool --chip esp32 erase_flash

Когда начнётся процесс «Erasing», вы можете отпустить кнопку «BOOT/FLASH». Через несколько секунд флеш-память ESP32 будет очищена.

Успешная очистка флеш-памяти ESP32

Примечание: если после сообщения «Connecting …» продолжают появляться новые точки, это означает, что ESP32 не находится в режиме прошивки. Вам нужно повторить все описанные выше шаги и снова удерживать кнопку «BOOT/FLASH», чтобы убедиться, что ESP32 перешёл в режим прошивки и успешно завершил процесс очистки.

ESP32 в процессе подключения для очистки памяти

Прошивка MicroPython на ESP32 с помощью esptool.py

После очистки флеш-памяти ESP32 вы наконец можете прошить прошивку MicroPython. Вам потребуется имя последовательного порта (COM7 в нашем случае) и расположение .bin-файла ESP32. Замените следующую команду вашими данными:

python -m esptool --chip esp32 --port <serial_port> write_flash -z 0x1000 <esp32-X.bin>

В нашем случае команда выглядит так:

python -m esptool --chip esp32 --port COM7 write_flash -z 0x1000 esp32-20190113-v1.9.4-779-g5064df207.bin

Удерживайте кнопку «BOOT/FLASH» перед выполнением команды прошивки. Через несколько секунд вы должны увидеть следующее:

Прошивка MicroPython на ESP32

Ваш ESP32 успешно прошит прошивкой MicroPython!

Примечание: если вы получили ошибку при попытке прошивки, выполните команду снова и убедитесь, что удерживаете кнопку «BOOT/FLASH» на ESP32.

Ошибка подключения к ESP32 при прошивке

[Часть 2 — ESP8266] Загрузка и прошивка MicroPython на ESP8266

Чтобы скачать последнюю версию прошивки MicroPython для ESP8266, перейдите на страницу загрузки MicroPython и прокрутите до раздела ESP8266.

Вы должны увидеть похожую веб-страницу (см. рисунок ниже) со ссылками для загрузки .bin-файлов. Скачайте последний стабильный релиз. На момент написания этой статьи последний релиз — v1.17 (2021-02-02).bin. Не скачивайте Nightly-сборки — эти версии нестабильны и рекомендуются только для продвинутых программистов.

Скачать прошивку MicroPython

Примечание: если вы используете другую плату (например, PyBoard, WiPy или другую), перейдите на страницу загрузки MicroPython и скачайте подходящую прошивку для вашей платы.

Определение имени последовательного порта

Определение имени последовательного порта немного различается в разных операционных системах, поэтому для простоты мы рекомендуем найти имя последовательного порта ESP через Arduino IDE. Выполните следующие шаги:

  1. Подключите плату к компьютеру

  2. Откройте Arduino IDE

  3. Перейдите в Tools > Port

  4. Запишите имя последовательного порта ESP8266 (в нашем случае это COM4)

  5. Закройте Arduino IDE

COM-порт ESP8266 в Arduino IDE

Важно: если вы подключили плату ESP8266 к компьютеру, но не можете найти доступный порт ESP8266 в Arduino IDE, это может быть одна из двух проблем: 1. отсутствуют USB-драйверы или 2. USB-кабель без проводов данных.

1. Если вы не видите COM-порт ESP, это часто означает, что у вас не установлены USB-драйверы. Внимательно посмотрите на чип рядом с регулятором напряжения на плате и проверьте его название.

Плата ESP8266 ESP-12E NodeMCU использует чип CP2102.

Чип CP2102 на ESP8266

Найдите в Google ваш конкретный чип, чтобы найти драйверы и установить их в вашей операционной системе.

Скачать драйвер CP2102

Вы можете скачать драйверы CP2102 на сайте Silicon Labs.

Сайт загрузки драйверов CP2102

После установки перезапустите Arduino IDE, и вы должны увидеть последовательный порт в меню Tools > Port.

2. Если драйверы установлены, но вы не видите своё устройство, убедитесь, что вы используете USB-кабель с проводами данных.

USB-кабели от повербанков часто не имеют проводов данных (они только для зарядки). Поэтому ваш компьютер никогда не установит последовательное соединение с ESP8266. Использование правильного USB-кабеля должно решить проблему.

Поиск .bin-файла MicroPython

После загрузки .bin-файла ESP8266 он должен находиться в папке Downloads. В окне терминала перейдите в папку Downloads с помощью команды cd:

cd Downloads
Переход в папку Downloads в терминале

Выведите список всех файлов в папке Downloads, чтобы убедиться, что .bin-файл находится именно там. В Windows используйте:

dir

В Mac OS X или Linux выполните следующую команду:

ls
Поиск .bin-файла прошивки MicroPython

Как видно на скриншоте выше, .bin-файл ESP8266 находится в папке Downloads: esp8266-20180511-v1.9.4.bin.

Очистка флеш-памяти ESP8266

Перед прошивкой MicroPython необходимо очистить флеш-память ESP8266. Подключив ESP8266 к компьютеру, удерживайте кнопку «BOOT/FLASH» на плате ESP8266:

Кнопка BOOT/FLASH на ESP8266

Удерживая кнопку «BOOT/FLASH», выполните следующую команду для очистки флеш-памяти ESP8266:

python -m esptool --chip esp8266 erase_flash

Когда начнётся процесс «Erasing», вы можете отпустить кнопку «BOOT/FLASH». Через несколько секунд флеш-память ESP8266 будет очищена.

Очистка флеш-памяти ESP8266

Примечание: если после сообщения «Connecting …» продолжают появляться новые точки, это означает, что ESP8266 не находится в режиме прошивки. Вам нужно повторить все описанные выше шаги и снова удерживать кнопку «BOOT/FLASH», чтобы убедиться, что ESP8266 перешёл в режим прошивки и успешно завершил процесс очистки.

Прошивка MicroPython на ESP8266 с помощью esptool.py

После очистки флеш-памяти ESP8266 вы наконец можете прошить прошивку MicroPython. Вам потребуется имя последовательного порта (COM7 в нашем случае) и расположение .bin-файла ESP8266. Замените следующую команду вашими данными:

python -m esptool --chip esp8266 --port <serial_port> write_flash --flash_mode dio --flash_size detect 0x0 <esp8266-X.bin>

В нашем случае окончательная команда выглядит так:

python -m esptool --chip esp8266 --port COM4 write_flash --flash_mode dio --flash_size detect 0x0 esp8266-20180511-v1.9.4.bin

Удерживайте кнопку «BOOT/FLASH» перед выполнением команды прошивки. Через несколько секунд вы должны увидеть следующее:

Прошивка MicroPython на ESP8266

Ваш ESP8266 успешно прошит прошивкой MicroPython!

Примечание: если вы получили ошибку при попытке прошивки, выполните команду снова и убедитесь, что удерживаете кнопку «BOOT/FLASH» на ESP8266.

Устранение неполадок

Если при попытке выполнить команду esptool вы получаете ошибку разрешения, откройте командную строку от имени администратора (или используйте sudo в Linux).

Запуск командной строки от имени администратора

Заключение

Надеемся, это руководство было для вас полезным. Теперь на вашем ESP32/ESP8266 должна быть прошита прошивка MicroPython. Чтобы узнать больше о MicroPython, прочитайте: Начало работы с MicroPython на ESP32 и ESP8266.