Il FabLab Bergamo ha recentemente ospitato, nell’ambito del Arduino Day 2025, un talk dedicato all’esplorazione di Micropython nel mondo Arduino. La presentazione ha offerto una panoramica delle differenze tra i linguaggi di programmazione C e Python, e ha mostrato come Micropython possa essere utilizzato efficacemente nei progetti Arduino.
Obiettivi del Talk
L’obiettivo principale del talk era quello di:
- Accendere l’interesse dei makers per approfondire Micropython.
- Capire le differenze tra C e Python per applicazioni tipiche di progetti Arduino.
- Informare gli appassionati di Arduino della disponibilità di questa alternativa recente al C
Cos’è Micropython?
Micropython è una un’implementazione di Python 3 progettata per funzionare su microcontrollori (che notoriamente hanno risorse limitate), linguaggio noto in altri ambiti per la sua vasta collezione di librerie e la sua facilità d’uso e particolarmente adatto per l’analisi dei dati, l’intelligenza artificiale, lo scripting e l’automazione.
Micropython porta questi alcuni di questi vantaggi nel mondo dell’embedded, rendendo la programmazione su microcontrollori più accessibile e veloce.
Differenze tra C e Python
La presentazione ha illustrato le principali differenze tra C e Python, evidenziando i punti di forza e le debolezze di ciascun linguaggio:
- Velocità: C è trasformato in codice macchina ed è molto veloce, mentre Python è interpretato istruzione per istruzione ed è più lento (10 o 100 volte). Tuttavia, molti programmi usano pochissimo le capacità dei moderni microprocessori, pertanto questa “lentezza” teorica è, in pratica, insignifcante per molte applicazioni.
- Sintassi: La sintassi di C è complessa, mentre quella di Python è semplice e leggibile.
- Errori: Gli errori del compilatore sono complessi da interpretare, e spesso menzionano codice lontano del punto di errore. Python, invece, si ferma all’istruzione in errore, con un messaggio chiaro.
- Gestione della memoria: In C, il programmatore deve gestire la memoria manualmente, mentre Python utilizza un garbage collector automatico. Inoltre, il linguaggio Python fornisce ricche strutture di dati (come: liste, dizionari) in standard con molte comodità per l’uso (come : list comprehensions, range syntax).
- Applicazioni: C è generalmente utilizzato per applicazioni hardware, mentre Python è un linguaggio di programmazione generale.
Vantaggi Pedagogici di Python
Python è ampiamente riconosciuto per i suoi vantaggi pedagogici, che lo rendono ideale per l’insegnamento della programmazione:
- Facilità di apprendimento: La sintassi intuitiva di Python facilita l’apprendimento e l’uso del linguaggio, rendendolo ideale per chi si avvicina per la prima volta alla programmazione.
- Leggibilità: La sintassi chiara e concisa di Python permette agli sviluppatori di concentrarsi sulla risoluzione dei problemi piuttosto che sulla comprensione del linguaggio stesso.
- Versatilità: Python è un linguaggio multi-paradigma, che supporta la programmazione imperativa, orientata agli oggetti e funzionale.
- Ampia libreria standard: Python offre una vasta collezione di librerie che facilitano la realizzazione di progetti complessi in minor tempo.
Esempio: Blink a confronto
void setup() {
// configura il pin come segnale in uscita
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000); // aspetta 1000 ms
digitalWrite(LED_BUILTIN, LOW); // spegni il LED
delay(1000); // aspetta 1000 ms
}
import machine
import time
# Crea un oggetto Pin come segnale in uscita
led = machine.Pin(25, machine.Pin.OUT)
while True:
led.value(1) # Accendi il led
time.sleep(1) # Aspetta 1s
led.value(0) # Spegni il led
time.sleep(1) # Aspetta 1s
Alcune differenze notevoli : l’assenza di punto-virgola e delle parentesi grafe, l’uso di oggetti (come la variabile led) al posto di funzioni come digitalWrite e la gestione esplicita del loop infinito con while True.
Puoi trovare opzioni sulle funzioni legate all’hardware (machine) nella documentazione ufficiale di Micropython.
Come Provare Micropython con Wokwi
Wokwi è un simulatore online che permette di creare e testare progetti Micropython su diverse board, come il Raspberry Pi Pico e l’ESP32. Purtroppo le board come Nano BLE 33 e Giga non sono ancora disponibili su Wokwi.
Ecco come iniziare:
- Accedere a Wokwi: Visita il sito Wokwi e crea un account gratuito.
- Selezionare una board: Scegli la board su cui vuoi lavorare, come il Raspberry Pi Pico.
- Creare un nuovo progetto: Utilizza il template di progetto Micropython per iniziare.
- Scrivere il codice: Scrivi il tuo codice Micropython nel file
main.py
. Puoi includere moduli aggiuntivi e importare librerie. - Eseguire la simulazione: Avvia la simulazione per vedere il tuo codice in azione. Puoi utilizzare il REPL (Read-Eval-Print Loop) per testare comandi interattivi
Demo Pratica
Durante la presentazione, è stata eseguita una demo pratica utilizzando il simulatore online Wokwi e una board WOKWI. È stato mostrato come programmare in modo asincrono con Micropython, utilizzando coroutine per eseguire più task in parallelo, con 3 LED che lampeggiano in modo independente.
Wokwi – Online ESP32, STM32, Arduino Simulator
Questo approccio permette di gestire più operazioni contemporaneamente, lasciando i task logicamente indipendenti le une delle altre ; ad esempio la comunicazione Bluetooth / WiFi, l’interfaccia utente (come i pulsanti o gli schermi), la logica interna, gli attuatori.
Come installare Micropython sulla tua board?
Per iniziare, scarica e installa l’ultima versione di Thonny dal sito ufficiale.
- Collega la tua board compatibile tramite USB e avvia Thonny.
- Dal menu ““Strumenti”, seleziona “Seleziona interprete”
- Scegli l’opzione dedicata a MicroPython (ad esempio “MicroPython (ESP32)” o “Micropython (micro:bit)” o quello della tua board).
Scegli “install or update Micropython”
Seleziona la porta seriale corrispondente alla board
Seleziona la famiglia di processore (ESP32)
Seleziona la variante (board usata)
Seleziona la versione di Micropython
Fai INSTALL
- Al termine del processo, potrai scrivere ed eseguire script Python sulla tua board direttamente dall’ambiente Thonny, verificando la connessione tramite il REPL integrato.
Conclusioni
Micropython rappresenta un modo moderno e adatto all’insegnamento per utilizzare Arduino. È più veloce sviluppare con Micropython grazie a un flusso di lavoro che favorisce l’iterazione rapida (senza compilazione e/o con il REPL).
Inoltre, Python sono progettati con un’attenzione particolare all’insegnamento, rendendoli più semplici da usare e non limitanti. Tuttavia, è necessario utilizzare board moderne con microprocessori veloci e ampia memoria (>256 KB).
La presentazione è scaricabile qua sotto. Se ti interessa capirne di più, vieni a trovarci in FabLab !