Я неоднократно разрабатывал проекты на MicroPython для различных embedded-решений, включая парочку ESP32 WiFi модулей. Для таких проектов есть несколько инструментов:

  • Использование последовательного терминала и ampy, который не поддерживается Adafruit с 2018 года.
  • Для плат Pycom или прошивки WiFy есть плагины pymakr под Atom и Visual Studio.
  • Если же вы предпочитаете командную строку, как и я, то стоит использовать rshell от одного из самых активных представителей команды MicroPython.

Больше года rshell меня полностью устраивал, до тех пор, пока я не начал работать с беспроводными нодами. Будучи ленивым, я хотел возиться с моими модулями ESP32, не вставая с дивана, а не тащить свой ноутбук на кухню или балкон, чтобы подключить USB-кабель. Могу ли я работать с ними по беспроводной сети?

Да, без проблем, для этого можно использовать WebREPL. Работает неплохо, но мне почему-то не понравилось.

Thonny IDE


Я уже был готов сдаться, но случайно наткнулся на вот это видео, где показано, как запускать MicroPython на новых платах Raspberry Pi Pico.


Здесь использовался Thonny, Python IDE, интегрированная среда разработки для Python, популярная в коммьюнити образовательных проектов. Thonny впервые была представлена в 2015 году Айваром Аннамаа из Тартуского университета (Эстония). Среда разработки Thonny создана для решения наиболее распространенных проблем, наблюдаемых автором в течение шести лет преподавания классов программирования Python для начинающих. Если вы почитаете немного о проекте и его развитии, то увидите, что Айвар приложил много усилий для создания Тонни, и это очень хорошо заметно.

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

Установка и подключение


Подробная инструкция есть на сайте самого проекта. Вот ссылка для Windows. Для Linux и Mac нужно просто выполнить:

sudo apt install thonny

или

brew install thonny

Более того, если у вас уже есть Raspberry Pi, Thonny предустановлен — версия для Pi 4 — 3.3.3. Pi 3 тоже поставляется с Thonny, но в этом случае версия инструмента уж слишком старая. Переустановка при этом нормально не работает. Лучше всего в этом случае выполнить:

sudo apt update && sudo apt upgrade

и переустановить Thonny.


По какой-то причине Thonny, найденный в репозиториях пакетов Ubuntu 20.04 и Debian Buster, тоже устарел. Для обновления стоит использовать сценарий установки Linux, который загружает и устанавливает последнюю версию.

Для подключения к модулю нужно зайти в меню и найти пункт Run -> Select interpreter… Здесь мы выбираем не только модуль, но и тип интерфейса — USB или WebREPL. Важный момент — сначала нужно подключиться к модулю по USB и убедиться, что WebREPL активен в boot.py. В целом, именно так и выполняется активация WebREPL — если в модуле уже все активно, менять ничего не нужно. Заполняем WebREPL URL, пароль — и подключение должно работать.


Дополнительные настройки


По умолчанию окна Thonny расположены вертикально. Если у вас современный монитор, вероятно, вам захочется переставить окна таким образом, чтобы редактор и оболочка располагались рядом. Это делается путем добавления ShellView.location = e в разделе [view] файла configuration.ini. Буква «e» означает восток, также можно указать другие точки, такие как «se». Для тестируемых мной систем файл конфигурации можно найти в следующих местах:

Raspi, Ubuntu, Debian
~/.config/Thonny/configuration.ini
Mac
~/Library/Thonny/configuration.ini
Windows
C:\Users\AppData\Roaming\Thonny\configuration.ini


Несколько модулей и инстансов



Thonny поддерживает широкий спектр модулей. Если есть необходимость подключить несколько модулей одновременно, потребуется запустить несколько инстансов Thonny — тоже одновременно. По умолчанию разрешается запуск лишь одного инстанса, но это можно изменить в меню "Tools -> Options -> General", а затем убрать пункт "Allow only single Thonny instance".

В MacOs это работает не всегда, если использовать GUI. Так что придется запускать инстансы из командной строки.

И еще одно — Thonny по умолчанию использует интерпретатор/соединение, которые были активны в ходе прошлой сессии. Это разумно, но если есть несколько инстансов, то появятся сообщения об ошибках — просто потому, что прочие инстансы пытаются использовать уже задействованный модуль. Так что нужно настраивать каждый Thonny по отдельности. Пример того, как это можно сделать — здесь.

Вершина айсберга


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

Thonny был разработан, чтобы помочь новичкам, которые учатся писать и отлаживать «обычные» программы Python, работающие на десктопах. Если вы часто работаете с Python, я бы посоветовал вам взглянуть на такие аспекты программы, как инспектор объектов, отладчик, пошаговое выполнение и множество других полезных инструментов.

Thonny также является многоплатформенным инструментом. Готовя эту статью, я без проблем протестировал ее на компьютерах MacOS, Windows 10, Debian, Ubuntu и Raspberry Pi. Проект находится в открытом доступе по лицензии MIT.

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