Vývoj elektroniky | 2. 10. 2017

Úsvit nástupce Arduina? CircuitPython nabízí snazší start

Arduino si hlavně v komunitě DIY a Makerů získalo výhradní postavení. Zda za to může množství klonů Arduina, jejich příznivá cena, připravené knihovny, snad vývojové prostředí nebo cokoliv jiného můžeme spekulovat. Je ale skutečností, že pro amatérské uživatele je prvotní zprovoznění vývojového prostředí obvykle nezanedbatelnou překážkou, stejně jako je někdy komplikované ospravedlnit pořizovací náklady programovacích kabelů.

Obr. 1 Logo CircuitPythonu

V DIY komunitě velmi dobře známá OSHW společnost Adafruit (Adafruit Industries, www.adafruit.com) přišla s novým pokusem tento start projektů ještě více zjednodušit, a to kompletním odstraněním vývojového prostředí v podobě firmware CircuitPython, viz [1] a [2], stavějícím na MicroPythonu, který se používá pro vzdělávací desky micro:bit.

Mikrokontrolér (MCU) obsahující firmware CircuitPython se po připojení pomocí USB k počítači hlásí jako Mass Storage zařízení (obyčejný disk), na kterém se nachází soubor main.py s Python skriptem. Firmware tento skript v MCU zpracovává pomocí Python kompilátoru. Po editaci a uložení tohoto souboru MCU automaticky začne zpracovávat upravený skript. Libovolné zařízení schopné změnit soubor na USB Mass Storage zařízení je tak schopné sloužit pro vývoj vlastních projektů.

CircuitPython používá zredukovaný skriptovací jazyk Python 3 a především vlastní knihovny HW API (viz [3]) pro ovládání periferií. Cílem je sjednotit práci s HW tak, aby bylo možné používat jednotné softwarové funkce napříč různým MCU a jednoduše měnit HW podle potřeb aktuálního projektu.

Jak je zřejmé z použití USB Mass Storage, tak se již bavíme o výkonnějších MCU, než jsou ty 8bitové. Výchozím požadavkem je HW podpora USB připojení. Stoupají ale i nároky na paměť a výpočetní výkon, takže se pozornost přesouvá především k 32bitovým rodinám MCU s jádrem ARM. Tam ostatně směřuje již delší dobu i Arduino. Co se týká aktuální podpory (8/2017), tak CircuitPython firmware existuje pouze pro procesory Atmel SAM D21 a slavné ESP8266.

Vývoj HW API knihoven jde rychle kupředu, na dohled je CircuitPython 2.0 s podporou pro SD karty a obecná ukládací zařízení. Upgrade firmware CircuitPython je přitom řešen buď pomocí naprogramování skrze bootloader (terminál sériového portu) nebo vyhrazeného programovacího režimu, kdy se BIN soubor rovnou nakopíruje na Mass Storage disk a MCU se restartuje. Firmware může být navíc rozšířen o knihovny/balíčky pro konkrétní desku a přímo obsahovat konkrétní pojmenování vývodů a funkce pro dostupné periferie. Balíčky se do MCU nahrávají opět uložením na jeho disk.

Debugování zprostředkovává klasický terminál (také skrz USB), kde jsou k dispozici výstupy Python kompilátoru – chybová hlášení, debugovací zprávy ze skriptu apod. Časem se jistě objeví i pomocné vývojové prostředí, které usnadní zápis skriptu (automatické dokončování, kontrola syntaxe), ale z principu není potřebné.

Není to jistě první pokus podobného charakteru (skripty fungující v MCU), ale je to zajímavá kombinace prosazovaná vlivným hráčem, doprovázená dobrou dokumentací. Klíčová je dostupnost hardware s předprogramovaným CircuitPython firmwarem, aby jednoduchost vyvíjení skutečně nastala. Adafruit nabízí již jednotky typů svých desek upgradovaných na CircuitPython firmware.

Uvidíme, zda se CircuitPython více rozšíří. Ceny 32bitových ARM MCU jsou často i příznivější než pro 8bitové MCU, takže nezbývá než se těšit na jejich širší používání v DIY projektech.

Petr Tošovský

[1] http://makezine.com/2017/08/11/ circuitpython-snakes-way-adafruit-hardware/

[2] https://blog.adafruit.com/2017/01/09/ welcome-to-the-adafruit-circuitpython-beta/

[3] https://circuitpython.readthedocs.io/en/latest/ index.html