Начало работы с MicroPython на ESP32 и ESP8266

Узнайте, как начать работу с прошивкой MicroPython на ESP32 и ESP8266. Мы познакомим вас с MicroPython, покажем различия между MicroPython и обычным Python, а также как программировать ваши платы на базе ESP с помощью MicroPython, используя uPyCraft IDE. После выполнения этого руководства у вас будет мигающий светодиод, управляемый через MicroPython.

Начало работы с MicroPython на ESP32 и ESP8266

Что такое MicroPython?

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

Логотип MicroPython

Python vs MicroPython

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

Python и 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 работает на многих различных устройствах и платах, таких как:

Платы, поддерживающие MicroPython
  • ESP32

  • ESP8266

  • 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 на вашу плату:

Сообщение о прошивке ESP8266

Начало работы с uPyCraft IDE

В этом разделе мы дадим вам обзор программы uPyCraft IDE, чтобы вы могли начать программировать ESP32/ESP8266 с MicroPython.

IDE — это программное обеспечение, содержащее инструменты, которые упрощают процесс разработки, отладки и загрузки кода. Существует множество способов программирования вашей платы ESP с помощью MicroPython. Мы выбрали uPyCraft IDE, потому что она проста и интуитивно понятна в использовании и отлично работает с платами ESP.

На этом этапе мы предполагаем, что у вас:

  • Установлена uPyCraft IDE на вашем компьютере

  • ESP32/ESP8266 прошит прошивкой MicroPython

Обзор uPyCraft IDE

Откройте uPyCraft IDE, появится новое окно следующего вида:

Окно uPyCraft IDE

Давайте подробнее рассмотрим каждый раздел uPyCraft IDE:

Разделы uPyCraft IDE
  1. Папки и файлы

  2. Редактор

  3. Оболочка/терминал MicroPython

  4. Инструменты

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 для обновления каталога.

Обновление каталога в uPyCraft IDE

Примечание

Чтобы изменить пользовательский каталог, просто перейдите в Tools > InitConfig и нажмите на папку workspace, чтобы выбрать другой путь.

Выбор другого каталога в uPyCraft IDE

2. Редактор

Раздел «Редактор» — это место, где вы пишете свой код и редактируете файлы .py. Вы можете открыть несколько файлов, и редактор откроет новую вкладку для каждого файла.

3. Оболочка/терминал MicroPython

В оболочке MicroPython вы можете вводить команды для немедленного выполнения на вашей плате ESP без необходимости загрузки новых файлов. Терминал также предоставляет информацию о состоянии выполняемой программы, показывает ошибки, связанные с загрузкой, синтаксические ошибки, выводит сообщения и т.д.

4. Инструменты

Иконки, расположенные в правой части, позволяют быстро выполнять задачи. Каждая кнопка подписана на рисунке ниже:

Панель инструментов uPyCraft IDE
  • 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 для установки последовательного соединения с вашей платой.

Кнопка подключения в uPyCraft IDE

4. После успешного подключения к плате в окне оболочки должен появиться символ >>>. Вы можете ввести команду print для проверки работоспособности:

>>> print('Hello')
Hello
>>>

Это должно вывести сообщение «Hello». Только если вы видите это сообщение, можете продолжать с этим руководством. В противном случае убедитесь, что вы установили последовательное соединение с платой или успешно прошили прошивку MicroPython на плату.

Вывод print Hello в uPyCraft IDE

Создание файла main.py на плате

  1. Нажмите кнопку New file (Новый файл) для создания нового файла.

Кнопка нового файла в uPyCraft IDE
  1. Нажмите кнопку Save file (Сохранить файл) для сохранения файла на вашем компьютере.

Кнопка сохранения файла в uPyCraft IDE
  1. Откроется новое окно, назовите файл main.py и сохраните его на компьютере:

Создание нового файла main.py
  1. После этого вы должны увидеть следующее в вашей uPyCraft IDE (файл boot.py на устройстве и новая вкладка с файлом main.py):

Файл main.py создан в uPyCraft IDE
  1. Нажмите кнопку Download and run (Загрузить и выполнить) для загрузки файла на вашу плату ESP:

Кнопка загрузки и выполнения в uPyCraft IDE
  1. В каталоге устройства теперь должен появиться файл main.py. На вашем ESP сохранён файл main.py.

Загрузка файла на ESP32

Загрузка скрипта мигания светодиодом

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 (Остановить), чтобы остановить выполнение любого скрипта на вашей плате:

Кнопка остановки в uPyCraft IDE

3. Нажмите кнопку Download and Run (Загрузить и выполнить) для загрузки скрипта на ESP32 или ESP8266:

Кнопка загрузки и выполнения в uPyCraft IDE
  1. В окне оболочки должно появиться сообщение «download ok».

Сообщение download ok в uPyCraft IDE

Тестирование скрипта

Чтобы запустить скрипт, который только что был загружен на вашу плату, выполните следующие шаги:

  1. Нажмите кнопку Stop (Остановить)

Кнопка остановки в uPyCraft IDE
  1. Нажмите встроенную кнопку EN (ENABLE) или RST (RESET) на ESP32/ESP8266, чтобы перезагрузить плату и запустить скрипт с начала:

Кнопка EN (Enable) на ESP32

Если вы используете ESP32, сообщения в терминале после нажатия кнопки EN/RST должны выглядеть примерно так, как показано на следующем рисунке:

Сообщения терминала после перезагрузки ESP32

Встроенный светодиод вашего ESP32 или ESP8266 должен мигать каждые 500 миллисекунд. Вот где расположен встроенный светодиод ESP32:

Встроенный светодиод ESP32

А вот встроенный светодиод ESP8266:

Встроенный светодиод 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.