Jeffrey Cross
Jeffrey Cross

CircuitPython zmije svoj put na Adafruit Hardver

U nedavnoj raspravi sa Scottom Shawcroftom, inženjerom u Adafruitu, doista sam se uzbuđivao. Objašnjavao je njihov prijelaz na korištenje CircuitPythona na svojim proizvodima, kao i koristi koje bi takav prijelaz pružio. Jedna od glavnih prednosti je da jednostavno uključite uređaj i on se prikazuje kao USB pohrana, a zatim ispustite svoj kod na njega. Nema potrebe za IDE-om. Ovo nije prvi put da vidim ovu značajku, ali činjenica da će Adafruitov izbor najsuvremenijih alata za izradu prototipova imati ovo me jako uzbudio.

Što je CircuitPython?

CircuitPython je firmware mikrokontrolera temeljen na MicroPythonu koji olakšava programiranje hardvera. Za razliku od Arduina, korisnički kôd nije pohranjen u samom softveru, nego na malom datotečnom sustavu u čipu ili na ploči. Kao rezultat, programiranje s CircuitPython je jednostavno kao uključivanje ploče u računalo i uređivanje datoteke na pogonu koji se pojavljuje. Nije potreban dodatni softver za početak rada.

Arduino je napravio revoluciju ugradnjom uklanjajući potrebu za skupim alatima za mijenjanje kod promjene. CircuitPython ide korak dalje, uklanjajući potrebu za posebnim upravljačkim programima i softverom.

Ako biste ga trebali sažeti na najjednostavniji mogući način, kako biste opisali CircuitPython?

Mislim da najjednostavnija verzija ne uključuje prepoznavanje CircuitPythona ili Pythona kao zasebnog. Jednostavno objedinjuje softver i hardver. Uključite uređaj, otvorite pogon i uredite ga na njemu. Spremanje datoteke automatski uzrokuje ponovno učitavanje. Izbacite ga kao palac i ponesite ga sa sobom. Kôd je dio uređaja.

Zašto ste odlučili implementirati CircuitPython u Adafruitove proizvode?

Za mene, to jednostavno da je lakše nego bilo što drugo vani koristiti. CircuitPython ima vrlo nisku prepreku za ulaz jer radi bez posebnih upravljačkih programa (osim serijskih na starijim Windowsima). Nije potreban niti jedan program za programiranje jer će raditi bilo koji uređivač običnog teksta. Na njega se može spojiti bilo koji serijski program. Nije potrebna ni internetska veza za programiranje.

Ta niska zapreka za ulazak čini je savršenom za Adafruit jer napredujemo u učenju početnika za stvaranje i eksperimentiranje s hardverom. Sposobnost CircuitPythona da objedini kod s hardverom čini ga hakabilnijim nego ikad. Njegova više nije pitanje e-pošte netko kod zasebno, a zatim uzimajući ih postaviti s određenim komad softvera. Jednostavno radi.

Hoće li proizvodi i dalje raditi s Arduino IDE-om?

Da! Novi proizvodi temeljeni na SAMD21 Cortex-M0 + mcu koji podržavaju CircuitPython također su podržani od Arduino IDE i Microsoft MakeCode. Smatramo da početnici početnike uče MakeCode, a zatim napreduju u CircuitPython i Arduino IDE je odličan način da pomognete mladim koderima da rastu sa svojom složenošću projekta.

Zašto ova metoda nije učinjena ranije? Ili ako jest, kome bismo trebali zahvaliti za postavljanje temelja?

Pokretanje Pythona na ugrađenom je pokušano prije s projektima kao što su Python-on-a-Chip i Owl. Međutim, ti projekti nisu pronašli široku publiku. MicroPython je konačno ipak napravio kada su pokrenuli Kickstarter. Programeri MicroPythona, uključujući Damiena Georgea i Paula Sokolovskog, zaslužuju zasluge za postavljanje temelja za CircuitPython. Učinili su naporan rad na reimplementaciji Pythona 3.4 na mikrokontroleru i uređivanju koda preko USB memorije. Jednostavno smo se nadovezali na njihov rad kako bismo radili na našem hardveru i ispolirali iskustvo.

Kakve su poteškoće u prvom redu prijenosi proizvoda na CircuitPython? Je li ovo komplicirano? Lako? Ništa posebno?

Prenos proizvoda u CircuitPython u velikoj mjeri znači njihovo premještanje na 32-bitne mikrokontrolere. CircuitPython ne podržava 8-bitne mikrokontrolere, tako da se to može pomaknuti od at328p i 32u4 do SAMD21.

Isto tako, MicroPython nije imao postojeću podršku za SAMD21 (koji je čip koji se koristi na svim našim M0 pločama). Dodavanje SAMD21 podrške za MicroPython dovodi do stvaranja CircuitPythona. MicroPython je imao postojeći pojam “portova” koji se grubo slaže s obiteljima mikrokontrolera poput obitelji STM32 i obitelji SAMD. Svaka obitelj ima sličnu Cortex M jezgru, ali periferne jedinice koje implementiraju protokole kao što su USB, I2C i SPI uvelike variraju. Dakle, izazov dodavanja podrške za novu obitelj mikrokontrolera je u perifernoj podršci.

Učinili smo mnogo truda kako bismo to ubuduće olakšali uspostavom jasnog, funkcionalno orijentiranog hardverskog API-ja. Ovaj novi API olakšava dodavanje hardverske potpore dijelom u novi priključak, a istovremeno osigurava da postojeći upravljački programi i dalje rade. U budućnosti, dok se proširujemo na nove mikrokontrolere, planiramo olakšati dodavanje priključaka.

Jesu li promjene hardvera potrebne za rad CircuitPythona na vašim proizvodima?

Adafruit Feather M0 izraziti

Imati 32-bitni mikrokontroler je uvjet, ali prije CircuitPython već smo imali raznolik skup SEMD21 baziranih perja. Početni razvoj CircuitPython je učinjen na Feather M0 Basic i Arduino Zero. CircuitPlayground, Metro, Gemma i Trinket su ažurirani na SAMD21, koji omogućuje CircuitPython i na tim platformama.

Za bolje iskustvo CircuitPython, uveli smo Express liniju ploča. Ove ploče imaju vanjske SPI Flash čipove koji se koriste za vanjsko spremanje Python koda, umjesto na mikrokontroler. To znači da se može pohraniti više koda (2MB umjesto 64KB), a sam firmware može izložiti više funkcionalnosti. To su također prve ploče koje imaju status RGB LED. Novije ne-Express Gemma M0 i trinket M0 također imaju RGB LED, ali nemaju dodatnu bljeskalicu.

Ima li kakvih nedostataka za CircuitPython koje ljudi trebaju imati na umu dok se razvijaju?

Najveći kompromis CircuitPythona (i Pythona u cjelini) je odluka o prioritetnoj brzini razvoja u odnosu na memorijski otisak i brzinu izvođenja. Utjecaj je da, ovisno o projektu, može doći do ograničenja memorije ili ograničenja brzine koje ne bi pogodila kompilirano rješenje kao što je Arduino. Na primjer, animacija NeoPixel trake možda neće osvježiti piksele tako brzo na CircuitPython kao Arduino. Ili projekt koji ovisi o mnogim knjižnicama možda neće moći imati onoliko funkcionalnosti u odnosu na kod koji može biti optimiziran od strane prevodioca.

No to nije dovoljan razlog da se izbjegne CircuitPython. Razvojna brzina je toliko brža nego rješenje zasnovano na kompajleru kao što je Arduino koje je najbolje probati projekt u CircuitPython i kasnije optimizirati prema potrebi. Obično će se odvijati dovoljno brzo jer ljudi podcjenjuju brzinu računala.

Optimizacija nakon pisanja koda može se obaviti na tri osnovna načina:

1) u sam Python kod 2) dodavanjem dodatnih C funkcionalnosti u CircuitPython firmware kako je potrebno koristiti Python 3) kupujući brži hardver (Moorov zakon još uvijek utječe na brzinu procesora mikrokontrolera. + mhz.)

Dakle, dok postoje kompromisi, CircuitPython je obično pravo mjesto za početak.

Gdje netko može početi učiti CircuitPython? Pretpostavljam learn.adafruit.com, ali postoji li bilo gdje drugdje?

Trenutno najbolje mjesto za početak je vodič za proizvode Feather M0 Express i Gemma M0. Postoje različiti projekti na sustavu Learn koji već koriste CircuitPython (okvir za arkadne tipke, MPR121 touch control i LIS3DH vodič su tri). Tony će također ažurirati svoje starije MicroPython vodiče na CircuitPython, ali to je u tijeku. Ovaj će vodič, na primjer, biti ažuriran. Naši API dokumenti također su odlično mjesto za mnogo malih primjera. Konačno, opći Python tutoriali su vrlo korisni za početak rada sa svim ne-hardverskim stranama CircuitPythona.

Kako mislite da će taj potez utjecati na vašu zajednicu?

Mislim da će prijelaz na CircuitPython proširiti postojeću zajednicu Adafruit. To će dovesti više početnika na brod zbog njegove niže prepreke za ulazak. Savršeno se slaže s ugrađenom raznovrsnošću ploče kao što je CircuitPlayground Express. Takva jednostavnost korištenja omogućit će i više ljudi da doprinose našoj zajednici kroz projekte i knjižnice.

Postojeći članovi naše zajednice i dalje će nas vidjeti kako stvaramo inovativne proizvode i projekte. CircuitPython je samo jedan korak u poboljšanju iskustva softvera i hardvera otvorenog koda.

Njegova prva platforma koju je Adafruit sponzorirao (u odnosu na Arduino i Raspberry Pi koji imaju odvojene razvojne timove). To nam daje mogućnost da postavimo ton za novu jezgru razvojne zajednice, što je vrlo uzbudljivo. Svi naši novi projekti imaju Savez suradnika kao Kodeks ponašanja, koji je važan u očuvanju prijateljske, dobrodošlice i podržavajuće Adafruit zajednice dok se širimo na razvoj otvorenih izvora. Jezična zajednica Rust bila je velika inspiracija kako se projekt otvorenog koda može dobro izvoditi. Emily Dunham ima brojne sjajne priče o njima.

Nadajmo se da će ovaj napor dovesti do raznolikijeg broja suradnika u CircuitPython, CircuitPython knjižnicama i vodičima za učenje.

Udio

Ostavite Komentar