Jeffrey Cross
Jeffrey Cross

CircuitPython orkar på Adafruit Hardware

I en ny diskussion med Scott Shawcroft, ingenjör på Adafruit, blev jag väldigt upphetsad. Han förklarade övergången till att använda CircuitPython på sina produkter, liksom de fördelar en sådan övergång skulle ge. En stor fördel är att du enkelt ansluter enheten och det visas som USB-lagring, så släpper du in din kod på den. Det finns inget behov av en IDE. Det här är inte första gången jag har sett den här funktionen, men det faktum att Adafruits urval av avancerade prototypverktyg kommer att få detta fick mig väldigt exalterad.

Vad är CircuitPython?

CircuitPython är en microcontroller-firmware baserad på MicroPython som gör det enklare än någonsin att programmera hårdvara. Till skillnad från Arduino lagras inte en användares kod i själva firmware, utan snarare på ett litet filsystem i chipet eller på brädet. Som ett resultat är programmering med CircuitPython lika enkel som att plugga in kortet i en dator och redigera en fil på den enhet som visas. Ingen ytterligare programvara behövs för att komma igång.

Arduino revolutionerades inbäddad genom att ta bort behovet av dyra blinkande verktyg vid byte av kod. CircuitPython går ett steg längre genom att ta bort behovet av specifika drivrutiner och programvara.

Om du skulle sammanfatta det på det enklaste sättet, hur skulle du beskriva CircuitPython?

Jag tror att den enklaste versionen inte innebär att du känner igen CircuitPython eller Python som separat alls. Det förenar helt enkelt programvara och hårdvara. Anslut en enhet, öppna enheten och redigera koden på den för att hacka. Om du sparar filen får den automatiskt att laddas om. Skruva ut den som en tumme och ta den med dig. Koden är en del av enheten.

Varför har du valt att implementera CircuitPython i Adafruits produkter?

För mig är det helt enkelt det lättare än någonting annat där ute att använda. CircuitPython har ett mycket lågt hinder för inmatning eftersom det fungerar utan specialdrivrutiner (förutom seriell på äldre Windows). Det kräver inte något program för att programmera det som någon vanlig textredigerare kommer att fungera. Alla seriella program kan anslutas till det. Ingen internetanslutning krävs för att programmera det heller.

Den låga barriären för inträde gör den perfekt för Adafruit eftersom vi trivs på att undervisa nybörjare att skapa och experimentera med hårdvara. CircuitPythons förmåga att förena kod med hårdvara gör det mer hackable än någonsin. Det är inte längre ett problem att maila någon kod separat och sedan få dem att installeras med ett visst program. Det fungerar bara.

Kommer produkterna fortfarande att fungera med Arduino IDE?

ja! Nya produkter baserade på SAMD21 Cortex-M0 + mcu som stöder CircuitPython stöds också av Arduino IDE och Microsoft MakeCode. Vi tror att undervisa nybörjare med MakeCode och sedan gå vidare till CircuitPython och Arduino IDE är ett bra sätt att hjälpa unga kodare att växa med sin projektkomplexitet.

Varför har inte denna metod gjort tidigare? Eller om det var vem ska vi tacka för att lägga grunden?

Running Python på inbäddade har tidigare försökt med projekt som Python-on-a-Chip and Owl. Dessa projekt hittade emellertid inte en bred publik. MicroPython gjorde dock slutligen när de lanserade en Kickstarter. MicroPython-utvecklare, inklusive Damien George och Paul Sokolovsky, förtjänar kredit för att lägga grunden för CircuitPython. De gjorde det hårda arbetet med att omdirigera Python 3.4 på en mikrokontroller och redigera koden över USB-masslagring. Vi har helt enkelt byggt på sitt arbete för att få det att fungera på vår maskinvara och polera upplevelsen.

Vilken typ av svårigheter är det med att porta dina produkter till CircuitPython i första hand? Är det komplicerat? Lätt? Ingen stor grej?

Porting produkter till CircuitPython betyder i stor utsträckning att de flyttas till 32 bitars mikrokontroller. CircuitPython stöder inte 8-bitars mikrokontroller, så det går att flytta från at328p och 32u4 till SAMD21.

Omvänt hade MicroPython inte befintligt stöd för SAMD21 (vilket är chipet som används på alla våra M0-kort). Att lägga till SAMD21-stöd till MicroPython leder till att vi skapar CircuitPython. MicroPython hade en befintlig uppfattning om "hamnar", som ungefär motsvarar mikrokontrollerfamiljer som STM32-familjen och SAMD-familjerna. Varje familj har en liknande Cortex M-kärna, men kringutrustning som implementerar protokoll som USB, I2C och SPI varierar mycket. Så utmaningen att lägga till stöd för en ny mikrokontrollerfamilj ligger i det perifera stödet.

Vi har gjort mycket arbete för att underlätta detta i framtiden genom att skapa ett tydligt, funktionsorienterat hårdvaruprogram. Detta nya API gör det enkelt att lägga till hårdvaruhjälp i en ny port samtidigt som du hjälper till att se till att befintliga drivrutiner fortfarande fungerar. I framtiden, när vi expanderar till nya mikrokontroller, planerar vi att göra portar ännu enklare.

Var hårdvaruändringar nödvändiga för att CircuitPython ska fungera på dina produkter?

Adafruit Feather M0 express

Att ha en 32-bitars mikrokontroller är ett krav, men före CircuitPython hade vi redan en mångsidig uppsättning SAMD21-baserade fjädrar. Initial utveckling av CircuitPython gjordes på Feather M0 Basic och Arduino Zero. CircuitPlayground, Metro, Gemma och Trinket har uppdaterats till SAMD21, vilket möjliggör CircuitPython på dessa plattformar.

För en bättre CircuitPython-upplevelse har vi introducerat Express-raden av styrelser. Dessa brädor har externa SPI Flash-chips som används för att lagra Python-kod externt, istället för på mikrokontroller. Det betyder att mer kod kan lagras (2 MB istället för 64 KB) och själva firmware kan visa mer funktionalitet. Dessa var också de första styrelserna som har en status RGB LED. Den nyare icke-Express Gemma M0 och Trinket M0 har även RGB-LED men har inte extra blixt.

Finns det några nackdelar med CircuitPython att folk ska komma ihåg när de utvecklas?

Det största utbudet av CircuitPython (och Python i allmänhet) är beslutet att prioritera utvecklingshastigheten över minnesfotavtryck och exekveringshastighet. Påverkan är att man, beroende på projektet, kan slå en minnesgräns eller en hastighetsgräns som de inte skulle träffa med en kompilerad lösning som Arduino. En NeoPixel-stripsanimering kan till exempel inte uppdatera pixlarna lika snabbt på CircuitPython som Arduino. Eller ett projekt som beror på många bibliotek kanske inte kan ha lika mycket funktionalitet jämfört med kod som kan optimeras av en kompilator.

Det är inte anledning nog att undvika CircuitPython. Utvecklingshastigheten är så mycket snabbare än en kompilatorbaserad lösning som Arduino som är bäst att prova ett projekt allt i CircuitPython och optimera senare efter behov. Typiskt kommer det att springa tillräckligt snabbt eftersom folk underskattar hur snabbt datorer är.

Optimering efter att koden skrivits kan göras på tre primära sätt:

1) i Python-koden själv 2) genom att lägga till ytterligare C-funktionalitet i firmware för CircuitPython som behövs för att använda från Python 3) köpa snabbare hårdvara (Moores lag påverkar fortfarande mikrocontroller-CPU-hastigheter. SAMD21 är 48mhz men likadana microcontrollers körs på 200 + mhz.)

Så, medan det finns trade-offs, är CircuitPython vanligtvis rätt ställe att börja.

Var kan någon börja lära sig CircuitPython? Jag antar learn.adafruit.com, men är det någon annanstans?

För närvarande är det bästa stället att börja produktspecifika guider för Feather M0 Express och Gemma M0. Det finns en rad olika projekt på Learn-systemet, som utnyttjar CircuitPython redan (arkadknappslåda, MPR121 touch-kontroll och LIS3DH-guide är tre). Tony kommer också att uppdatera sina äldre MicroPython guider till CircuitPython, men det är i verken. Den här guiden kommer till exempel att uppdateras. Våra API-dokument är också ett bra ställe för massor av små exempel. Slutligen är allmänna Python-handledning mycket användbara för att komma igång med alla icke-hårdvaruella sidor av CircuitPython.

Hur tycker du att detta drag kommer att påverka ditt samhälle?

Jag tror att flytten mot CircuitPython kommer att expandera det existerande Adafruit-samhället. Det kommer att få fler nybörjare ombord på grund av dess lägre hinder för tillträde. Det är en perfekt match med den inbyggda mångsidigheten hos en styrelse som CircuitPlayground Express. Denna användarvänlighet kommer också att göra det möjligt för fler människor att bidra till vårt samhälle genom projekt och bibliotek.

Befintliga medlemmar i vårt samhälle fortsätter att se oss skapa innovativa produkter och projekt. CircuitPython är bara ett steg i att förbättra upplevelsen av open source-programvara och hårdvara.

Dess också den första kärnplattformen Adafruit har sponsrat (mot Arduino och Raspberry Pi som har separata kärnutvecklingsgrupper). Detta ger oss en möjlighet att ställa tonen för en ny kärnutvecklingsgemenskap, vilket är väldigt spännande. Alla våra nya projekt har bidragsavtalet som uppförandekod, vilket är viktigt för att hjälpa till att bevara det vänliga, välkomnande och stödjande Adafruit-samhället när vi utökar till mer öppen källkodsutveckling. Rostspråkgemenskapen har varit en stor inspiration för hur ett open source-projekt kan köras bra. Emily Dunham har ett antal bra samtal om dem också.

Förhoppningsvis kommer denna ansträngning att leda till en mer varierande uppsättning bidragsgivare till CircuitPython, CircuitPython-bibliotek och Lär guider.

Del

Lämna En Kommentar