Jeffrey Cross
Jeffrey Cross

CircuitPython Snakes svou cestu na Adafruit Hardware

V nedávné diskusi se Scottem Shawcroftem, inženýrem z Adafruitu, jsem byl opravdu nadšený. Vysvětlil jim jejich přechod k používání CircuitPython na jejich produktech, stejně jako výhody, které by takový přechod poskytoval. Jedním z hlavních přínosů je, že zařízení jednoduše připojíte a zobrazí se jako úložiště USB, poté na něj vložíte kód. IDE není potřeba. Není to poprvé, co jsem viděl tuto funkci, ale skutečnost, že výběr nástrojů pro řezání špičkových prototypů Adafruitu to bude mít, mě to velmi vzrušilo.

Co je CircuitPython?

CircuitPython je mikroprocesorový firmware založený na MicroPython, který usnadňuje programování hardwaru. Na rozdíl od Arduina není uživatelský kód uložen v samotném firmwaru, ale spíše na malém souborovém systému na čipu nebo na desce. Výsledkem je, že programování s CircuitPython je stejně jednoduché jako zapojení desky do počítače a úpravy souboru na zobrazované jednotce. Není třeba žádný další software, abyste mohli začít.

Arduino revolucionizovalo, protože odstranilo potřebu drahých blikajících nástrojů při změně kódu. CircuitPython jde o krok dále tím, že odstraňuje potřebu specifických ovladačů a softwaru.

Pokud byste to museli shrnout co nejjednodušším způsobem, jak byste popsali CircuitPython?

Myslím si, že nejjednodušší verze nezahrnuje rozpoznání CircuitPython nebo Pythonu jako samostatného. Jednoduše sjednocuje software a hardware. Zapojte zařízení, otevřete jednotku a upravte kód na něm, aby se hack. Uložení souboru automaticky způsobí jeho opětovné načtení. Vyjměte ji jako palec a vezměte si ji s sebou. Kód je součástí zařízení.

Proč jste se rozhodli implementovat CircuitPython v produktech Adafruit?

Pro mě je to prostě to, že je to jednodušší než cokoli jiného, ​​co tam použít. CircuitPython má velmi nízkou bariéru pro vstup, protože pracuje bez speciálních ovladačů (kromě sériového na starších Windows). Nevyžaduje žádný program, který by program naprogramoval, protože bude fungovat libovolný textový editor. K němu se může připojit jakýkoliv sériový program. Pro programování není nutné připojení k internetu.

Tato nízká překážka vstupu je ideální pro Adafruit, protože se nám daří učit se začátečníky vytvářet a experimentovat s hardwarem. Schopnost CircuitPython sjednotit kód s hardwarem ho činí hackovatelnějším než kdy jindy. Už to není problém e-mailu někdo kód odděleně a pak se jim nastavit s konkrétní kus softwaru. Jenom to funguje.

Budou produkty stále pracovat s IDE Arduino?

Ano! Nové produkty založené na SAMD21 Cortex-M0 + mcu, které podporují CircuitPython, jsou také podporovány Arduino IDE a Microsoft MakeCode. Myslíme si, že výuka začátečníků zpočátku s MakeCode a pak postup do CircuitPython a Arduino IDE je skvělý způsob, jak pomoci mladým kodérům růst s jejich složitostí projektu.

Proč nebyla tato metoda provedena dříve? Nebo kdyby to bylo, kdo bychom měli poděkovat za položení základů?

Spouštění Pythonu na embedded bylo vyzkoušeno již dříve s projekty jako Python-on-a-Chip a Owl. Tyto projekty však nenalezly široké publikum. MicroPython konečně udělal, když vypustili Kickstarter. Vývojáři MicroPython, včetně Damien George a Paul Sokolovsky, si zaslouží uznání za to, že položili základy pro CircuitPython. Oni dělali tvrdou práci reimplementing Python 3.4 na mikrokontroléru a editaci kódu přes USB hromadné ukládání. Prostě jsme stavěli na jejich práci, abychom mohli pracovat na našem hardwaru a vyleštit si zkušenosti.

Jaké problémy se v první řadě týkají přenosu vašich produktů do CircuitPython? Je to složité? Snadný? Žádný velký problém?

Porting produkty do CircuitPython do značné míry znamená jejich přesun na 32 bitové mikrokontroléry. CircuitPython nepodporuje osmibitové mikrokontroléry, takže to umožňuje pohyb od at328p a 32u4 k SAMD21.

Naopak, MicroPython neměl existující podporu pro SAMD21 (což je čip používaný na všech našich deskách M0). Přidání podpory SAMD21 pro MicroPython vede k našemu vytvoření CircuitPython. MicroPython měl existující pojem „portů“, který zhruba odpovídá rodinám mikrokontrolérů, jako jsou rodina STM32 a rodiny SAMD. Každá rodina má podobné jádro Cortex M, ale periferie, které implementují protokoly, jako jsou USB, I2C a SPI, se velmi liší. Výzva přidávat podporu pro novou rodinu mikrokontrolérů je tedy v periferní podpoře.

Udělali jsme hodně práce, abychom to v budoucnu usnadnili vytvořením jasného funkčně orientovaného hardwarového rozhraní API. Toto nové rozhraní API usnadňuje přidávání podpory hardwaru do nového portu a zároveň zajišťuje, že stávající ovladače budou stále fungovat. V budoucnu, jak expandujeme do nových mikrokontrolérů, plánujeme, aby přidávání portů bylo ještě jednodušší.

Byly nutné změny hardwaru, aby CircuitPython fungoval na vašich produktech?

Adafruit Peří M0 express

Mít 32 bitový mikrokontrolér je požadavek, ale před CircuitPython jsme již měli různorodou sadu peří SAMD21. Počáteční vývoj CircuitPython byl dělán na Feather M0 Basic a Arduino Zero. CircuitPlayground, Metro, Gemma a Trinket byly aktualizovány na SAMD21, což umožňuje CircuitPython také na těchto platformách.

Pro lepší zážitek z okruhu jsme zavedli řadu desek Express. Tyto desky obsahují externí SPI Flash čipy, které se používají k externímu ukládání Python kódu namísto na mikrokontroléru. To znamená, že lze uložit více kódu (2 MB namísto 64 kB) a samotný firmware může odhalit více funkcí. Jednalo se také o první desky, které mají status RGB LED. Novější non-Express Gemma M0 a Trinket M0 mají také RGB LED, ale nemají extra blesk.

Existují nějaké nevýhody pro CircuitPython, že lidé by měli mít na paměti, jak se vyvíjejí?

Největší kompromis CircuitPython (a Python obecně) je rozhodnutí upřednostnit rychlost vývoje přes paměťovou stopu a rychlost provádění. Důsledkem je, že v závislosti na projektu může člověk zasáhnout limit paměti nebo rychlostní limit, který by nenarazil s kompilovaným řešením, jako je Arduino. Například animace pásu NeoPixel nemusí aktualizovat pixely tak rychle na CircuitPython jako Arduino. Nebo projekt, který závisí na mnoha knihovnách nemusí být schopen mít tolik funkcí ve srovnání s kódem, který může být optimalizován kompilátorem.

To však není dost důvodu, aby se zabránilo CircuitPython. Rychlost vývoje je mnohem rychlejší než řešení založené na kompilátoru, jako je Arduino, které je nejlepší vyzkoušet si projekt v CircuitPython a později podle potřeby optimalizovat. Typicky to bude běžet dostatečně rychle, protože lidé podceňují, jak rychlé počítače jsou.

Optimalizaci po napsání kódu lze provést třemi základními způsoby:

1) v samotném kódu Python 2) přidáním dalších funkcí C do firmwaru CircuitPython podle potřeby z Pythonu 3) nákupem rychlejšího hardwaru (Mooreův zákon stále ovlivňuje rychlost procesoru CPU mikrokontroléru. SAMD21 je 48mHz, ale mikroprocesory s podobnou velikostí běží na 200 + mhz.)

Takže i když existují kompromisy, CircuitPython je obvykle tím pravým místem, kde začít.

Kde se může někdo začít učit CircuitPython? Předpokládám, že learn.adafruit.com, ale je tam někde jinde?

V současné době je nejlepším místem pro spuštění produktové příručky pro Feather M0 Express a Gemma M0. Existují různé projekty v systému Learn, které již využívají CircuitPython (arkádová tlačítka, dotykový ovladač MPR121 a průvodce LIS3DH jsou tři). Tony bude také aktualizovat své starší průvodce MicroPython na CircuitPython, ale to je v dílech. Tato příručka bude například aktualizována. Naše API dokumenty jsou také skvělým místem pro spoustu drobných příkladů. Konečně, obecné návody Pythonu jsou velmi užitečné pro začátek se všemi non-hardwarovými stranami CircuitPython.

Jak se cítíte, že tento krok ovlivní vaši komunitu?

Myslím, že přechod na CircuitPython rozšíří stávající komunitu Adafruit. To přinese více začátečníků na palubě, protože jeho nižší bariéru pro vstup. Je to dokonalá shoda s vestavěnou univerzálností desky, jako je CircuitPlayground Express. Tato jednoduchost použití také umožní více lidem přispět zpět do naší komunity prostřednictvím projektů a knihoven.

Stávající členové naší komunity budou i nadále vidět naše inovativní produkty a projekty. CircuitPython je jen jeden krok ve zlepšování zkušeností s open source softwarem a hardwarem.

Její první základní platforma Adafruit sponzorovala (oproti Arduinu a Raspberry Pi, které mají samostatné hlavní vývojové týmy). To nám dává příležitost nastavit tón pro novou základní rozvojovou komunitu, která je velmi vzrušující. Všechny naše nové projekty mají smlouvu o přispěvateli jako Kodex chování, který je důležitý pro zachování přátelské, vstřícné a podpůrné komunity Adafruit, neboť expandujeme do dalšího vývoje open source. Jazyková komunita Rust byla obrovskou inspirací pro to, jak může být open source projekt provozován dobře. Emily Dunhamová má o nich také mnoho skvělých rozhovorů.

Doufejme, že toto úsilí povede k různorodějšímu souboru přispěvatelů do CircuitPython, knihoven CircuitPython a Learn Learn.

Podíl

Zanechat Komentář