Программирование esp8266 на python

Использование MicroPython — отличный способ получить максимальную отдачу от вашей платы ESP8266. И наоборот, чип ESP8266-отличная платформа для использования MicroPython. Этот учебник поможет вам настроить MicroPython, получить приглашение, использовать WebREPL. Подключиться к сети и общаться с Интернетом. Использовать аппаратную периферию и управлять некоторыми внешними компонентами.

Давайте начнем!

1.1. Требования

Первое, что вам нужно, — это плата с чипом ESP8266. Программное обеспечение MicroPython поддерживает сам чип ESP8266, и любая плата должна работать. Основная характеристика платы-это то, сколько у нее флэш-памяти. Как контакты GPIO подключены к внешнему миру и включает ли она встроенный USB-последовательный преобразователь. Чтобы сделать UART доступным для вашего ПК.

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

Имена контактов будут даны в этом уроке, используя имена чипов (например, GPIO0), и это должно быть просто найти. Какой контакт это соответствует на вашей конкретной плате.

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

Если на вашей плате есть USB-разъем, то, скорее всего. Она питается через него при подключении к вашему компьютеру. В противном случае вам нужно будет включить его напрямую. Пожалуйста. Обратитесь к документации для вашего совета директоров для получения более подробной информации.

1.3. Получение микропрограммного обеспечения

Первое, что вам нужно сделать. Это загрузить самый последний файл MicroPython firmware .bin для загрузки на ваше устройство ESP8266.

Вы можете скачать его со страницы загрузки MicroPython. Отсюда у вас есть 3 основных варианта выбора

  • Стабильная прошивка строится для модулей 1024 кб и выше.

  • Ежедневная прошивка строится для модулей 1024кб и выше.

  • Ежедневная прошивка строится для модулей 512кб.

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

Поддержка модулей 512kb предоставляется на основе предварительного просмотра функций. Для конечных пользователей рекомендуется использовать модули со вспышкой 1024 Кб и более. Таким образом, предоставляются только ежедневные сборки для модулей 512kb.

1.4. Развертывание прошивки

После того, как у вас есть микропрограмма MicroPython (скомпилированный код). Вам нужно загрузить его на устройство ESP8266.

Для этого есть два основных шага: сначала нужно перевести устройство в режим загрузчика. А затем скопировать по прошивке. Точная процедура выполнения этих шагов сильно зависит от конкретной платы. И вам нужно будет обратиться к ее документации для получения более подробной информации.

Если у вас есть плата, которая имеет USB-разъем, USB-последовательный преобразователь и имеет контакты DTR и RTS. Подключенные специальным образом. То развертывание прошивки должно быть простым. Так как все шаги могут быть выполнены автоматически. Доски, которые имеют такие функции, включают в себя Adafruit Перо HUZZAH и NodeMCU доски.

Если у вас нет такой платы, вам нужно держать GPIO0 притянутым к земле и сбросить устройство. Потянув штырь сброса к земле и отпустив его снова. Чтобы войти в режим программирования.

Для достижения наилучших результатов рекомендуется сначала стереть всю вспышку вашего устройства. Прежде чем надевать новую микропрограмму MicroPython.

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

pip install esptool 

Версии, начинающиеся с версии 1.3, поддерживают как Python 2.7, так и Python 3.4 (или новее).

Более старая версия (по крайней мере, 1.2.1) работает нормально, но для нее потребуется Python 2.7.

Любая другая программа мигания должна работать. Поэтому не стесняйтесь попробовать их или обратиться к документации для вашей платы. Чтобы увидеть ее рекомендации.

Использование esptool.py вы можете стереть вспышку с помощью команды:

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 

Возможно. Вам потребуется изменить настройку “порт” на что-то другое. Относящееся к вашему компьютеру.

Вам также может потребоваться уменьшить скорость, если вы получаете ошибки при мигании (например, до 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 должен быть установлен на вашей плате!

Если вы потянули GPIO0 вручную на землю, чтобы войти в режим программирования. Отпустите его сейчас и сбросьте устройство. Снова потянув штифт сброса на землю на короткое время.

1.5. Последовательная подсказка

Как только у вас есть прошивка на устройстве. Вы можете получить доступ к REPL (Python Prompt) через UART0 (GPIO1=TX, GPIO3=RX). Который может быть подключен к USB-последовательному преобразователю. В зависимости от вашей платы.

Бодрат-115200. В следующей части урока мы обсудим эту подсказку более подробно.

1.6. Wi-Fi

После новой установки и загрузки устройство настраивается как точка доступа Wi-Fi (AP). К которой вы можете подключиться. ESSID имеет вид MicroPython-xxxxxx. Где x заменяются частью MAC-адреса вашего устройства (поэтому каждый раз будет одинаковым и. Скорее всего. Разным для всех чипов ESP8266). Пароль для Wi-Fi-MicroPython (обратите внимание на верхний регистр N). Его IP-адрес будет 192.168.4.1, как только вы подключитесь к его сети. Конфигурация Wi-Fi будет обсуждаться более подробно позже в учебнике.

1.7. Устранение неполадок установки

Если вы испытываете проблемы во время перепрошивки или при запуске прошивки сразу после нее. Вот рекомендации по устранению неполадок:

  • Будьте внимательны и старайтесь исключить аппаратные проблемы. Есть 2 общие проблемы: плохое качество источника питания и изношенная/неисправная вспышка. Говоря об источнике питания, важна не только необработанная сила тока, но и низкая пульсация и шум/ЭМИ в целом. Если у вас возникли проблемы с самодельным или настенным источником питания в стиле бородавок. Попробуйте USB-питание от компьютера.

    Известно также, что неземные источники питания вызывают проблемы. Так как они являются источником повышенной ЭМИ (электромагнитных помех) — по крайней мере. И могут привести к поломке электрических устройств. Итак, вы рекомендуется избегать использования незаземленных силовых соединений при работе с ESP8266 и другими платами. Что касается аппаратных проблем FlashROM. То существуют независимые (никоим образом не связанные с MicroPython) отчеты (например) о том. Что на некоторых модулях ESP8266 FlashROM может быть запрограммирован всего 20 раз. Прежде чем возникнут ошибки программирования. Это очень много менее 100 000 циклов программирования, приведенных для микросхем FlashROM типа. Используемого с ESP8266 авторитетными поставщиками. Что указывает либо на производственные браки. Либо на подержанные изношенные флэш-чипы. Которые будут использоваться на некоторых (по-видимому. Дешевых) модулях/платах. Вы можете использовать свое лучшее суждение об источнике, цене. Документации, гарантии. Послепродажной поддержке приобретаемых модулей/плат.

  • В приведенных выше инструкциях по миганию используется скорость мигания 460800 бод. Что является хорошим компромиссом между скоростью и стабильностью. Однако в зависимости от вашего модуля/платы. Конвертера USB-UART, кабелей. Хост-ОС и т. Д. Указанная выше скорость передачи данных в бодах может быть слишком высокой и привести к ошибкам. Попробуйте вместо этого использовать более распространенную скорость передачи данных 115200.

  • Если более низкая скорость передачи данных не помогла, вы можете попробовать более старую версию esptool.py. Который имел другой алгоритм программирования:

    pip install esptool==1.0.1 

    Эта версия не поддерживает --flash_size=detectэту опцию. Поэтому вам нужно будет явно указать размер FlashROM (в мегабитах).

    Он также требует Python 2.7, поэтому вам, возможно. Придется использовать pip2его вместо pipприведенной выше команды.

  • --flash_sizeОпция в приведенных выше командах является обязательной. Его отсутствие приведет к повреждению прошивки.

  • Чтобы поймать неправильное содержимое вспышки (например. Из дефектного сектора на чипе). Добавьте --verifyпереключатель к приведенным выше командам.

  • Кроме того, вы можете проверить целостность встроенного ПО из приглашения MicroPython REPL (при условии. Что вы смогли прошить его и --verifyопция не сообщает об ошибках):

    импорт esp esp.check_fw() 

    Если последнее выходное значение равно True. То прошивка в ПОРЯДКЕ.

    В противном случае он поврежден и должен быть правильно перепрошит.

  • Если у вас возникли какие-либо проблемы с другим мигающим приложением (не esptool.py), попробуйте esptool.py. Это общепринятое мигающее приложение в сообществе ESP8266.

  • Если у вас все еще возникают проблемы даже с перепрошивкой прошивки, пожалуйста. Обратитесь к esptool.py страница проекта, https://github.com/espressif/esptool для получения дополнительной документации и баг-трекера. Где вы можете сообщить о проблемах.

  • Если вы можете прошивать прошивку, но

    --verifyопция или esp.check_fw()возвращать ошибки даже после нескольких попыток. У вас может быть неисправный чип FlashROM. Как описано выше.