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

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

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

Совет: для более простого способа прошивки 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, поэтому перейдите на сайт 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. Перейдите в Инструменты > Порт

  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, и вы должны увидеть последовательный порт в меню Инструменты > Порт.

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

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

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

После загрузки файла .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. Перейдите в Инструменты > Порт

  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, и вы должны увидеть последовательный порт в меню Инструменты > Порт.

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

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

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

После загрузки файла .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. Вам потребуется имя последовательного порта (в нашем случае COM4) и расположение файла .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 вы столкнулись с ошибкой прав доступа (permission error), откройте командную строку от имени администратора (или используйте sudo в Linux).

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

Подведение итогов

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

Если вам понравилась эта статья, вам могут понравиться и следующие, поэтому обязательно подпишитесь.