CircuitPython

Python — один из самых популярных языков в мире, и если вы его ещё не знаете, обязательно следует с ним познакомиться. А уж если вы заглянули на RobotClass, то изучение python правильно будет совместить с изучением электроники.

Сам по себе язык Python невозможно заставить работать на таком слабом вычислительном устройстве, как микроконтроллер. Одна из причин — мало памяти для хранения инфраструктуры языка. Чтобы решить эту задачу была разработана специальная версия языка — MicroPython.

MicroPython позволяет запускать Python-скрипты на микроконтроллерах esp8266, esp32, stm32, nRF и пр. А вот на Arduino с микроконтроллером atmega328 этот язык уже не заработает.

CircuitPython

Специально для образовательных целей компания Adafruit доработала язык MicroPython и выпустила свою версию его под названием CircuitPython. Главной ценностью этой версии является наличие огромного количества совместимых библиотек, которые позволяют работать с привычными нам датчиками, дисплеями, драйверами и прочими радостями.

Так же как и свой прародитель CircuitPython может работать на множестве разных микроконтроллеров. Далее мы будем ориентироваться именно на язык CircuitPython.

Для экспериментов на этом уроке мы будем использовать отладочную плату Графит-S2, разработанную в RobotClass. Эту плату или её аналоги можно купить у нас в интернет-магазине.

Код: 2924

Микроконтроллер с CircuitPython

Чтобы микроконтроллер умел работать с CircuitPython на нём уже должна быть установлена специальная инфраструктура (прошивка). Для примера, подключим отладочную плату Графит-S2 к компьютеру через USB кабель и посмотрим на реакцию. Работать будем в ОС Windows.

После подключения в списке доступных дисков появится новый накопитель с именем CIRCUITPY.

Зайдём в этот накопитель и увидим такую структуру папок.

Структура папок CIRCUITPYTHON

Самое важно здесь — это папка lib и файл скрипта code.py (в Python программы часто называют скриптами). В папке хранятся дополнительные библиотеки, которые необходимы для работы программы. Файл code.py хранит скрипт на языке Python, который запускается каждый раз когда мы его сохраняем на накопитель, или когда подаём питание на отладочную плату, или нажимаем кнопку сброса.

Кроме того, в списке устройств появится новый COM порт. С помощью этого виртуального порта можно будет работать с интерпретатором языка Python. Об этом чуть позже.

COM порт для работы с CIRCUITPYTHON REPL

Среда разработки

Итак у нас есть доступ к программе на Python, скорее бы уже что-нибудь написать. Но пока — ещё одна остановка: в чем писать код?

Писать программу можно и в обычном текстовом редакторе, однако, удобнее для этого использовать специальные среды разработки, которые ещё называют IDE (это как Arduino IDE для Arduino). Помимо текстового редактора, IDE имеют набор дополнительных полезных функций: систему проверки кода, функцию загрузки на контроллер, терминал для связи с контроллером, отладчик. А для Python будет ещё важным иметь возможность работать с интерпретатором языка (REPL).

Для первых занятий на circuitpython идеально подойдёт среда Mu. У неё очень простой интерфейс, и есть всё самое необходимое: система автоматического подключения к микроконтроллеру, система сохранения программы сразу на устройство и REPL. Но есть один большой минус — в 2026 году проект является официально закрытым. Но Mu все ещё можно скачать и использовать.

Современной заменой Mu является среда RV Circuit Studio. Версия 1.0 вышла в 2026 году. Студия умеет работать с графиками и видеопотоком. Есть встроенный отладчик. А ещё есть набор простых примеров, доступ к которым можно получить прямо из специальной панели в главном окне.

Наконец, сами разработчики CircuitPython предлагают писать программы в онлайн редакторе code.circuitpython.org. Это тоже достойный инструмент. Из особенностей: его не нужно устанавливать, он браузерный, есть автодополнение кода с учётом функций CircuitPython, есть встроенный последовательный терминал, загрузка изображений и звуков.

В уроках на RobotClass можно встретить как примеры со средой Mu, так и с RV Circuit Studio.


Изменено: