MicroPython:Платы/ESP8266/Руководство по MicroPython для ESP8266/Подготовка к работе с MicroPython для ESP8266

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Подготовка к работе с MicroPython для ESP8266[1]

Использование порта MicroPython – это отличный способ выжать из вашей ESP8266-платы самый максимум. И наоборот, чип ESP8266 – это отличная платформа для использования MicroPython. В этом руководстве мы расскажем, как настроить MicroPython, скачать и установить командную строку, использовать WebREPL, подключиться к сети и коммуницировать с интернетом, использовать GPIO-контакты и управлять некоторыми внешними компонентами.

Что ж, приступим!

Требования

Первое, что вам нужно – это плата с чипом ESP8266. Порт MicroPython поддерживает использование самого чипа ESP8266, поэтому должна подойти любая плата, где он используется. Главная характеристика платы – это то, сколько в нее установлено flash-памяти, как GPIO-контакты подключены к «внешнему миру» и есть ли у нее встроенный преобразователь USB-Serial, чтобы через UART-порт можно было коммуницировать с ПК.

Минимальные требования к размеру flash-памяти – 1 Мб. Есть также специальный билд для плат с 512 Кб, но у него очень много ограничений по сравнению с нормальным билдом: не поддерживается файловая система и поэтому функции, которые зависят от нее, работать не будут (WebREPL, upip и т.д.). Следовательно, 512 Кб будут более интересны пользователям, предпочитающим делать сборку из исходного кода и подстраивать параметры под свое приложение.

В этом руководстве нумерация контактов будет привязана к их нумерации на чипе (например, GPIO0), поэтому вам, когда вы будете работать со своей платой, будет легко понять, какой именно контакт имеется в виду.

Питание платы

Если у вашей платы есть USB-коннектор, то скорее всего она питается именно через него (будучи подключенной к компьютеру). В противном случае ее надо будет питать напрямую. Более подробно читайте в документации к вашей плате.

Загрузка прошивки

Во-первых, вам надо будет скачать самую последнюю версию прошивки MicroPython – это файл формата «*.bin», который вам затем надо будет загрузить на свою ESP8266-плату. Ее можно скачать со страницы загрузок сайта MicroPython. Там у вас будет три варианта:

  • Стабильный билд для модулей с 1024 Кб памяти и выше;
  • Текущий (выпускаемый каждый день) билд для модулей с 1024 Кб памяти и выше;
  • Текущий билд для модулей с 512 Кб памяти;

Если вы только начали работать с MicroPython, советуем скачать стабильную прошивку. Если вы продвинутый, опытный пользователь порта MicroPython для ESP8266, которому нравится быть в курсе того, как идет разработка порта, и помогать с тестированием новых функций, то для вас есть текущие билды (примечание: вам также, возможно, понадобится некоторый опыт в разработке – например, нужно быть готовым следить за git-историей разработки проекта, чтобы знать какие изменения были внесены и какие новые функции появились).

Поддержка модулей с 512 Кб памяти осуществляется по принципу «превью функций». Конечным пользователям рекомендуется использовать модули с flash-памятью 1024 Кб и больше. Поэтому для модулей с 512 Кб доступны только текущие билды прошивки.

Установка прошивки

Теперь, когда у вас есть прошивка MicroPython (скомпилированный код), нужно загрузить ее на вашу ESP8266-плату. Это делается в два шага: во-первых, вам надо перевести устройство в режим загрузчика, и во-вторых, скопировать прошивку.

То, как именно выполнять эти шаги, сильно зависит от модели платы, так что советуем по этому вопросу свериться с документацией.

Если у вашей платы есть USB-коннектор и преобразователь USB-Serial, а контакты DTR и RTS подключены так, как нужно, то загрузка прошивки будет выполняться легко и просто, т.к. все эти шаги будут выполняться автоматически. К таким платам можно причислить, к примеру, Adafruit Feather HUZZAH и платы NodeMCU.

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

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

pip install esptool

Версии начиная с 1.3 поддерживают и Python 2.7, и Python 3.4 (или новее). Более ранние версии (нужна как минимум версия 1.2.1) работают нормально, но требуют Python 2.7.

При помощи esptool.py можно стереть flash-память. Это делается с помощью команды:

esptool.py --port /dev/ttyUSB0 erase_flash

Установка новой прошивки выполняется следующей командой:

esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 esp8266-20170108-v1.8.7.bin

Вам, возможно, надо будет поменять настройку port на что-то релевантное вашему ПК. Также, если у вас начнут появляться ошибки при записи прошивки, вам, возможно, надо будет снизить скорость передачи данных (например, до 115200 бод).

Кроме того, название файла прошивки должно соответствовать имеющемуся у вас файлу.

Для некоторых плат с особой конфигурацией FlashROM (например, для некоторых плат NodeMCU) вам, возможно, надо будет воспользоваться следующей командой для установки прошивки (обратите внимание на опцию -fm dio).

esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect -fm dio 0 esp8266-20170108-v1.8.7.bin

Если команды выше запустились без ошибок, то это значит, что MicroPython успешно установлен на вашу плату!

Командная строка

Теперь, когда прошивка установлена, вы можете получить доступ к REPL (командной строке Python) через порт UART0 (GPIO1=TX, GPIO3=RX), который может быть подключен к преобразователю USB-Serial (зависит от вашей платы). Скорость передачи данных – 115200 бод. В следующем разделе мы расскажем о командной строке более подробно.

WiFi

После установки прошивки и загрузки ваша плата настроит себя как точку доступа WiFi, к которой можно будет подключиться. ESSID платы будет иметь вид «MicroPython-xxxxxx», где иксы будут заменены на часть MAC-адреса вашего устройства (поэтому он всегда будет одинаковым и скорее всего будет отличаться от ESSID других ESP8266-чипов). Пароль к WiFi«micropythoN» (обратите внимание на заглавную «N» в конце). Когда вы подключитесь к сети, IP-адресом платы будет «192.168.4.1». Более подробно о WiFi будет рассказано ниже.

Решение проблем с установкой

Если вы испытываете проблемы с установкой прошивки или с ее запуском сразу после установки, вот некоторые рекомендации по их решению:

  • Старайтесь избегать аппаратных проблем. Есть две распространенные проблемы: источник питания плохого качества и дефективная (возможно, износившаяся) FlashROM. Что касается источника питания, то важен не только ампераж, но и то, насколько низок общий уровень электромагнитных помех. Если у вас проблемы с самодельным или бытовым розеточным источником питания, попробуйте запитать плату через USB-порт ПК. Также проблемы могут возникнуть из-за незаземленного источника электроэнергии, т.к. он (и это в лучшем случае) генерирует повышенные электромагнитные помехи и даже может привести плату в негодность. Поэтому советуем избегать использования незаземленных источников питания при работе с ESP8266 и другими платами. Что касается аппаратных проблем с FlashROM, согласно некоторым независимым (никак не связанным с MicroPython) источникам (например, вот), на некоторых ESP8266-модулях FlashROM можно программировать лишь не более 20 раз, после чего начинают появляться ошибки. Это гораздо меньше 100 тысяч циклов программирования FlashROM-чипов, которые устанавливают в свои ESP8266 надежные производители, что говорит либо о производственном браке, либо об изношенных б/у чипах, устанавливаемых в некоторые (по всей вероятности, дешевые) модули/платы. Поэтому советуем максимально ответственно подходить к покупке модулей/плат, обращая особое внимание на такие характеристики как цена, производитель, документация, гарантия и послепродажное обслуживание.
  • Выше в разделе 1.4 подразумевается, что запись прошивки делается при 460800 бод – это хороший компромисс между скоростью и стабильностью. Однако, в зависимости от модуля/платы, преобразователя USB-UART, кабелей, ОС и т.д. эта скорость передачи данных может оказаться слишком высокой, что может привести к ошибкам. В таком случае попробуйте более часто используемую скорость 115200 бод.
  • Если понижение скорости не помогло, можно попробовать более раннюю версию esptool.py (у нее другой алгоритм программирования):
pip install esptool==1.0.1

Эта версия не поддерживает опцию --flash_size=detect, поэтому размер FlashROM нужно будет указать явно (в мегабитах). Ей также потребуется Python 2.7, поэтому в команде выше, возможно, надо будет вписать pip2 вместо pip.

  • В команде выше должна обязательно присутствовать опция --flash_size. Если ее не вписать, прошивка получится поврежденной.
  • Чтобы определить некорректный контент на flash-памяти (например, данные, находящиеся в дефектной части чипа), добавьте в команды выше опцию --verify.
  • Кроме того, вы можете проверить целостность прошивки из командной строки MicroPython REPL (с условием, если вам удалось ее записать, и опция --verify не выдала никаких ошибок).
import esp
esp.check_fw()

Если крайним значением, которое вернул этот метод, является «true», значит с прошивкой все в порядке. В противном случае она повреждена и ее надо будет корректно перезаписать.

  • Если у вас проблемы с другим инструментом для записи прошивки (не esptool.py), попробуйте esptool.py. Это общепринятое в сообществе ESP8266 приложение для записи прошивки.
  • Если у вас по-прежнему проблемы даже с записью прошивки, зайдите на страницу проекта esptool.by на GitHub – там вы найдете дополнительную документацию и сможете сообщить о своем баге.
  • Если вы смогли записать прошивку, но опция --verify или метод esp.check_fw() возвращают ошибки даже после нескольких повторных попыток, то вам, возможно, попался дефектный чип FlashROM (о чем говорилось выше).

См.также

Внешние ссылки