Il 2005 è l’anno in cui si fa risalire la nascita del movimento makers, in corrispondenza del lancio a febbraio della rivista Make, quando il primo numero è stato messo in vendita, Maker Media non esisteva ancora come società. A quel tempo, la rivista era gestita ancora dalla casa editrice O’Reilly Media fondata da Dale Dougherty.
Nel primo anno, Make diventò così popolare che si decise di portare il concetto di “show and tell” della rivista nel mondo reale con la prima Maker Faire Bay Area nel 2006 tenutasi al parco di San Mateo in California. Altro evento importante per il movimento makers fu il lancio nel 2007 della RepRap di Adrian Bowyer, la prima stampante 3D open source.
Python Embedded
Abbiamo così iniziato ad assistere al diffondersi di schede embedded indirizzate non solo ad un pubblico di specialisti, ma anche di appassionati. Questa svolta ha portato a progetti come MicroPython (2013), l’italiano Zerynth (2015) e CircuitPython (2017) che permettono di utilizzare Python anche con sistemi embedded.
Nel 2013 il fisico australiano Damien George , trasferitosi nel Regno Unito per un post-doc a Cambridge, avviò su KickStarter la campagna di crowdfunding “Micro Python: Python for microcontrollers” per finanziare la realizzazione di una scheda hardware PyBoard con la piattaforma STM-32F405RG in grado di implementare un compilatore Python 3.
Nonostante la facilità di apprendimento di Python non era ancora presente su sistemi embedded e fu così che a Damien venne l’idea di implementare Python su un micro-controllore per controllare le articolazioni di un robot per la RoboCup:
I needed something very small, but powerful — something with a lot of input and output lines that was able to precisely control motors for the robot’s joints
Lo scopo di MicroPython è di portare il meglio di Python sui sistemi embedded e allentare la dipendenza dallo sviluppo di software in C, anche se, sotto il cofano, MicroPython rimane scritto in C.
L’opportunità di una scheda di prototipazione programmabile in Python è stata colta dagli sviluppatori che hanno supportato la campagna di crowdfunding, superando l’obiettivo prefissato da Damien di 15.000$ in poco tempo raggiungendo i 97.803$.
Il successo di MicroPython ha attirato l’attenzione di Adafruit Industries che nel luglio del 2017 ha sviluppato una versione di MicroPython, chiamata CircuitPython con l’intento di agevolare la programmazione delle schede di sviluppo Adafruit a basso costo.
MicroPython e CircuitPython supportano set di hardware leggermente diversi, ad esempio CircuitPython supporta le schede Atmel SAM D21 e D51, ma ha abbandonato il supporto per ESP8266. A partire dalla versione 4.0, CircuitPython è basato sulla versione 1.9.4 di MicroPython.
MicroPython
MicroPython funziona allo stesso modo di CPython, analizza il notro script Python, lo compila in bytecode ed infine lo esegue in una virtual machine (VM). Questi passaggi occupano RAM durante la compilazione di Python in bytecode e durante l’esecuzione del bytecode con MicroPython VM.
Modules
MicroPython mira ad essere il più compatibile possibile con Python, ma è progettato per funzionare su devices dalle risorse hardware limitate.
>>> help("modules")
Tutte le versioni di MicroPython sono dotate di moduli per interagire con l’hardware, i pin GPIO, le periferiche e i componenti collegati tramite tali pin. Ad esempio i devices con funzionalità di rete, includeranno moduli per supportare queste funzionalità come WiFi, json, requests.
__main__ machine ubinascii ure
_boot math ucollections urequests
_onewire micropython ucryptolib urllib/urequest
_uasyncio neopixel uctypes uselect
_webrepl network uerrno usocket
apa102 ntptime uhashlib ussl
btree onewire uheapq ustruct
builtins port_diag uio usys
dht ssd1306 ujson utime
ds18x20 uarray umqtt/robust utimeq
esp uasyncio/__init__ umqtt/simple uwebsocket
flashbdev uasyncio/core uos uzlib
framebuf uasyncio/event upip webrepl
gc uasyncio/funcs upip_utarfile webrepl_setup
inisetup uasyncio/lock upysh websocket_helper
lwip uasyncio/stream urandom
Plus any modules on the filesystem
PyCharm: MicroPython Plug-in
Per iniziare a scrivere in Python sul micro-controllore possiamo utilizzare come ambiente di sviluppo PyCharm che comprende un editor, un tool di analisi, debugger e la possibilità di estenderne le funzionalità attraverso l’utilizzo di plug-in.
Andrey Vlasovskikh , team leader presso JetBrains, ha sviluppato un plug-in ufficiale per MicroPython con il quale ci sarà possibile interagire con i micro-controllori supportati come: ESP8266, PyBoard e BBC Micro:bit.
Sitografia
Pycharm
[1] JetBrains, Announcing the MicroPython Plugin for PyCharm, Blog, 15/01/2018
MicroPython
[1] Madhumita Venkataramanan, Micro Python: more powerful than Arduino, simpler than the Raspberry Pi, Wired, 06/12/2013
CircuitPython
[1] The many forks of MicroPython, Blog, 12/02/2020
[2] What is CircuitPython?, Blog, 19/12/2017
Viper/Zerynth
[1] Viper, la suite di sviluppo per microcontrollori, diventa Zerynth e arriva sul mercato, 02/03/2016