Найти тему
Smart home Russia

Обучаемся MicroPython на ESP32/ESP8266

Сегодня мы затронем тему языка MicroPython. Подобно Arduino, это среда и язык, которые создавались в первую очередь для обучения, однако это совсем не означает, что ее нельзя использовать в своих проектах. В статье я опишу как можно обучаться программированию на плате ESP8266 и esp32.

Translation to English is here. Также канал в telegram и YouTube.

Цитирую описание с сайта:

MicroPython - это компактная и эффективная реализация языка программирования Python 3, которая включает небольшое подмножество стандартной библиотеки Python и оптимизирована для работы на микроконтроллерах и в ограниченных средах.

Более подробно вы сможете почитать на сайте проекта, теперь перейдем к вопросам поважнее: "зачем оно нам?" и "какое отношение к умному дому это имеет?" Ответим на них по порядку...

В развитии умного дома произошел переломный момент, это когда готовые устройства нас больше не радуют, их функционалом мы больше недовольны, а тут еще и стоимость готовых устройств улетела в космос. Уже готов аннулировать выводы своей статьи "Покупать или делать самому? Устройства в умном доме.". Стало очевидно, что железа дома хватает, либо его даже больше, чем нужно, но проблемы и хотелки полностью не закрываются и пора начинать не покупать, а создавать устройства.

Второй вопрос был про отношение к умному дому. Тут все просто, вся логика, если она не релейная конечно, пишется на каком-то языке. Вот Home Assistant на Python вроде как написан и все модули расширения и интеграции написаны на нем же. Поэтому если вы хотим изменить что-то в текущей ситуации, а не тупо-следовать, то Python освоить придется.

Третий вопрос я не задавал, но он есть. А почему именно MicroPython на ESP32/ESP8266? И тут я дам комментарий, что люблю контроллеры, а на них только, MicroPython (т.к. для полноценного Python нужно уже железо помощнее), а ESP32/ESP8266 - потому что они: а) уже были б) под них есть MicroPython. Надеюсь ответил на все вопросы, поэтому продолжим.

Для подготовки к написанию статьи я использовал сайт randomnerdtutorials.com. В качестве среды использовал Mu Editor. Однако, это далеко не единственные источники знаний и возможно даже есть лучше, но я не проверял. Цитаты с сайта:

Mu Editor - это простой редактор Python для начинающих программистов, который поддерживает MicroPython с платами ESP32 и ESP8266. Он работает довольно хорошо, поставляется с простым и интуитивно понятным интерфейсом и предоставляет меню для быстрой записи прошивки на ваши платы.
MicroPython - это повторная реализация языка программирования Python 3, предназначенная для микроконтроллеров и встраиваемых систем. MicroPython очень похож на обычный Python. За некоторыми исключениями, языковые возможности Python также доступны в MicroPython. Наиболее существенное различие между Python и MicroPython заключается в том, что MicroPython был разработан для работы в ограниченных условиях.
Из-за этого MicroPython не поставляется со всем набором стандартных библиотек. Он включает в себя лишь небольшое подмножество стандартных библиотек Python, но включает модули для легкого управления и взаимодействия с GPIO, использования Wi-Fi и других протоколов связи.

1. Переходим на сайт и скачиваем версию под нашу операционную систему. Зеркало на моем диске. Далее, далее и ок. Надеюсь, устанавливать программы вы умеете ☺. Далее запускаем программу и ждем.

2. Платы. В моем распоряжении были как esp8266, так и esp32, но полноценная работу у меня только на 8266. Давайте взглянем на платы. ESP8266 у меня на плате D1mini v3.0.0. А плата esp32 у меня на плате WEMOS LOLIN32 V1.0.0. К слову сказать, последним более 6 лет и возможно именно это и является проблемой неполноценной работы.

Фото моей платы ESP32 ниже:

И ниже фото esp8266, но они и так регулярно всплывают в моих статьях

Далее нам нужно прошить в платы ПО. Выбираем последнюю версию прошивки для своей платы:
ESP32 MicroPython firmware
ESP8266 MicroPython firmware (тут нужно быть аккуратным, я привожу ссылку для платы с 2+Мб памяти, т.к. именно такой платой и обладаю, для esp-01 платы прошивка потребуется другая. Имейте это в виду).
Зеркало на моем
диске.

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

-3

Ну а далее по порядку, как на скрине:

-4

1. Ткнем на шестеренку в правом нижнем углу
2. Ткнем на "загрузчик прошивок..."
3. Выберем плату, которую требуется прошить
4. Выберем скаченную прошивку
5. Нажмем стереть и записать.
6. Ждем завершения, закрываем окно.

Теперь все готово к нашей первой программе. Вводим в окно код:

from machine import Pin
from time import sleep
led = Pin(2, Pin.OUT)
while True:
led.value(not led.value())
sleep(0.5)

Тут следует оставить комментарий, на моей esp32 плате светодиод на 5 пине. Поэтому, в программе выше цифру 2 необходимо заменить на 5 соответственно.

Теперь нажимаем сохранить и обзываем его main.py и нажимаем ОК. Переходим в раздел файлы. Если появляется ошибка, то ниже я расскажу, что рекомендуется.

-5

1. Нажимаем сохранить.
2. Переходим в файлы
3. Тут файлы на esp
4. Тут файлы на компьютере.
5. Для запуска программы на esp нужно просто перетянуть нашу программу из окошка справа (4) в окошко влево (3).

Теперь про ошибку, инструкция ниже просто с сайта. Мне она так и не помогла.

Пока не появится следующее окно ↓, попробуйте следующее

-6

1) отключить/включить плату или нажать reset
2) перезапустить Mu Editor;
3) Нажмите
Files(файлы) кнопку, следом на REPL кнопку, нажмите CTRL-C для остановки любых возможных программ на плате, затем нажмите Files(файлы) кнопку опять. Пробуйте это несколько раз, пока не получите ответ.

Мой комментарий следующей: для ESP8266 все вышеуказанное сработало, а для esp32 - нет.

После успешного копирования нашего main.py в плату, нажмем reset на плате или передернем ее по питанию. Светодиод должен начать моргать. Поздравляю, ваша первая программа работает!

Теперь по поводу ESP32, тот факт, что я не смог копировать на нее нашу программу совсем не означает, что я ее не запустил. Я сделал 2 действия:
1.Заменил в коде пин 2 на пин 5. Смотрите описание к своей плате для того, чтобы понять на каком пине светодиод расположен у вас.
2. Нажал кнопку
PLAY(запустить). Это не запишет программу в плату, но выполнит ее на ней. Для обучения этого достаточно с головой, а для автономных проектов - нужно будет что-то делать.

А на этом все, делайте ваш умный дом умнее, ярче, красочнее, информативнее, настраивайте автоматизации правильно, чтобы получать максимальное удовольствие. Вы можете всегда поддержать меня лайком, репостом, комментарием или просто подписаться, чтобы не пропускать свежие выпуски. Также можно следить за мной на других площадках: Instagram и telegram (RU, EN, DE), Medium, LiveJournal, YouTube (старый канал), YouTube (новый канал).