Jeffrey Cross
Jeffrey Cross

CircuitPython Snakes oma teed Adafruit riistvarale

Hiljutises arutelus Adafruit'i inseneri Scott Shawcroftiga sain väga põnevil. Ta selgitas oma üleminekut CircuitPythoni kasutamisele oma toodetes, samuti kasu, mida selline üleminek võimaldaks. Üks peamine eelis on see, et sa lihtsalt ühendad seadme ja see ilmub USB-mäluseadmena, siis langetad selle koodi. IDE-d pole vaja. See ei ole esimene kord, kui ma seda funktsiooni nägin, kuid asjaolu, et Adafruit'i valikuid tipptasemel prototüüpimisvahenditel on see minu jaoks väga põnevil.

Mis on CircuitPython?

CircuitPython on MicroPythonil põhinev mikrokontrolleri püsivara, mis muudab riistvara programmeerimise lihtsamaks kui kunagi varem. Erinevalt Arduinost ei salvestata kasutajakoodi ise püsivara, vaid pigem kiibis või laual asuvasse pisikesse failisüsteemi. Selle tulemusena on CircuitPythoniga programmeerimine sama lihtne kui plaadi ühendamine arvutiga ja faili ilmumine draivil, mis ilmub. Alustamiseks ei ole vaja täiendavat tarkvara.

Arduino pöördus ümber, jättes välja koodi muutmise vajaduse kallite vilkuvate tööriistade järele. CircuitPython läheb sammu võrra kaugemale, eemaldades vajaduse konkreetsete draiverite ja tarkvara järele.

Kui teil oleks vaja seda võimalikult lihtsal viisil kokku võtta, siis kuidas te kirjeldaksite CircuitPythoni?

Ma arvan, et lihtsaim versioon ei hõlma CircuitPythoni või Pythoni äratundmist üldse. See lihtsalt ühendab tarkvara ja riistvara. Ühendage seade sisse, avage seade ja redigeerige selle koodi, et häkkida. Faili salvestamine viib selle automaatselt uuesti laadima. Eemaldage see nagu pöidlad ja võtke see kaasa. Kood on seadme osa.

Miks olete otsustanud rakendada CircuitPythoni Adafruit'i toodetes?

Minu jaoks on see lihtsalt selle lihtsam kui midagi muud, mida seal kasutada. CircuitPythonil on sissepääsuks väga madal barjäär, sest see töötab ilma spetsiaalsete draiveriteta (välja arvatud seeriaviisiline vanemate Windows). See ei nõua ühest programmist selle programmeerimist, kuna iga lihttekstiredaktor töötab. Iga seeriaprogramm võib sellega ühenduda. Ka selle programmeerimiseks ei ole vaja Interneti-ühendust.

See madal sisenemise takistus muudab Adafruit'i ideaalseks, sest me õitseme algajatele õpetamist riistvara loomiseks ja katsetamiseks. CircuitPythoni võime ühendada koodi riistvaraga muudab selle häkkitavamaks kui kunagi varem. See ei ole enam küsimus kellegi koodi eraldi saatmisest ja seejärel nende seadistamisest konkreetse tarkvaraga. See lihtsalt töötab.

Kas tooted töötavad veel Arduino IDEga?

Jah! Arduino IDE ja Microsoft MakeCode toetavad ka uusi tooteid, mis põhinevad ettevõttel SAMD21 Cortex-M0 + mcu, mis toetavad CircuitPythoni. Me arvame, et algajatele õpetamine algselt MakeCode'iga ja seejärel edasi liikumine CircuitPythoni ja Arduino IDE-sse on suurepärane võimalus aidata noortel kodeerijatel oma projekti keerukusega kasvada.

Miks seda meetodit varem ei tehtud? Või kui see nii oli, siis keda me peaksime tänama, et vundamendid alustada?

Pythoni käivitamist varjatud seadmetes on varem proovitud selliste projektidega nagu Python-on-a-Chip ja Owl. Need projektid ei leidnud siiski laia publikut. Lõpuks tegi MicroPython aga Kickstarteri käivitamisel. MicroPythoni arendajad, sealhulgas Damien George ja Paul Sokolovsky, väärivad krediiti, et panna CircuitPythoni alus. Nad tegid kõvasti tööd Pythoni 3.4 taaskäivitamiseks mikrokontrolleril ja koodi redigeerimise üle USB-massmällu. Oleme lihtsalt ehitanud oma töö, et muuta see meie riistvara tööle ja kogemusi poleerida.

Millised raskused on toodete levitamisel CircuitPythonile? Kas see on keeruline? Lihtne? Pole probleemi?

Toodete ülekandmine CircuitPythonile tähendab suures osas nende liigutamist 32-bitistele mikrokontrolleritele. CircuitPython ei toeta 8-bitisi mikrokontrollereid, mistõttu on see võimalik at328p-st ja 32u4-st SAMD21-le liikumine.

Vastupidi, MicroPythonil ei olnud olemasolevat tuge SAMD21-le (mis on kõikidel meie M0 plaatidel kasutatav kiip). SAMD21 toe lisamine MicroPythonile viib meie CircuitPythoni loomiseni. MicroPythonil oli olemasolev mõiste „sadamad”, mis ulatuvad umbes mikrokontrollerite perekondadega, nagu STM32 perekond ja SAMD perekonnad. Igal perekonnal on sarnane Cortex M tuum, kuid välisseadmed, mis rakendavad selliseid protokolle nagu USB, I2C ja SPI, on väga erinevad. Niisiis on uue mikrokontrollerite toetuse lisamise väljakutse perifeerne tugi.

Oleme teinud palju tööd, et seda tulevikus lihtsamaks muuta, luues selge, funktsioonile orienteeritud riistvara API. See uus rakendusliides muudab riistvaratoe lisamise uuele porti lihtsaks, aidates samal ajal tagada olemasolevate draiverite töö. Tulevikus, kui laieneme uutele mikrokontrolleritele, kavatseme sadamate lisamise veelgi lihtsustada.

Kas CircuitPythoni töö teie toodetega töötamiseks oli vaja riistvara muudatusi?

Adafruit Feather M0 väljendada

Nõue on 32-bitise mikrokontrolleriga, kuid enne CircuitPythoni oli meil juba palju erinevaid SAMD21-põhiseid sulgi. CircuitPythoni esmane arendamine toimus Feather M0 Basic ja Arduino Zero. CircuitPlayground, Metro, Gemma ja Trinket on uuendatud SAMD21-le, mis võimaldab ka nendel platvormidel CircuitPythoni.

Parema CircuitPythoni kogemuse saamiseks oleme tutvustanud Express-plaate. Nendel plaatidel on välised SPI Flash-kiibid, mida kasutatakse Pythoni koodi väliseks salvestamiseks mikrokontrolleri asemel. See tähendab, et rohkem koodi saab salvestada (2 MB asemel 64KB) ja püsivara ise võib paljastada rohkem funktsionaalsust. Need olid ka esimesed lauad, millel oli olek RGB LED. Uuemate mitte-Express Gemma M0 ja Trinket M0 on ka RGB LED, kuid neil ei ole ekstra välku.

Kas CircuitPythonile on mingeid puudusi, mida inimesed peaksid arendamisel meeles pidama?

CircuitPythoni (ja Pythoni üldine) suurim kompromiss on otsus kiirendada arengu kiirust mälu jalajälje ja teostuskiiruse vahel. Mõju on see, et sõltuvalt projektist võib tabada mälupiirangut või kiirusepiirangut, mida nad ei tabaks kompileeritud lahendusega nagu Arduino. Näiteks ei pruugi NeoPixeli riba animatsioon värskendada piksleid nii kiiresti kui CircuitPython kui Arduino. Või võib paljudest raamatukogudest sõltuv projekt olla võimatu nii palju funktsioone võrreldes koodiga, mida kompilaator saab optimeerida.

See ei ole küll piisav põhjus CircuitPythoni vältimiseks. Arengu kiirus on nii palju kiirem kui kompilaatoril põhinev lahendus, nagu Arduino, et tema parim on projekt, mida kõik CircuitPythoni projektis proovida ja vajadusel hiljem optimeerida. Tavaliselt töötab see piisavalt kiiresti, sest inimesed alahinnavad, kui kiiresti arvutid on.

Optimeerimist pärast koodi kirjutamist saab teha kolmel peamisel viisil:

1) Pythoni koodis 2), lisades täiendavalt C-funktsionaalsust CircuitPythoni püsivara, mida on vaja kasutada Python 3-lt), ostes kiiremini riistvara (Moore'i seadus mõjutab ikka veel mikrokontrolleri protsessori kiirust. SAMD21 on 48 mhz, kuid sarnaselt suurusega mikrokontrollerid töötavad 200 + mhz.)

Seega, kuigi on kompromisse, on CircuitPython tavaliselt õige koht.

Kust saab keegi CircuitPythoni õppida? Ma eeldan, et Learn.adafruit.com, aga kas seal on mujal?

Praegu on parim koht alustamiseks tootespetsiifilised juhendid Feather M0 Express ja Gemma M0 jaoks. Õppesüsteemis on juba mitmeid projekte, mis kasutavad juba CircuitPythonit (arcade nupp, MPR121 puutetundlik kontroller ja LIS3DH juhend on kolm). Tony kavatseb värskendada ka vanemaid MicroPythoni juhendeid CircuitPythonile, kuid see on ka teoste puhul. Seda juhendit näiteks uuendatakse. Meie API-dokumendid on ka suurepärane koht palju väikesi näiteid. Lõpuks on Pythoni üldised õpetused väga kasulikud CircuitPythoni kõigi mitte-riistvara külgede alustamiseks.

Kuidas teie arvates see käik teie kogukonda mõjutab?

Ma arvan, et liikumine CircuitPythoni suunas laiendab olemasolevat Adafruit'i kogukonda. See toob pardale rohkem algajaid, kuna see on madalam sisenemispiirang. See sobib ideaalselt lauale nagu CircuitPlayground Express. See lihtne kasutus võimaldab ka rohkematel inimestel oma kogukonna kaudu projektide ja raamatukogude kaudu kaasa aidata.

Olemasolevad meie kogukonna liikmed näevad meid jätkuvalt innovaatiliste toodete ja projektide loomisel. CircuitPython on vaid üks samm avatud lähtekoodiga tarkvara ja riistvara kogemuste parandamisel.

Samuti on see esimene peamine platvorm Adafruit sponsoreerinud (võrreldes Arduino ja Raspberry Pi'ga, millel on eraldi põhilised arendusmeeskonnad). See annab meile võimaluse seada uue tuumiku arengu kogukonna toon, mis on väga põnev. Kõigil meie uutel projektidel on tegevusjuhend, mis aitab kaasa sõbraliku, sõbraliku ja toetava Adafruit'i kogukonna säilitamisele, kui laiendame avatud lähtekoodiga arendustegevusse. Rustkeelne kogukond on olnud suureks inspiratsiooniks, kuidas avatud lähtekoodiga projekti saab hästi käivitada. Emily Dunhamil on ka palju häid kõnelusi.

Loodetavasti toovad need jõupingutused kaasa CircuitPythoni, CircuitPythoni raamatukogude ja õppimisjuhendite mitmekesisema panustajate kogumi.

Osa

Jätnud Kommentaari