Начало работы с MicroPython на ESP32 и ESP8266
Узнайте, как начать работу с прошивкой MicroPython на ESP32 и ESP8266. Мы познакомим вас с MicroPython, покажем различия между MicroPython и обычным Python, а также как программировать ваши платы на базе ESP с помощью MicroPython, используя uPyCraft IDE. После выполнения этого руководства у вас будет мигающий светодиод, управляемый через MicroPython.
Что такое MicroPython?
MicroPython — это повторная реализация Python 3, предназначенная для микроконтроллеров и встраиваемых систем. MicroPython очень похож на обычный Python. Поэтому, если вы уже умеете программировать на Python, вы также знаете, как программировать на MicroPython.
Python vs MicroPython
За исключением нескольких отличий, языковые возможности Python также доступны в MicroPython. Самое большое различие между Python и MicroPython заключается в том, что MicroPython был разработан для работы в условиях ограниченных ресурсов.
Из-за этого MicroPython не поставляется с полной стандартной библиотекой. Он включает только небольшое подмножество стандартной библиотеки Python. Однако он содержит модули для доступа к аппаратному обеспечению на низком уровне — это означает, что существуют библиотеки для лёгкого доступа и взаимодействия с GPIO.
Кроме того, устройства с возможностями Wi-Fi, такие как ESP8266 и ESP32, включают модули для поддержки сетевых подключений.
Почему MicroPython?
Python — один из самых распространённых, простых и лёгких в изучении языков программирования. Поэтому появление MicroPython делает программирование цифровой электроники чрезвычайно простым. Если вы раньше никогда не программировали цифровую электронику, MicroPython — отличная отправная точка.
Цель MicroPython — сделать программирование цифровой электроники максимально простым, чтобы им мог пользоваться каждый. В настоящее время MicroPython используется любителями, исследователями, преподавателями, педагогами и даже в коммерческих продуктах. Код для мигания светодиодом на ESP32 или ESP8266 так же прост, как:
from machine import Pin
from time import sleep
led = Pin(2, Pin.OUT)
while True:
led.value(not led.value())
sleep(0.5)
Одной из замечательных особенностей MicroPython является то, что он поставляется с интерактивным REPL (Read-Evaluate-Print Loop — цикл чтения-вычисления-вывода). REPL позволяет подключиться к плате и быстро выполнять код без необходимости компиляции или загрузки кода.
MicroPython — поддерживаемые платы
MicroPython работает на многих различных устройствах и платах, таких как:
PyBoard
Micro:Bit
Teensy 3.X
WiPy — Pycom
Adafruit Circuit Playground Express
Другие платы на базе ESP32/ESP8266
Для получения дополнительной информации о других платах, поддерживающих MicroPython, перейдите по следующим ссылкам:
В наших проектах мы будем использовать MicroPython с платами ESP32 и ESP8266.
ESP32 — преемник ESP8266. На данный момент не все функции доступны в MicroPython для полного раскрытия возможностей ESP32 — это всё ещё развивающийся проект. Однако он вполне работоспособен, и с ним можно реализовать множество проектов.
Платы ESP32 и ESP8266 похожи, и вы почти не почувствуете разницы при их программировании с помощью MicroPython. Это означает, что всё, что вы напишете для ESP8266, должно также работать без изменений или с минимальными изменениями на ESP32 (в основном смена назначения пинов).
Установка uPyCraft IDE
Перед продолжением этого руководства вам необходимо установить uPyCraft IDE на ваш компьютер. Следуйте одному из следующих руководств для установки uPyCraft IDE:
Примечание
Если у вас возникли проблемы с установкой или использованием uPyCraft IDE, мы также подготовили альтернативное руководство о том, как программировать ESP32/ESP8266 с помощью Thonny IDE.
Прошивка MicroPython на ESP32/ESP8266
В отличие от других плат, MicroPython не прошит на ESP32 или ESP8266 по умолчанию. Это первое, что вам нужно сделать, чтобы начать программировать свои платы с MicroPython: прошить/загрузить прошивку. Следуйте следующему руководству для прошивки MicroPython на вашу плату:
Начало работы с uPyCraft IDE
В этом разделе мы дадим вам обзор программы uPyCraft IDE, чтобы вы могли начать программировать ESP32/ESP8266 с MicroPython.
IDE — это программное обеспечение, содержащее инструменты, которые упрощают процесс разработки, отладки и загрузки кода. Существует множество способов программирования вашей платы ESP с помощью MicroPython. Мы выбрали uPyCraft IDE, потому что она проста и интуитивно понятна в использовании и отлично работает с платами ESP.
На этом этапе мы предполагаем, что у вас:
Установлена uPyCraft IDE на вашем компьютере
ESP32/ESP8266 прошит прошивкой MicroPython
Обзор uPyCraft IDE
Откройте uPyCraft IDE, появится новое окно следующего вида:
Давайте подробнее рассмотрим каждый раздел uPyCraft IDE:
Папки и файлы
Редактор
Оболочка/терминал MicroPython
Инструменты
1. Папки и файлы
В этом разделе отображаются несколько папок и файлов. Папка device показывает файлы, которые в настоящее время хранятся на вашей плате ESP. Если ваш ESP32 или ESP8266 подключён через последовательный порт к uPyCraft IDE, при раскрытии папки device все сохранённые файлы должны загрузиться. По умолчанию у вас должен быть только файл boot.py. Для запуска вашего основного кода рекомендуется создать файл main.py.
boot.py: запускается при старте устройства и устанавливает несколько параметров конфигурации;
main.py: это основной скрипт, содержащий ваш код. Он выполняется сразу после boot.py.
Папка sd предназначена для доступа к файлам, хранящимся на SD-картах — это работает только с платами, такими как PyBoard, которые имеют слот для SD-карты.
Папка uPy_lib показывает встроенные файлы библиотек IDE.
Наконец, workspace — это каталог для сохранения ваших файлов. Эти файлы сохраняются на вашем компьютере в каталоге, определённом вами. Это особенно полезно для хранения всех ваших файлов в организованном виде под рукой.
При первом использовании uPyCraft для выбора рабочего каталога нажмите на папку workspace. Появится новое окно для выбора пути к вашему рабочему пространству. Создайте новую папку или выберите существующую, чтобы она стала вашим рабочим каталогом.
Затем перейдите в File > Reflush Directory для обновления каталога.
Примечание
Чтобы изменить пользовательский каталог, просто перейдите в Tools > InitConfig и нажмите на папку workspace, чтобы выбрать другой путь.
2. Редактор
Раздел «Редактор» — это место, где вы пишете свой код и редактируете файлы .py. Вы можете открыть несколько файлов, и редактор откроет новую вкладку для каждого файла.
3. Оболочка/терминал MicroPython
В оболочке MicroPython вы можете вводить команды для немедленного выполнения на вашей плате ESP без необходимости загрузки новых файлов. Терминал также предоставляет информацию о состоянии выполняемой программы, показывает ошибки, связанные с загрузкой, синтаксические ошибки, выводит сообщения и т.д.
4. Инструменты
Иконки, расположенные в правой части, позволяют быстро выполнять задачи. Каждая кнопка подписана на рисунке ниже:
New file (Новый файл): создаёт новый файл в редакторе;
Open file (Открыть файл): открывает файл с вашего компьютера;
Save file (Сохранить файл): сохраняет файл;
Download and run (Загрузить и выполнить): загружает код на вашу плату и выполняет его;
Stop (Остановить): останавливает выполнение кода — это аналогично нажатию CTRL+C в оболочке для остановки всех скриптов;
Connect/Disconnect (Подключиться/Отключиться): подключение или отключение от вашей платы через Serial. Сначала необходимо выбрать последовательный порт в Tools > Serial;
Undo (Отменить): отмена последнего изменения в редакторе кода;
Redo (Повторить): повтор последнего изменения в редакторе кода;
Syntax check (Проверка синтаксиса): проверяет синтаксис вашего кода;
Clear (Очистить): очищает сообщения окна оболочки/терминала.
Запуск вашего первого скрипта
Чтобы познакомить вас с процессом написания файла и выполнения кода на ваших платах ESP32/ESP8266, мы загрузим новый скрипт, который просто мигает встроенным светодиодом вашего ESP32 или ESP8266.
Установка связи с платой
После установки прошивки MicroPython на вашу плату и подключения её к компьютеру через USB-кабель выполните следующие шаги:
1. Перейдите в Tools > Board и выберите используемую плату.
2. Перейдите в Tools > Port и выберите COM-порт, к которому подключён ваш ESP.
3. Нажмите кнопку Connect для установки последовательного соединения с вашей платой.
4. После успешного подключения к плате в окне оболочки должен появиться символ >>>. Вы можете ввести команду print для проверки работоспособности:
>>> print('Hello')
Hello
>>>
Это должно вывести сообщение «Hello». Только если вы видите это сообщение, можете продолжать с этим руководством. В противном случае убедитесь, что вы установили последовательное соединение с платой или успешно прошили прошивку MicroPython на плату.
Создание файла main.py на плате
Нажмите кнопку New file (Новый файл) для создания нового файла.
Нажмите кнопку Save file (Сохранить файл) для сохранения файла на вашем компьютере.
Откроется новое окно, назовите файл main.py и сохраните его на компьютере:
После этого вы должны увидеть следующее в вашей uPyCraft IDE (файл boot.py на устройстве и новая вкладка с файлом main.py):
Нажмите кнопку Download and run (Загрузить и выполнить) для загрузки файла на вашу плату ESP:
В каталоге устройства теперь должен появиться файл main.py. На вашем ESP сохранён файл main.py.
Загрузка скрипта мигания светодиодом
1. Скопируйте следующий код в редактор в файл main.py:
from machine import Pin
from time import sleep
led = Pin(2, Pin.OUT)
while True:
led.value(not led.value())
sleep(0.5)
2. Нажмите кнопку Stop (Остановить), чтобы остановить выполнение любого скрипта на вашей плате:
3. Нажмите кнопку Download and Run (Загрузить и выполнить) для загрузки скрипта на ESP32 или ESP8266:
В окне оболочки должно появиться сообщение «download ok».
Тестирование скрипта
Чтобы запустить скрипт, который только что был загружен на вашу плату, выполните следующие шаги:
Нажмите кнопку Stop (Остановить)
Нажмите встроенную кнопку EN (ENABLE) или RST (RESET) на ESP32/ESP8266, чтобы перезагрузить плату и запустить скрипт с начала:
Если вы используете ESP32, сообщения в терминале после нажатия кнопки EN/RST должны выглядеть примерно так, как показано на следующем рисунке:
Встроенный светодиод вашего ESP32 или ESP8266 должен мигать каждые 500 миллисекунд. Вот где расположен встроенный светодиод ESP32:
А вот встроенный светодиод ESP8266:
Советы по устранению неполадок
Мы обнаружили некоторые распространённые проблемы и сообщения об ошибках, которые возникают при работе с uPyCraft IDE. Обычно перезагрузка ESP с помощью встроенной кнопки EN/RST решает проблему. Или нажмите кнопку Stop (Остановить) в uPyCraft IDE и повторите желаемое действие. Если это не помогает, прочитайте следующие распространённые ошибки и узнайте, как их устранить.
Ошибка #1
Вы получаете следующее сообщение:
>>>
Select Serial Port could not open port 'COM4': FileNotFoundError(2, 'The system cannot find the file specified.', None, 2)
Или аналогичное сообщение:
>>>
could not open port 'COM4': PermissionError(13, 'A device attached to the system is not functioning.', None, 31)
Отключите и снова подключите вашу плату ESP. Затем дважды проверьте, что вы выбрали правильный последовательный порт в меню Tools > Serial. После этого нажмите кнопку Connect/disconnect (Подключиться/Отключиться) для установки последовательного соединения. Теперь вы должны иметь возможность загрузить новый скрипт или выполнить новый код.
Эта ошибка также может означать, что ваш последовательный порт используется другой программой (например, последовательный терминал или Arduino IDE). Дважды проверьте, что вы закрыли все программы, которые могут устанавливать последовательное соединение с вашей платой ESP. Затем отключите и снова подключите плату ESP. Наконец, перезапустите uPyCraft IDE — попробуйте выбрать последовательный порт в меню Tools > Serial.
Ошибка #2
Проблема с загрузкой нового скрипта.
>>>
already in download model,please wait.
Нажмите кнопку Stop (Остановить) в uPyCraft IDE (1 или 2 раза), чтобы убедиться, что любой выполняемый код остановлен. После этого нажмите кнопку Download and run (Загрузить и выполнить) для загрузки нового скрипта на вашу плату ESP.
Ошибка #3
После загрузки нового скрипта, если вы видите следующее сообщение:
>>>
Ready to download this file,please wait!
...
download ok
os.listdir('.')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'os' isn't defined
Или это сообщение:
>>>
Ready to download this file,please wait!
...
download ok
os.listdir('.')
OSError: [Errno 98]
Это означает, что новый файл был успешно загружен на вашу плату. Вы можете заметить, что было выведено сообщение «download ok». Нажмите встроенную кнопку EN/RST на ESP, чтобы перезагрузить плату и выполнить новый загруженный скрипт с начала.
Ошибка #4
Проблема с перезагрузкой ESP, запуском нового скрипта или открытием последовательного порта:
>>>
Brownout detector was triggered
Сообщение об ошибке «Brownout detector was triggered» означает, что существует аппаратная проблема. Обычно она связана с одной из следующих причин:
Некачественный USB-кабель;
USB-кабель слишком длинный;
Плата с дефектом (плохая пайка);
Неисправный USB-порт компьютера;
Или недостаточное питание от USB-порта компьютера.
Решение: попробуйте другой, более короткий USB-кабель (с проводами данных), попробуйте другой USB-порт компьютера или используйте USB-хаб с внешним источником питания.
Важно
Если у вас постоянно возникают проблемы или странные сообщения об ошибках, рекомендуем перепрошить вашу плату ESP последней версией прошивки MicroPython: Прошивка/загрузка прошивки MicroPython на ESP32 и ESP8266.
Ошибка #5
Когда я пытаюсь открыть последовательное соединение с ESP32/ESP8266 в uPyCraft IDE, иногда появляется окно «Burn Firmware» с предложением перепрошить прошивку MicroPython.
По сути, мы считаем, что происходит следующее: когда на вашей плате выполняется скрипт, иногда она занята выполнением этого скрипта и задач. Поэтому вам нужно попробовать открыть COM-порт несколько раз или перезагрузить ESP, чтобы поймать момент, когда плата доступна для установки последовательного соединения с uPyCraft IDE.
Если вы выполняете скрипт, который использует Wi-Fi, глубокий сон или выполняет несколько задач, рекомендуем попробовать 3 или 4 раза установить соединение. Если не получается, рекомендуем перепрошить ESP прошивкой MicroPython.
Заключение
Надеемся, вам понравилось учиться программировать платы ESP32 и ESP8266 с использованием прошивки MicroPython. Если вы хотите узнать больше о MicroPython, ознакомьтесь с нашей электронной книгой: MicroPython Programming with ESP32 and ESP8266.