Jeffrey Cross
Jeffrey Cross

CircuitPython kače svojo pot na Adafruit Hardware

V nedavnem pogovoru s Scottom Shawcroftom, inženirjem pri Adafruitju, sem se resnično vznemiril. Razlagal je njihov prehod v uporabo CircuitPython na svoje izdelke, pa tudi koristi, ki bi jih prinesel tak prehod. Ena od glavnih prednosti je, da preprosto priključite napravo in se prikaže kot pomnilnik USB, nato pa jo spustite na njeno mesto. IDE ni potreben. To ni prvič, da sem videl to funkcijo, vendar pa me je dejstvo, da bo Adafruitova izbira najsodobnejših orodij za izdelavo prototipov, to zelo navdušila.

Kaj je CircuitPython?

CircuitPython je mikrokrmilniška programska oprema, ki temelji na programu MicroPython in omogoča preprostejšo programsko opremo. Za razliko od Arduino, uporabniška koda ni shranjena v sami programski opremi, temveč v majhnih datotečnih sistemih v čipu ali na plošči. Programiranje s programom CircuitPython je tako preprosto kot vstavljanje plošče v računalnik in urejanje datoteke na disku, ki se pojavi. Za začetek ni potrebna nobena dodatna programska oprema.

Arduino je revolucijo vgradil z odstranitvijo potrebe po dragih utripajočih orodjih pri spreminjanju kode. CircuitPython gre še korak dlje, saj odpravlja potrebo po posebnih gonilnikih in programski opremi.

Če bi jo morali povzeti na najpreprostejši možni način, kako bi opisali CircuitPython?

Mislim, da najpreprostejša različica ne vključuje prepoznavanja CircuitPython ali Python kot ločenega. Preprosto združuje programsko in strojno opremo. Priključite napravo, odprite pogon in uredite kodo na njem. Shranjevanje datoteke samodejno povzroči ponovno nalaganje. Izvlecite ga kot palec in ga vzemite s seboj. Koda je del naprave.

Zakaj ste se odločili za izvedbo CircuitPython v Adafruitovih izdelkih?

Zame je to preprosto, da je lažje kot karkoli drugega tam zunaj. CircuitPython ima zelo nizko oviro za vstop, ker deluje brez posebnih gonilnikov (razen serijskih na starejših Windows). Za programiranje ni potreben noben program, saj bo deloval vsak urejevalnik navadnega besedila. Vsak serijski program se lahko poveže z njim. Za programiranje ni potrebna internetna povezava.

Ta nizka ovira za vstop je odlična rešitev za Adafruit, ker uspevamo učiti začetnike, da ustvarjajo in eksperimentirajo s strojno opremo. Sposobnost sistema CircuitPython, da poenoti kodo s strojno opremo, je bolj uporabna kot kdajkoli prej. Njegova ni več vprašanje emailing nekdo kodo ločeno in nato pridobivanje jih ustanovljen s posebnim delom programske opreme. Samo deluje.

Ali bodo izdelki še vedno delovali z Arduino IDE?

Da! Nove izdelke, ki temeljijo na SAMD21 Cortex-M0 + mcu, ki podpirajo CircuitPython, podpirajo tudi Arduino IDE in Microsoft MakeCode. Mislimo, da poučevanje začetnikov z MakeCode in nato napredovanje v CircuitPython in Arduino IDE je odličen način za pomoč mladim koderjem raste s svojo kompleksnostjo projekta.

Zakaj ni bila ta metoda narejena prej? Ali če bi bilo, kdo bi se moral zahvaliti za postavitev temeljev?

Zaganjanje Pythona na vdelanem računalniku je bilo že preizkušeno s projekti, kot sta Python-on-a-Chip in Owl. Vendar ti projekti niso našli širokega občinstva. MicroPython pa je končno naredil, ko so začeli s Kickstarterjem. Razvijalci MicroPythona, vključno z Damienom Georgeom in Paulom Sokolovskim, si zaslužijo zasluge za postavitev temeljev za CircuitPython. Naredili so trdo delo za ponovno izvajanje Python 3.4 na mikrokrmilniku in urejanje kode preko USB pomnilnika. Preprosto smo gradili na njihovem delu, da bi delali na naši strojni opremi in polirali izkušnje.

Kakšne težave se pojavljajo pri prenosu izdelkov na CircuitPython? Je to zapleteno? Enostavno? Nič takega?

Prenos izdelkov v CircuitPython v veliki meri pomeni premikanje na 32-bitne mikrokrmilnike. CircuitPython ne podpira 8-bitnih mikrokontrolerjev, tako da je to mogoče s premikom od at328p in 32u4 do SAMD21.

Nasprotno pa MicroPython ni imel obstoječe podpore za SAMD21 (ki je čip, uporabljen na vseh naših M0 ploščah). Dodajanje SAMD21 podpore za MicroPython vodi do našega ustvarjanja CircuitPython. MicroPython je imel obstoječi pojem "pristanišč", ki približno ustreza družinam mikrokrmilnikov, kot sta družina STM32 in družine SAMD. Vsaka družina ima podobno jedro Cortex M, vendar se zunanje naprave, ki uporabljajo protokole, kot so USB, I2C in SPI, zelo razlikujejo. Zato je izziv dodajanja podpore novi družini mikrokrmilnikov v periferno podporo.

Opravili smo veliko dela, da bi to v prihodnje olajšali z vzpostavitvijo jasnega, funkcionalno usmerjenega API-ja za strojno opremo. Ta novi API olajša dodajanje podpore strojne opreme po delih v novo pristanišče, hkrati pa zagotavlja, da bodo obstoječi gonilniki še vedno delovali. V prihodnosti, ko bomo širili na nove mikrokrmilnike, načrtujemo, da bo dodajanje vrat še lažje.

Ali so bile potrebne spremembe strojne opreme, da bi CircuitPython delal na vaših izdelkih?

Adafruit Feather M0 express

Imeti 32-bitni mikrokrmilnik je zahteva, toda pred CircuitPython smo že imeli raznolik nabor perja SAMD21. Začetni razvoj CircuitPython je bil narejen na Feather M0 Basic in Arduino Zero. CircuitPlayground, Metro, Gemma in Trinket so bili posodobljeni na SAMD21, ki omogoča CircuitPython tudi na teh platformah.

Za boljšo izkušnjo CircuitPython smo uvedli linijo Express plošč. Te plošče imajo zunanji SPI Flash čipov, ki se uporabljajo za shranjevanje Python kodo zunaj, namesto na mikrokontroler. To pomeni, da se lahko shrani več kode (2 MB namesto 64KB) in sama strojna programska oprema lahko izpostavi več funkcionalnosti. To so bile tudi prve plošče, ki imajo status RGB LED. Novejša ne-Express Gemma M0 in Trinket M0 imata tudi RGB LED, vendar nimata dodatne bliskavice.

Ali obstajajo kakršne koli slabosti za CircuitPython, ki jih morajo ljudje upoštevati, ko se razvijajo?

Največja kompromisna rešitev CircuitPython (in Python na splošno) je odločitev, da prednostno določite hitrost razvoja glede na odtis pomnilnika in hitrost izvajanja. Vpliv je na to, da lahko, odvisno od projekta, dosežemo omejitev pomnilnika ali omejitev hitrosti, da ne bi zadeli s pripravljeno rešitvijo, kot je Arduino. Na primer, animacija NeoPixel traku morda ne bo osvežila slikovnih pik tako hitro na CircuitPython kot Arduino. Ali pa projekt, ki je odvisen od številnih knjižnic, morda ne bo imel toliko funkcionalnosti kot koda, ki jo prevajalnik lahko optimizira.

To pa ni dovolj, da bi se izognili CircuitPythonu. Razvojna hitrost je veliko hitrejša od rešitve, ki temelji na prevajalniku, kot je Arduino, da je najbolje, da poskusite projekt v CircuitPython in kasneje po potrebi optimizirate. Običajno se bo zagnal dovolj hitro, ker ljudje podcenjujejo hitrost računalnikov.

Optimizacijo po pisanju kode lahko izvedete na tri osnovne načine:

1) v sami kodi Python 2) z dodajanjem dodatne funkcionalnosti C v programsko opremo CircuitPython, ki je potrebna za uporabo iz Pythona 3) nakup hitrejše strojne opreme (Moorov zakon še vedno vpliva na hitrosti procesorja mikrokrmilnika. + mhz.)

Torej, medtem ko obstajajo kompromisi, je CircuitPython običajno pravi kraj za začetek.

Kje lahko nekdo začne učiti CircuitPython? Predvidevam, learn.adafruit.com, vendar je tam kjerkoli drugje?

Trenutno je najboljše mesto za začetek uporabe posebnih vodnikov za Feather M0 Express in Gemma M0. Obstajajo številni projekti na sistemu Learn, ki že izkoriščajo CircuitPython (polje arkadnih gumbov, krmilnik MPR121 in vodnik LIS3DH so trije). Tony bo tudi posodobil svoje starejše vodnike MicroPython na CircuitPython, vendar je to v izdelavi. Ta priročnik bo na primer posodobljen. Naši API dokumenti so tudi odličen kraj za veliko majhnih primerov. Nazadnje, splošne vaje za Python so zelo koristne za začetek z vsemi ne-strojnimi stranmi CircuitPythona.

Kako menite, da bo ta poteza vplivala na vašo skupnost?

Mislim, da bo prehod na CircuitPython razširil obstoječo skupnost Adafruit. Zaradi nižje vstopne ovire bo na krov prišlo več začetnikov. To se odlično ujema z vgrajeno vsestranskostjo plošče, kot je CircuitPlayground Express. Ta enostavnost uporabe bo omogočila tudi več ljudi, da prispevajo k naši skupnosti prek projektov in knjižnic.

Obstoječi člani naše skupnosti bodo še naprej videli ustvarjanje inovativnih izdelkov in projektov. CircuitPython je le en korak pri izboljšanju izkušenj odprtokodne programske in strojne opreme.

Njegova prva platforma, ki jo je Adafruit sponzoriral (v primerjavi z Arduino in Raspberry Pi, ki imata ločene razvojne ekipe). To nam daje priložnost, da postavimo ton za novo ključno razvojno skupnost, kar je zelo razburljivo. Vsi naši novi projekti so zavezani k sodelovanju kot kodeks ravnanja, ki je pomemben pri ohranjanju prijazne, prijazne in podporne skupnosti Adafruit, ko se širimo v bolj odprtokodni razvoj. Jezikovna skupnost Rust je bila navdih za dobro delovanje odprtega projekta. Emily Dunham ima tudi številne odlične pogovore o njih.

Upamo, da bodo ta prizadevanja privedla do bolj raznolikega nabora prispevkov k knjižnicam CircuitPython, CircuitPython in Guides.

Delež

Pustite Komentar