Jeffrey Cross
Jeffrey Cross

CircuitPython serpi pe Hardware Adafruit

Într-o discuție recentă cu Scott Shawcroft, un inginer de la Adafruit, am fost foarte entuziasmat. El explica tranziția lor în utilizarea CircuitPython pe produsele lor, precum și beneficiile pe care le-ar oferi o astfel de tranziție. Un avantaj major este că pur și simplu conectați dispozitivul și se afișează ca spațiu de stocare USB, apoi vă lăsați codul pe el. Nu este nevoie de un IDE. Aceasta nu este prima dată când am văzut această caracteristică, dar faptul că selecția Adafruit de instrumente de prototipare de ultimă oră vor avea acest lucru ma făcut extrem de entuziasmat.

Ce este CircuitPython?

CircuitPython este un firmware microcontroler bazat pe MicroPython, care facilitează mai mult decât oricând programul hardware. Spre deosebire de Arduino, codul unui utilizator nu este stocat în firmware în sine, ci mai degrabă pe un sistem de fișiere mic în chip sau pe placă. Ca urmare, programarea cu CircuitPython este la fel de simplă ca și conectarea plăcii într-un computer și editarea unui fișier pe unitatea care apare. Nu este nevoie de software suplimentar pentru a începe.

Arduino a revolutionat embedded-ul eliminand nevoia de scule sclipitoare atunci cand schimba codul. CircuitPython merge cu un pas mai departe, eliminând nevoia de drivere și software specifice.

Dacă ar fi trebuit să rezumați acest lucru în cel mai simplu mod posibil, cum ați descrie CircuitPython?

Cred că cea mai simplă versiune nu implică recunoașterea CircuitPython sau Python ca fiind separată deloc. Acesta simplifică pur și simplu software-ul și hardware-ul. Conectați un dispozitiv, deschideți unitatea și editați codul pe acesta pentru a vă spulbera. Salvarea fișierului determină automat reîncărcarea acestuia. Scoateți-l ca o unitate degetul mare și luați-o cu dvs. Codul face parte din dispozitiv.

De ce ați ales să implementați CircuitPython în produsele Adafruit?

Pentru mine, pur și simplu că ei mai ușor decât orice altceva acolo să folosească. CircuitPython are o barieră foarte mică pentru intrare, deoarece funcționează fără drivere speciale (cu excepția serialului pe Windows mai vechi). Nu necesită niciun program pentru a-l programa, deoarece orice editor de text simplu va funcționa. Orice program serial se poate conecta la el. Nici o conexiune la Internet nu este necesară pentru a programa fie ea.

Această barieră scăzută la intrare o face perfectă pentru Adafruit, deoarece ne prosperăm pe începătorii de predare să creeze și să experimenteze hardware. Abilitatea lui CircuitPython de a unifica codul cu hardware-ul îl face mai hackable decât oricând. Nu mai este o chestiune de trimitere prin e-mail a unui utilizator separat și apoi de a le înființa cu o anumită bucată de software. Pur și simplu funcționează.

Produsele vor continua să funcționeze cu ID-ul Arduino?

Da! Noi produse bazate pe SAMD21 Cortex-M0 + mcu care suporta CircuitPython sunt de asemenea suportate de Arduino IDE si Microsoft MakeCode. Credem că învățarea începătorilor inițial cu MakeCode și apoi avansarea la CircuitPython și IDE Arduino este o modalitate excelentă de a ajuta coderii tineri să crească cu complexitatea lor de proiect.

De ce nu a fost făcută această metodă mai devreme? Sau dacă ar fi, cine să mulțumim că a pus bazele?

Rularea Python pe embedded a fost încercată înainte cu proiecte precum Python-on-a-Chip și Owl. Cu toate acestea, aceste proiecte nu au găsit o audiență largă. În final, MicroPython a lansat un Kickstarter. Dezvoltatorii MicroPython, printre care Damien George și Paul Sokolovsky, merită să fie de acord că au pus bazele CircuitPython. Ei au făcut munca grea de a reimplementa Python 3.4 pe un microcontroler și de a edita codul de stocare în masă USB. Ne-am construit pur și simplu pe munca lor pentru a face să lucreze pe hardware-ul nostru și poloneză experiența.

Ce fel de dificultăți sunt implicate, în primul rând, în portarea produselor dvs. în CircuitPython? Este complicat? Uşor? Nu e mare lucru?

Portarea produselor către CircuitPython înseamnă, în mare măsură, mutarea acestora în microcontrolere de 32 biți. CircuitPython nu acceptă microcontrolere pe 8 biți, deci mișcarea de la 328p și 32u4 la SAMD21 face posibil acest lucru.

Dimpotrivă, MicroPython nu avea suportul existent pentru SAMD21 (care este cipul folosit pe toate panourile noastre M0). Adăugarea suportului SAMD21 la MicroPython duce la crearea de CircuitPython. MicroPython avea o noțiune existentă de "porturi" care se aliniază, în general, cu familii de microcontrolere, cum ar fi familia STM32 și familiile SAMD. Fiecare familie are un nucleu Cortex M similar, dar perifericele care implementează protocoale precum USB, I2C și SPI variază foarte mult. Deci, provocarea de a adăuga suport pentru o nouă familie de microcontrolere este în sprijinul periferic.

Am făcut multe lucruri pentru a face acest lucru mai ușor în viitor prin stabilirea unui API hardware clar, orientat spre funcții. Acest nou API face ușor adăugarea suportului hardware fragmentat într-un port nou, ajutând în același timp să se asigure că driverele existente vor funcționa în continuare. În viitor, pe măsură ce extindem la noile microcontrolere, intenționăm să facem și mai ușoare adăugarea porturilor.

Au fost necesare schimbări hardware pentru a face CircuitPython să funcționeze pe produsele dvs.?

Adafrut Feather M0 Express

Având un microcontroler de 32 biți este o cerință, dar înainte de CircuitPython aveam deja un set divers de pene pe bază de SAMD21. Dezvoltarea inițială a CircuitPython a fost făcută pe Feather M0 Basic și Arduino Zero. CircuitPlayground, Metro, Gemma și Trinket au fost actualizate la SAMD21, ceea ce permite CircuitPython și pe acele platforme.

Pentru o mai bună experiență CircuitPython, am introdus linia Express a plăcilor. Aceste placi au chips-uri externe SPI Flash care sunt folosite pentru a stoca codul Python extern, în loc de pe microcontroler. Aceasta înseamnă că mai mult cod poate fi stocat (2MB în loc de 64KB), iar firmware-ul însuși poate expune mai multe funcționalități. Acestea au fost, de asemenea, primele placi care au un LED RGB de stare. Cele mai noi modele non-Express Gemma M0 și Trinket M0 au, de asemenea, LED-ul RGB, dar nu au bliț suplimentar.

Există dezavantaje pentru CircuitPython pe care oamenii ar trebui să le țină cont în timp ce se dezvoltă?

Cel mai mare compromis al CircuitPython (și Python în general) este decizia de a acorda prioritate vitezei de dezvoltare în raport cu amprenta de memorie și viteza de execuție. Impactul este că, în funcție de proiect, s-ar putea atinge o limită de memorie sau o limită de viteză pe care nu ar fi lovit-o cu o soluție compilată precum Arduino. De exemplu, o animație de bandă NeoPixel nu poate să reîmprospăteze pixelii la fel de repede pe CircuitPython ca și Arduino. Sau un proiect care depinde de multe biblioteci poate să nu poată avea la fel de multă funcționalitate în comparație cu codul care poate fi optimizat de un compilator.

Acesta nu este un motiv suficient pentru a evita CircuitPython totuși. Viteza de dezvoltare este mult mai rapidă decât o soluție bazată pe compilatoare, cum ar fi Arduino, care este cel mai bun pentru a încerca un proiect tot în CircuitPython și pentru a optimiza mai târziu după cum este necesar. În mod normal, acesta va funcționa destul de repede, deoarece oamenii subestimează cât de repede sunt computerele.

Optimizarea după scrierea codului se poate face în trei moduri principale:

1) în codul Python însuși 2) prin adăugarea de funcționalități C suplimentare în firmware-ul CircuitPython după cum este necesar pentru utilizarea de la Python 3) achiziționarea de hardware mai rapid (legea lui Moore continuă să influențeze viteza CPU a microcontrolerului.) SAMD21 este de 48mhz, dar microcontrolerele de dimensiuni similare rulează la 200 + mhz.)

Deci, în timp ce există compromisuri, CircuitPython este de obicei locul potrivit pentru a începe.

De unde poate cineva să înceapă să învețe CircuitPython? Presupun că learn.adafruit.com, dar există altă parte?

În prezent, cel mai bun loc pentru a începe este ghidurile specifice produsului pentru Feather M0 Express și Gemma M0. Există o varietate de proiecte pe sistemul de învățare care utilizează deja circuitul CircuitPython (caseta cu butoane arcade, controlerul tactil MPR121 și ghidul LIS3DH sunt trei). Tony va actualiza, de asemenea, ghidurile mai vechi de MicroPython la CircuitPython, dar asta-i în fabrică. Acest ghid, de exemplu, va fi actualizat. Documentele noastre API sunt, de asemenea, un loc minunat pentru multe exemple minuscule. În sfârșit, tutorialele generale Python sunt foarte utile pentru a începe cu toate părțile non-hardware ale CircuitPython.

Cum credeți că această mișcare va afecta comunitatea dvs.?

Cred că trecerea spre CircuitPython va extinde comunitatea existentă Adafruit. Va aduce la bord mai mulți începători din cauza barierei inferioare la intrare. Este o potrivire perfectă cu versatilitatea încorporată a unei plăci, cum ar fi CircuitPlayground Express. Această ușurință în utilizare va permite, de asemenea, mai multor oameni să contribuie înapoi la comunitatea noastră prin proiecte și biblioteci.

Membrii existenți ai comunității noastre vor continua să ne vadă creăm produse și proiecte inovatoare. CircuitPython este doar un pas în îmbunătățirea experienței software-ului open source și a hardware-ului.

Este, de asemenea, prima platformă de bază Adafruit sponsorizată (față de Arduino și Raspberry Pi care au echipe separate de dezvoltare de bază). Acest lucru ne oferă posibilitatea de a stabili tonul pentru o nouă comunitate de dezvoltare de bază, care este foarte interesantă. Toate proiectele noi au legătura Contributorului ca și Codul de Conduită, care este important pentru a ajuta la păstrarea comunității prietenoase, primite și susținute de Adafruit pe măsură ce ne extindem în dezvoltarea mai open source. Comunitatea de limbi rutiere a fost o sursă de inspirație uriașă pentru modul în care un proiect open source poate fi executat bine. Emily Dunham are și o serie de discuții importante despre ei.

Sperăm că acest efort va duce la un set mai divers de contribuitori la bibliotecile CircuitPython, CircuitPython și Ghiduri de învățare.

Acțiune

Lasa Un Comentariu