Драйвер
Сначала необходимо установить драйвер. Это несложно, здесь не буду останавливаться. Для 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.
Он умеет делать всего две вещи:
- Если вызван с параметром -f, то передает в МК все питоновские файлы, которые находятся в той же папке, в которой лежит скрипт.
- Если вызван с параметром -p, то все последующие аргументы передаются непосредственно в ampy (избавляет от необходимости постоянно указывать порт в ampy).
Скрипт доступен на гитхабе. Поместите его в папку, где лежит ваш код.
Чтобы посмотреть хелп — просто вызовите скрипт без аргументов.
ESP8266 в основном используется для несложных задач, поэтому этих простых инструментов будет вполне достаточно.
Итоги
Итого, мы прошили нашу esp8266, настроили необходимое ПО для общения с МК и обеспечили себе быструю и удобную разработку с помощью ampy и ampyw, что даёт нам независимость от IDE. Теперь всё, что требуется от вас — писать код и создавать девайс своей мечты!
Комментарии (5)
poznawatel
31.12.2017 16:14Всем хорош Micropython вот только сенсорный эранчик, который предлагается к Pyboard больно мал для большинства применений, сейчас ищу простой вариант побольше, хотя бы от трёх дюймов.
snowSTAFF
03.01.2018 00:08+1Для загрузки файлов проекта я бы посоветовал web-repl, о нем написано на сайте разработчиков. Дело в том, что если вы не будете следить за памятью при использовании ESPlorer, то ваша esp уйдет в ребут. Будете потом по кускам код заливать, а это геморно.
Web-repl удобен: вы получаете доступ к esp по воздуху и таким же образом заливаете в него скрипты.
MicroPy — невероятно удобная вещь, когда необходимо сделать прототип. Очень гибко, элегантно и быстро. Но производительность удручает. Хотя, для многих приложений ее будет достаточно.rocknow Автор
03.01.2018 00:14Мне web repl не нравится только из-за того, что надо отключаться от своего wifi, который даёт выход в интернет, и подключаться к еспшке. При активной разработке это переходит в передёргивание вайфая.
Поясните, пожалуйста, за память. Вы имеете в виду кол-во свободной флеш-памяти? Так это через тот же ampy делаю — удалил файл локально, удалил и через ampy.
snowSTAFF
03.01.2018 08:08У меня для web-repl стоит отдельный ноутбук. Но это костыля.
Про память особо нечего добавить. Просто esplorer не позволяет допускать ошибки для новичков, как и в схеме подключения, так и в заливке (я про кнопку Send to ESP). Если файлы имеют большой размер и их попробовать залить все сразу, то велика вероятность ребута.
spiiin
Классно, не думал чего-то даже, что на модуле с 512 кб памяти можно python запустить.