Jeffrey Cross
Jeffrey Cross

CircuitPython käärmee tiensä Adafruit-laitteistoon

Äskettäisessä keskustelussa Adafruitin insinöörin Scott Shawcroftin kanssa sain todella innoissani. Hän selitti siirtymistään CircuitPythonin käyttämiseen tuotteisiinsa, samoin kuin tällaisen siirtymän tarjoamat edut. Yksi tärkeimmistä eduista on se, että liität laitteen vain USB-muistiin ja pudotat koodin siihen. IDE: tä ei tarvita. Tämä ei ole ensimmäinen kerta, kun olen nähnyt tämän ominaisuuden, mutta se, että Adafruitin valikoima huippuluokan prototyyppityökaluja saa tämän, sai minut erittäin innostuneeksi.

Mikä on CircuitPython?

CircuitPython on MicroPython-pohjainen mikrokontrolleri-laiteohjelmisto, joka helpottaa laitteiston ohjelmointia kuin koskaan. Toisin kuin Arduino, käyttäjän koodia ei tallenneta itse laiteohjelmistoon vaan pikemminkin sirun tai laudan pieneen tiedostojärjestelmään. Tämän seurauksena CircuitPython-ohjelmointi on yhtä helppoa kuin levyn kytkeminen tietokoneeseen ja tiedoston muokkaaminen näkyviin tulevassa asemassa. Lisäohjelmistoja ei tarvita aloittaaksesi.

Arduino kääntyi mullistamaan poistamalla kalliiden välkkyvien työkalujen tarpeen koodin vaihtamisen yhteydessä. CircuitPython siirtyy askeleen pidemmälle poistamalla tarpeen tietyille ajureille ja ohjelmistoille.

Jos joudut tiivistämään sen mahdollisimman yksinkertaisella tavalla, miten kuvailisit CircuitPythonia?

Mielestäni yksinkertaisin versio ei sisällä CircuitPythonin tai Pythonin tunnistamista erikseen. Se yksinkertaisesti yhdistää ohjelmistot ja laitteistot. Kytke laite sisään, avaa asema ja muokkaa sen koodia hakataksesi. Tiedoston tallentaminen aiheuttaa automaattisesti latauksen. Poistakaa se peukalolla ja vie se mukanasi. Koodi on osa laitetta.

Miksi olet päättänyt toteuttaa CircuitPythonin Adafruitin tuotteissa?

Minulle sen yksinkertainen se, että se on helpompaa kuin mitä tahansa muuta. CircuitPythonilla on erittäin alhainen este, koska se toimii ilman erikoisajureita (lukuun ottamatta sarjaa vanhempia Windows-käyttöjärjestelmiä). Se ei vaadi yhtä ohjelmaa ohjelmoimaan sitä, koska mikä tahansa tavallinen tekstieditori toimii. Kaikki sarjaohjelmat voivat muodostaa yhteyden siihen. Myöskään Internet-yhteyttä ei tarvitse ohjelmoida.

Tämä alhainen markkinoille pääsyn este tekee siitä täydellisen Adafruitille, koska menestymme opettelemalla aloittelijoille luoda ja kokeilla laitteistoa. CircuitPythonin kyky yhdistää koodi laitteistoon tekee siitä hackattavan kuin koskaan. Se ei ole enää kysymys siitä, että joku koodi lähetetään erikseen erikseen, ja sitten saada ne käyttöön tietyllä ohjelmistolla. Se toimii vain.

Aikovatko tuotteet edelleen Arduino IDE: n kanssa?

Joo! Uusia tuotteita, jotka perustuvat SAMD21 Cortex-M0 + mcu: iin, jotka tukevat CircuitPythonia, tukevat myös Arduino IDE ja Microsoft MakeCode. Mielestämme aloittelijoiden tekeminen aluksi MakeCodella ja sitten siirtyminen CircuitPythoniin ja Arduino IDE: hen on hyvä tapa auttaa nuoria koodereita kasvamaan hankkeen monimutkaisuuden myötä.

Miksi tätä menetelmää ei tehty aikaisemmin? Tai jos se oli, kuka meidän pitäisi kiittää perustusten perustamisesta?

Pythonin käynnistäminen upotetussa versiossa on kokeiltu aiemmin sellaisissa projekteissa kuin Python-on-a-Chip ja Owl. Nämä hankkeet eivät kuitenkaan löytäneet laajaa yleisöä. MicroPython teki lopulta kuitenkin Kickstarterin käynnistämisen. MicroPython-kehittäjät, kuten Damien George ja Paul Sokolovsky, ansaitsevat tunnustusta CircuitPythonin perustamisesta. He tekivät kovasti työtä Python 3.4: n uudelleenkäyttöä varten mikrokontrollerilla ja muokkaamalla koodia USB-massamuistin yli. Olemme yksinkertaisesti rakentaneet työnsä, jotta se toimisi laitteistollamme ja kiillottaa kokemuksen.

Minkälaisia ​​vaikeuksia on tuotteiden siirtämisessä CircuitPythonille? Onko tämä monimutkaista? Helppo? Ei iso juttu?

Tuotteiden siirtäminen CircuitPythonille merkitsee suurelta osin niiden siirtämistä 32-bittisiin mikrokontrollereihin. CircuitPython ei tue 8-bittisiä mikrokontrollereita, joten siirtyminen at328p: stä ja 32u4: stä SAMD21: ään mahdollistaa tämän.

MicroPythonilla ei sitä vastoin ollut olemassa tukea SAMD21: lle (joka on siru, jota käytetään kaikissa M0-levyissämme). SAMD21-tuen lisääminen MicroPythoniin johtaa CircuitPythonin luomiseen. MicroPythonilla oli nykyinen käsite "satamissa", jotka suunnilleen linjaavat mikrokontrolleriperheiden, kuten STM32-perheen ja SAMD-perheiden kanssa. Jokaisella perheellä on samanlainen Cortex M -ydin, mutta oheislaitteet, jotka toteuttavat protokollia, kuten USB, I2C ja SPI, vaihtelevat suuresti. Niinpä uuden mikrokontrolleriperheen tuen lisäämisen haaste on oheislaitteessa.

Olemme tehneet paljon työtä, jotta tämä olisi helpompaa tulevaisuudessa luomalla selkeä, funktioihin perustuva laitteisto-API. Tämän uuden sovellusliittymän avulla on helppo lisätä laitteistotukea osittain uuteen porttiin ja samalla varmistaa, että nykyiset ohjaimet toimivat edelleen. Tulevaisuudessa, kun laajennamme uusiin mikrokontrollereihin, aiomme lisätä satamien lisäämistä entisestään.

Oliko laitteistomuutoksia, jotta CircuitPython toimi tuotteissasi?

Adafruit Feather M0 express

Vaatimus on 32-bittinen mikrokontrolleri, mutta ennen CircuitPythonia meillä oli jo monipuolinen joukko SAMD21-pohjaisia ​​höyheniä. CircuitPythonin ensimmäinen kehitys tehtiin Feather M0 Basicillä ja Arduino Zerolla. CircuitPlayground, Metro, Gemma ja Trinket on päivitetty SAMD21: ään, joka mahdollistaa myös CircuitPythonin näillä alustoilla.

Parempi CircuitPython-kokemus on ottanut käyttöön Express-linjan. Näissä levyissä on ulkoiset SPI Flash-sirut, joita käytetään Python-koodin tallentamiseen ulkoisesti mikrokontrollerin sijaan. Tämä tarkoittaa, että lisää koodia voidaan tallentaa (2MB 64KB: n sijasta), ja laiteohjelmisto voi paljastaa enemmän toimintoja. Nämä olivat myös ensimmäiset levyt, joissa oli tila RGB-LED. Uudemmalla ei-Express Gemma M0: lla ja Trinket M0: lla on myös RGB-LED, mutta niillä ei ole ylimääräistä salamaa.

Onko CircuitPythonille epäkohtia, että ihmisten tulisi pitää mielessä, kun ne kehittyvät?

CircuitPythonin (ja Pythonin yleinen) suurin kompromissi on päätös priorisoida kehitysnopeus muistin jalanjäljen ja suoritusnopeuden suhteen. Vaikutus on se, että projektista riippuen voidaan saavuttaa muistiraja tai nopeusrajoitus, jota he eivät osu kootulla ratkaisulla, kuten Arduinolla. Esimerkiksi NeoPixel-liuskan animaatio ei välttämättä päivitä pikseleitä yhtä nopeasti CircuitPythonissa kuin Arduino. Tai projekti, joka riippuu monista kirjastoista, ei välttämättä pysty saamaan yhtä paljon toimintoja kuin koodin, jonka kääntäjä voi optimoida.

Se ei kuitenkaan riitä välttämään CircuitPythonia. Kehitysnopeus on niin paljon nopeampi kuin kääntäjäpohjainen ratkaisu, kuten Arduino, joka parhaimmillaan kokeilee hanketta kaikki CircuitPythonissa ja optimoi myöhemmin tarpeen mukaan. Yleensä se toimii riittävän nopeasti, koska ihmiset aliarvioivat kuinka nopeasti tietokoneet ovat.

Koodin kirjoittamisen jälkeen optimointi voidaan tehdä kolmella ensisijaisella tavalla:

1) itse Python-koodissa 2) lisäämällä C-piirteitä CircuitPython-laiteohjelmistoon, jota tarvitaan Python 3: n käyttämiseksi) ostamaan nopeampaa laitteistoa (Mooren laki vaikuttaa edelleen mikrokontrollerin suorittimien nopeuksiin. + mhz.)

Joten vaikka on olemassa kompromisseja, CircuitPython on yleensä oikea paikka aloittaa.

Mistä joku voi aloittaa CircuitPythonin oppimisen? Oletan oppivat.adafruit.com, mutta onko siellä muualla?

Tällä hetkellä paras paikka aloittaa Feather M0 Expressin ja Gemma M0: n tuotekohtaiset oppaat. Learn-järjestelmässä on useita projekteja, jotka hyödyntävät jo CircuitPythonia (arcade-painike, MPR121-kosketusohjain ja LIS3DH-opas ovat kolme). Tony aikoo myös päivittää vanhemmat MicroPython-oppaat CircuitPythonille, mutta se on teoksissa. Tämä opas esimerkiksi päivitetään. API-dokumenttimme ovat myös hyvä paikka monille pienille esimerkeille. Lopuksi, yleiset Python-opetusohjelmat ovat erittäin hyödyllisiä aloittamaan kaikki CircuitPythonin ei-laitteisto-puolet.

Miten sinusta tuntuu, että tämä muutos vaikuttaa yhteisönne?

Mielestäni siirtyminen CircuitPythoniin laajentaa nykyistä Adafruit-yhteisöä. Se tuo aluksella lisää aloittelijoita, koska se on matalampi markkinoille pääsyn este. Se sopii täydellisesti piirilevyn, kuten CircuitPlayground Expressin, monipuolisuuteen. Tämä helppokäyttöisyys mahdollistaa myös, että useammat ihmiset voivat osallistua takaisin yhteisömme kautta hankkeiden ja kirjastojen kautta.

Yhteisön nykyiset jäsenet näkevät jatkossakin innovatiivisia tuotteita ja projekteja. CircuitPython on vain yksi vaihe avoimen lähdekoodin ohjelmistojen ja laitteistojen kokemuksen parantamisessa.

Sen myös ensimmäinen ydinalusta Adafruit on sponsoroinut (verrattuna Arduinoon ja Raspberry Pi: iin, joissa on erilliset ydinosaamisryhmät). Tämä antaa meille mahdollisuuden asettaa sävy uudelle ydinkehitysyhteisölle, joka on erittäin jännittävä. Kaikissa uusissa projekteissamme on käytännesäännöt Contributor Covenant, joka on tärkeä tekijä ystävällisen, ystävällisen ja tukevan Adafruit-yhteisön säilyttämisessä, kun laajennamme avoimen lähdekoodin kehittämiseen. Rust-kieliyhteisö on ollut valtava inspiraatio siitä, miten avoimen lähdekoodin projekti voidaan suorittaa hyvin. Emily Dunhamilla on myös useita suuria keskusteluja niistä.

Toivottavasti tämä ponnistus johtaa entistä monipuolisempaan joukkoa CircuitPythonin, CircuitPythonin kirjastojen ja oppimisoppaiden osallistujia.

Osake

Jättänyt Kommenttia