Quale linguaggio di programmazione dovresti usare per i tuoi progetti di microcontrollore? Esploriamo le quattro migliori opzioni.
Le schede di sviluppo per microcontrollori sono diventate un punto fermo nella comunità dei produttori. Questi dispositivi programmabili sono specificamente progettati per elaborare segnali di ingresso e uscita come un modo per controllare vari moduli e componenti come sensori, motori, LED e dispositivi di input umano (HID).
Ma prima, dovrai imparare un linguaggio di scripting che il microcontrollore può interpretare per programmare questi dispositivi. I linguaggi di microcontrollore più popolari di oggi includono MicroPython, CircuitPython, Arduino (C++ semplificato) e C. Ognuna di queste lingue ha i suoi pro e contro.
MicroPython
MicroPython è un'implementazione leggera del linguaggio di programmazione Python 3 progettata appositamente per i microcontrollori. È stato rilasciato nel 2013 dal Dr. Damien George per una prototipazione più rapida e per consentire alle persone che hanno già familiarità con Python di programmare microcontrollori con un linguaggio simile.
Caratteristiche
MicroPython è un eccellente linguaggio di scripting per i principianti che desiderano programmare microcontrollori. I neofiti senza esperienza di codifica lo troveranno facile da leggere e capire perché utilizza comandi leggibili dall'uomo in strutture semplici. Inoltre, utilizza un ambiente di runtime read-evaluate-print-loop (REPL), che consente un'esperienza di codifica interattiva.
Prestazione
Per programmare un microcontrollore utilizzando MicroPython, il firmware contenente l'interprete, le librerie e varie altre dipendenze viene visualizzato nel microcontrollore. Ciò consente al codice MicroPython di essere interpretato ed eseguito localmente dal microcontrollore, consentendo la prototipazione rapida poiché è possibile fornire feedback in tempo reale durante la codifica.
Tuttavia, a causa di come i processori eseguono il codice, i linguaggi interpretati come MicroPython saranno significativamente più lenti rispetto ai linguaggi compilati come C++. Quindi, per impostazione predefinita, sebbene la prototipazione possa essere molto più veloce, l'esecuzione del codice stessa è più lenta.
Compatibilità
Poiché MicroPython utilizza risorse locali per interpretare ed eseguire programmi, un microcontrollore deve avere un minimo di 256kB di memoria flash e 16kB di RAM. Sfortunatamente, alcune schede di sviluppo popolari come Arduino Uno non soddisfano le specifiche richieste. Tuttavia, ci sono ancora molte schede compatibili con MicroPython.
Attualmente, MicroPython supporta ufficialmente Pyboard, ESP32, ESP8266, Raspberry Pi Pico, BBC micro: bit, Schede di sviluppo STM32 e alcune schede Arduino come Nano 33 BLE, Nano RP2040, Giga R1 e Portenta H7.
Comunità e supporto
Dal suo lancio nel 2013, MicroPython da allora ha raccolto un considerevole seguito. I principianti dovrebbero divertirsi imparando MicroPython con la sua documentazione ben scritta. Se hai bisogno di ulteriore aiuto, MicroPython ha anche un forum della comunità in cui gli utenti condividono tutorial, idee e rispondono a tutti i tipi di problemi che potresti avere riguardo a MicroPython.
Arduino
Arduino è una popolare piattaforma open source rivolta principalmente agli appassionati di elettronica e fai-da-te. Il linguaggio di programmazione Arduino si basa sui linguaggi di programmazione C e C++. Il linguaggio Arduino è stato rilasciato nel 2005 da un gruppo di ingegneri, artisti e designer italiani.
Caratteristiche
Il linguaggio di programmazione Arduino utilizza una versione ridotta sia di C che di C++, facilitando l'apprendimento e lo sviluppo. L'esecuzione del codice utilizzando Arduino è significativamente più veloce rispetto alle sue controparti in linguaggio interpretato a causa della sua natura compilata. Inoltre, Arduino richiede solo una piccola quantità di risorse di sistema per funzionare, rendendolo compatibile con molte schede di sviluppo e microcontrollori.
Prestazione
A differenza di MicroPython e CircuitPython, Arduino è un linguaggio di programmazione compilato. Ciò significa che il codice viene prima compilato su un compilatore (già incluso nell'IDE di Arduino) e quindi eseguito come un intero programma dal microcontrollore.
Ciò migliora significativamente l'esecuzione del codice poiché il microcontrollore non deve utilizzare risorse per interpretare ogni riga di codice. Inoltre, la compilazione del programma lo traduce anche in codice macchina che il microcontrollore può eseguire nativamente senza installare dipendenze.
Ciò migliora significativamente la velocità di esecuzione del codice perché il microcontrollore può eseguire direttamente il programma senza allocare tempo e risorse hardware per tradurre il codice.
Schede supportate
Poiché la fase di compilazione viene eseguita tramite l'IDE, i microcontrollori possono avere solo 32kB di memoria flash e 2kB di RAM per funzionare. Quindi, a parte le schede Arduino, ci sono molte alternative alla scheda Arduino puoi usare per programmare con Arduino. Molte di queste schede utilizzano microcontrollori come ATmega328P, ATmega2560, SAMx8E, ESP8266, ESP32 e STM32.
Comunità e supporto
Essendo una piattaforma open source dal 2005, Arduino ha una delle migliori documentazioni disponibili. La Arduino Foundation fornisce attivamente aggiornamenti, supporto e nuovi entusiasmanti prodotti ogni anno. La comunità mondiale è anche una delle più attive nella condivisione di guide e idee e nella risposta a qualsiasi problema di risoluzione dei problemi che potresti incontrare. Con Arduino ti viene garantito un buon livello di supporto.
CircuitPython
CircuitPython è l'implementazione di Adafruit di Python 3, basata su MicroPython. Sebbene derivato da MicroPython, CircuitPython offre diversi miglioramenti per rendere l'apprendimento dei microcontrollori facile e divertente.
Caratteristiche
CircuitPython è stato creato per aiutare i principianti a imparare a programmare i microcontrollori. Per raggiungere questo obiettivo, CircuitPython fornisce diverse funzionalità, inclusa una codifica interattiva ambiente, librerie integrate, sintassi semplice (più semplice di MicroPython) e documentazione eccellente e guide.
Prestazione
Poiché CircuitPython è basato su MicroPython, ha molti degli stessi punti di forza e di debolezza. Il tempo di esecuzione del programma sarà leggermente più lento di MicroPython poiché CircuitPython fornisce più funzionalità e librerie extra. Tuttavia, la differenza è probabilmente impercettibile poiché CircuitPython richiede microcontrollori più capaci per funzionare.
Schede supportate
Con librerie integrate e una sintassi ancora più semplice, le schede di sviluppo di microcontrollori necessitano di più risorse per utilizzare CircuitPython. Come minimo, un microcontrollore deve disporre di un processore a 8 bit, 256 kB di memoria flash (consigliati 512 kB) e 32 kB di RAM (consigliati 64 kB). Attualmente, CircuitPython supporta oltre 390 schede di sviluppo, elencate in Sito ufficiale.
Comunità e supporto
Adafruit è noto per realizzare prodotti adatti ai principianti. Pertanto, puoi trovare documentazione e libri di facile comprensione su CircuitPython. Sebbene il linguaggio sia stato introdotto solo nel 2017, ha ancora un seguito più ampio di MicroPython, che puoi raggiungere tramite Discord e il forum ufficiale. Come la Arduino Foundation, Adafruit fornisce attivamente aggiornamenti, supporto e nuovi prodotti, il che significa che il supporto dovrebbe essere facile da trovare.
C
C è un linguaggio di programmazione generico sviluppato negli anni '70 da Dennis Ritchie ai Bell Labs. È un linguaggio di programmazione compilato che gli ingegneri e altri professionisti usano spesso per programmare microcontrollori con alti livelli di efficienza.
Caratteristiche
Sebbene sia un linguaggio più difficile da imparare, il vantaggio principale di C rispetto a MicroPython, CircuitPython e Arduino è il livello di velocità, efficienza, controllo e portabilità che offre. Questo rende C il linguaggio migliore per programmare entrambi i microcontrollori da utilizzare nei prodotti finiti.
Prestazione
A parte la sua grande portabilità, C è noto per le sue prestazioni. Può eseguire programmi più velocemente di Arduino, MicroPython e CircuitPython, anche con un microcontrollore con risorse inferiori. Questo perché C è un linguaggio più efficiente, che richiede meno dipendenze. Sebbene un programma Arduino compilato possa, come uno C, essere eseguito su hardware bare-metal, il suo codice macchina viene fornito precostituito con librerie e strumenti che riducono le prestazioni.
Schede supportate
Il linguaggio C è così portatile che può essere utilizzato per programmare praticamente qualsiasi microcontrollore basato su Arm. Inoltre, può essere utilizzato su schede basate sui microcontrollori Atmel AVR, STM32, PIC e MSP.
Comunità e supporto
Grazie alla sua robusta applicazione di programmazione e al fatto che ha già diversi decenni, il linguaggio di programmazione C ha una massiccia comunità online. Puoi facilmente trovare aiuto attraverso vari forum online, chat room e blog dedicati alla discussione e alla condivisione di idee sul linguaggio C.
Con quale lingua dovresti programmare?
Quindi, qual è il linguaggio migliore per programmare i microcontrollori? Dipende molto dalla persona. Il linguaggio C sarebbe il migliore per i professionisti che progettano l'elettronica per la produzione.
Coloro che non hanno esperienza di programmazione potrebbero voler iniziare con CircuitPython poiché ha funzionalità e documentazione che rendono l'apprendimento facile e divertente. Chi ha familiarità con Python troverà facile programmare microcontrollori con MicroPython.
E per la maggior parte della comunità DIY/maker, Arduino sarebbe ancora il miglior linguaggio per programmare microcontrollori, in quanto offre un eccezionale equilibrio tra prestazioni, portabilità, caratteristiche e Comunità.