Как стать автором
Обновить

Подготовка к программированию ESP8266 на micropython

Разработка для интернета вещей
Из песочницы
Micropython — это реализация Python 3, написанная на C, которая оптимизирована для микроконтроллеров. Nodemcu v1.0 — самая удобная плата с микроконтроллером ESP8266 и поддержкой Wi-Fi. Комбинация её и micropython — это мощность, скорость и простота написания. Поскольку это мой первый опыт работы с micropython (и с МК в принципе), я столкнулся с рядом нюансов, способами решения которых я и хочу поделиться с читателем. Примеры будут для MacOS, однако они легко адаптируются под Linux и Windows.
image


Драйвер


Сначала необходимо установить драйвер. Это несложно, здесь не буду останавливаться. Для MacOS я использовал ch340g-ch34g-ch34x-mac-os-x-driver

Прошивка


Теперь необходимо залить micropython прошивку на ваш ESP8266. Процесс подробно и качественно описан в документации micropython для ESP8266, поэтому я только кратко освещу основные пункты.

Скачиваем прошивку здесь. Рекомендую последний stable билд.
Устанавливаем esptool:

pip install esptool

Pip — это система управления пакетами для python. Если у вас нет pip или python в целом — сначала необходимо установить их.

Далее очищаем флеш-память устройства:

esptool.py --port /dev/ttyUSB0 erase_flash

И прошиваем:

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

Порт /dev/ttyUSB0 нужно заменить на свой. Для MacOS можно просто подставить /dev/$(ls /dev | grep cu.wchusbserial) и нужный порт будет определён автоматически.
Например:

esptool.py --port /dev/$(ls /dev | grep cu.wchusbserial) erase_flash

Обратите внимание, я использую baud rate 115200 как стандартный для esp.

REPL


Отлично, теперь наш мк оснащен micropython’ом, а это означает, что к нему можно подключиться и выполнять команды в REPL (Read Evaluate Print Loop). По факту, это аналог командной строки интерпретатора классического Python. Подключиться можно через сериал порт или через WiFi. Подробная информация о использовании доступна здесь, я же снабжу её несколькими комментариями.

Для MacOS удобно использовать picocom:

picocom /dev/$(ls /dev | grep cu.wchusbserial) -b115200

После выполнения команды, консоль перейдет в интерактивный режим.
Для выхода используйте Control-A, затем Control-X (не отжимая Control).
Автор утилиты активно отвечает на issues на гитхабе, для кого-то это может отыграть важную роль. Также, начиная с версии 3, добавлен неинтерактивный режим, что позволяет использовать picocom в написании своих скриптов.

Также можно использовать screen:

screen /dev/$(ls /dev | grep cu.wchusbserial) 115200

Для выхода: Control-A, Control-\

Перед переходом к программированию, рекомендую полностью пройти туториал, на это уйдет всего несколько часов, а польза будет ощутимой.

IDE


С REPL поигрались, диодом помигали, TCP сокеты использовали. Что дальше? Необходим быстрый способ доставки нашего кода на esp. Не будем же мы всё писать через REPL. На ум сразу же приходит IDE. Так я скачал ESPlorer 0.2.0-rc6. Поддержка micropython находится в активной разработке и, как я понял, была добавлена совсем недавно, в rc3. После некоторого времени, проведённого в этой IDE, я столкнулся с целым рядом багов, которые не дают нормально записывать файлы в flash и выполнять код. Я написал issue на гитхаб и отложил ESPlorer до лучших времен. Для Windows есть несколько альтернатив: espcut, EsPy.

Код я решил писать в Sublime — тут всё просто и понятно. А как его доставлять на мк?
К счастью, существут замечастельная утилита ampy и она делает как раз то, что нам нужно — позволяет пересылать файлы через serial connection. Также она позволяет выполнять файлы и создавать/удалять папки.

Для удобства использования, я написал простой скрипт, который является оберткой для ampy.
Он умеет делать всего две вещи:

  1. Если вызван с параметром -f, то передает в МК все питоновские файлы, которые находятся в той же папке, в которой лежит скрипт.
  2. Если вызван без параметров, то все аргументы передаются непосредственно в ampy (избавляет от необходимости постоянно указывать порт в ampy).

Скрипт доступен на гитхабе. Поместите его в папку, где лежит ваш код.
Чтобы посмотреть хелп — просто вызовите скрипт без аргументов.

ESP8266 в основном используется для несложных задач, поэтому этих простых инструментов будет вполне достаточно.

Итоги


Итого, мы прошили нашу esp8266, настроили необходимое ПО для общения с МК и обеспечили себе быструю и удобную разработку с помощью ampy и ampyw, что даёт нам независимость от IDE. Теперь всё, что требуется от вас — писать код и создавать девайс своей мечты!
Теги:micropythonesp8266
Хабы: Разработка для интернета вещей
Всего голосов 23: ↑23 и ↓0 +23
Просмотры39.2K

Похожие публикации

Enterprise архитектор (разработка системы мониторинга)
от 270 000 до 300 000 ₽Ростелеком-ЦОДМоскваМожно удаленно
Solution архитектор (разработка системы мониторинга)
от 250 000 до 280 000 ₽Ростелеком-ЦОДМосква
Старший аналитик (разработка ПО)
от 170 000 ₽NedraСанкт-ПетербургМожно удаленно
Эксперт по безопасности инфраструктуры Big Data
до 290 000 ₽МТСМоскваМожно удаленно
Разработчик Python native (Junior+/Middle/Senior)
от 150 000 ₽МТСМоскваМожно удаленно

Лучшие публикации за сутки