CircuitPython

CircuitPython
software
Logo
Logo
GenereInterprete Python (non in lista)
SviluppatoreAdafruit Industries
Data prima versione19 luglio 2017 [1]
Ultima versione9.2.1 (20 November 2024)
Sistema operativo
LinguaggioC
c (non in lista)
LicenzaLicenza MIT[2]
(licenza libera)
Sito webcircuitpython.org

CircuitPython [3] è un linguaggio di programmazione open source derivato, come fork, da MicroPython. Grazie alla sua semplicità è adatto anche per studenti e principianti ed è stato creato da Adafruit Industries con l'obiettivo di semplificare l'uso di Python su microcontrollori e dispositivi hardware specifici.

Basandosi su MicroPython, che è una versione ridotta di Python3, eredita molte delle caratteristiche di Python3, rendendo il linguaggio familiare e accessibile agli utenti che già conoscono questo linguaggio. CircuitPython è scritto in linguaggio C [3] che garantisce alte prestazioni e l'uso efficiente delle risorse su dispositivi a risorse limitate come i microcontrollori.

CircuitPython compila il codice sorgente Python in bytecode. Dopo che il codice sorgente è stato compilato in bytecode, l'interprete runtime di CircuitPython esegue questo bytecode sull'hardware del microcontrollore.

All'utente viene presentato un prompt interattivo noto come REPL (Read-Eval-Print Loop), uno strumento che permette agli utenti di interagire con l'interprete Python in tempo reale.

CircuitPython include una varietà di moduli che consentono agli sviluppatori di accedere sia all'hardware di basso livello dei dispositivi supportati che a librerie di livello superiore pensate per facilitare l'apprendimento dei principianti.[4]

CircuitPython è una variante di MicroPython, che è stata originariamente creata da Damien George.[5] La comunità di MicroPython continua a discutere [6] e sviluppare varianti di MicroPython, come CircuitPython.

CircuitPython punta a essere conforme a CPython, l'implementazione di riferimento del linguaggio di programmazione Python.[7] I programmi scritti per schede compatibili con CircuitPython potrebbero richiedere modifiche per funzionare correttamente su altre piattaforme come ad esempio Raspberry Pi.[8]

CircuitPython si sta affermando come alternativa per la programmazione dei microcontrollori, che tradizionalmente viene eseguita in linguaggi come C, C++ o assembly. Viene utilizzato anche per la creazione di piccoli dispositivi portatili per videogiochi.[9] Un esempio popolare è l'Adafruit PyGamer,[10] una console portatile programmabile che utilizza CircuitPython e consente di creare e giocare a videogiochi personalizzati.

Lo sviluppatore Chris Young ha portato il suo software di trasmissione e ricezione infrarossi su CircuitPython per facilitare l'interazione tra dispositivi e per aiutare le persone con problemi di accessibilità[11]

La comunità offre supporto agli utenti attraverso una chat room Discord e a un forum di supporto dedicato.[12] Nel 2018 è stato creato anche un account Twitter dedicato alle novità di CircuitPython.[13]

Settimanalmente, dal 15 novembre 2016, viene pubblicata da Adafruit la newsletter dal titolo "Python on Microcontrollers". Questa newsletter fornisce notizie, aggiornamenti e informazioni utili su CircuitPython, MicroPython e, in generale, sull'uso di Python su computer a scheda singola (SBC).[14]

Attraverso il subreddit di Reddit, "r/CircuitPython", vengono fornite notizie su CircuitPython e su progetti correlati. Attualmente conta circa 4.300 membri.[15]

Supporto hardware

[modifica | modifica wikitesto]

La versione 9.1.0 supporta una gamma di architetture, chiamate "porte" (ports).[16] Ogni "porta" è un'implementazione specifica del linguaggio per un determinato microcontrollore o famiglia di microcontrollori e richiede un adattamento del codice base di CircuitPython per sfruttare al meglio le caratteristiche hardware e le risorse del microcontrollore sottostante.

Le architetture supportate sono:

  • atmel-samd: Microchip SAMD21, SAMx5x
  • cxd56: Sensore di prossimità Sony
  • espressif: Espressif ESP32, ESP32-S2, ESP32-S3, ESP32-C2, ESP32-C3, ESP32-C6
  • nordic: Nordic nRF52840, nRF52833
  • Raspberry Pi: Raspberry Pi RP2040, RP2350
  • stm: famiglia di chip ST STM32F4

Queste porte sono considerate alpha e presenteranno bug e funzionalità mancanti:

  • broadcom: schede Raspberry Pi come RPi 4, RPi Zero 2W (bare metal)
  • litex: fomu
  • mimxrt10xx: NXP i.MX RT10xxx
  • renode: simulatore hardware
  • silabs: famiglia Silicon Labs MG24
  • stm: famiglie di chip ST non-STM32F4

Le versioni precedenti di CircuitPython supportavano il microcontrollore ESP8266, ma il suo supporto è stato abbandonato dalla versione 4.[17]

Blinka Software Abstraction Layer

[modifica | modifica wikitesto]

Blinka è una libreria di astrazione software sviluppata da Adafruit [18] per permettere l'uso delle API di CircuitPython su dispositivi che eseguono CPython o MicroPython. Questo significa che puoi utilizzare librerie e codice scritto per CircuitPython anche su altre piattaforme, come Raspberry Pi o PC desktop. Questo consente di sviluppare e testare i progetti CircuitPython su una piattaforma familiare (elencati su circuitpython.org), prima di trasferirli su un microcontrollore.[18]

Blinka è una libreria Python installabile tramite ''pip''. Questa libreria consente di eseguire codice scritto per CircuitPython su piattaforme che eseguono Linux, come Raspberry Pi, utilizzando il runtime CPython invece del runtime di CircuitPython. Questo significa che, mentre il codice utilizza le API di CircuitPython fornite da Blinka, l'esecuzione avviene tramite il runtime di CPython. Questo aspetto è ben documentato nella guida CircuitPython Libraries on Linux and Raspberry Pi..[19]

Moduli (Librerie)

[modifica | modifica wikitesto]

Adafruit può contare su una comunità molto attiva che ha contribuito con una vasta gamma di librerie software per più di 488 sensori e driver.[20][21]

  1. ^ Scott Shawcroft, CircuitPython 1.0.0!, su Adafruit Blog, Adafruit Industries, 19 luglio 2017. URL consultato il 1º maggio 2018.
  2. ^ Damien P. George, circuitpython/LICENSE, su GitHub, 4 maggio 2014. URL consultato il 1º maggio 2018.
  3. ^ a b GitHub, https://github.com/adafruit/circuitpython.
  4. ^ Documentazione su Read the docs, https://readthedocs.org/projects/circuitpython/.
  5. ^ Damien George, Damien P. George, su dpgeorge.net, Damien P. George, 20 maggio 2016. URL consultato il 1º maggio 2018.
  6. ^ Adafruit CircuitPython, su MicroPython Forum, MicroPython.org. URL consultato il 2 maggio 2018.
  7. ^ The Bald Engineer, https://www.baldengineer.com/circuit-python.html.
  8. ^ Element 14 Community, https://www.element14.com/community/thread/62774/l/can-i-use-circuitpython-code-on-my-raspberry?displayFullThread=true.
  9. ^ BitBucket, https://bitbucket.org/thesheep/circuitpython-lameboy.
  10. ^ (EN) Adafruit PyGamer, su circuitpython.org.
  11. ^ CY's Tech Talk, http://tech.cyborg5.com/2017/06/06/announcing-irlibcp-a-circuit-python-module-for-infrared-transmitting-and-receiving/.
  12. ^ Adafruit Support Forums, https://forums.adafruit.com/viewforum.php?f=60.
  13. ^ Twitter, https://twitter.com/CircuitPython.
  14. ^ Adafruit Daily, https://www.adafruitdaily.com/category/circuitpython/.
  15. ^ Reddit.com, https://www.reddit.com/r/circuitpython/.
  16. ^ GitHub, https://github.com/adafruit/circuitpython/releases/tag/9.1.0.
  17. ^ Adafruit.com, https://learn.adafruit.com/welcome-to-circuitpython/circuitpython-for-esp8266.
  18. ^ a b CircuitPython, https://circuitpython.org/blinka.
  19. ^ Adafruit Learning System, https://learn.adafruit.com/circuitpython-on-raspberrypi-linux.
  20. ^ adafruitdaily.com, https://www.adafruitdaily.com/2024/07/15/python-on-microcontrollers-newsletter-circuitpython-9-1-released-arduino-adopts-qwiic-and-so-much-more-circuitpython-python-micropython-thepsf-raspberry_pi/. URL consultato il 17 luglio 2024.
  21. ^ circuitpython.org, https://circuitpython.org/libraries. URL consultato il 17 luglio 2024.

Collegamenti esterni

[modifica | modifica wikitesto]
  Portale Software libero: accedi alle voci di Wikipedia che trattano di software libero