Arduino è uno dei primi esempi di hardware opensource: si tratta di una piattaforma per costruire sistemi in grado di “sentire” e “controllare” il mondo fisico, una piattaforma composta da una scheda elettronica basata su un microcontrollore e da un ambiente di sviluppo per scrivere il software che gestisce la scheda.
Arduino può essere utilizzato per progettare “oggetti” interattivi che gestiscano i segnali in ingresso provenienti da una serie di sensori e controllino una serie dispositivi periferici come una seria di luci, motori e altri output fisici.
Qualcosa in più.
Quanto sopra detto è ciò che un utente può subito percepire fra le qualità nel primo approccio verso la piattaforma Arduino: spero nel seguito che riuscirò a farvi innamorare.
La mia estrazione è prettamente elettronica, ho conosciuto i microcontrollori (in particolare gli Atmel) durante dei corsi universitari specifici, prima ne ho studiato l’architettura, poi ho cominciato a programmarli in Assembler. La prima difficoltà è stata quella di costruirmi un circuitino, a basso costo, che potesse programmare il microcontrollore per un uso privato e dunque non solo con l’ausilio dei più costosi kit di sviluppo. L’IDE AVRStudio permetteva di compilare e simulare il codice scritto e successivamente un piccolo software opensource, in DOS, permetteva di scaricare l’eseguibile nel microcontrollore.
Inizialmente ero a dir poco stupefatto; con circa 15 euro – 10 di microcontrollore (Atmel8535) e 5 di circuitino di programmazione – ero in grado di programmare un micro per la prima volta. Data la materia con ottimo voto mi son detto: “Ma perchè non andare oltre?!”
E lì son iniziati i primi problemi
Il linguaggio a basso livello
Programmare un microcontrollore con linguaggio a basso livello… non voglio certo fare di tutta l’erba un fascio come si suol dire, ma l’Assembler è a dir poco limitante. In verità quando si programma un micro, la prima cosa che bisogna chiedersi prima di scegliere il linguaggio di programmazione è: che grado di computazione e elaborazione dati ci stiamo proponendo di elaborare? Non vorrei che mi sentisse il mio professore di elettronica e dunque dico: in assembler possiamo fare tutto, ma è anche vero che è difficile e dispendioso in termini di tempo.
Sono arrivato alla conclusione appena detta quando, dopo aver dato la materia universitaria, ho continuato a voler fare piccoli progetti e mi son dedicato, in particolar modo, alla realizzazione di un piccolo circuito, dotato ovviamente di un micro, che comandasse un LCD. Conscevo solo l’assembler; mi son documentato e colgo l’occasione per ringraziare i vari forum del settore che mi hanno subito “dirottato”. Non si può pensare di scrivere il protocollo di comunicazione per un LCD Compatibile Hitachi HD44780 (per chi non li conoscesse son degli lcd solitamente 17X2 più noti e più facili da controllare) in Assembler se utilizzando il C come linguaggio di programmazione basta includere una libreria per poter fare tutte le operazioni più disparate con un lcd.
E fu così che studiai un po di C per microcontrollori; presi un libro dedicato e me lo spulciai per benino. L’IDE di sviluppo non cambiò molto, la simulazione fu più grossolana ma questo era ovvio (se pensiamo che una divisione in C si scrive in un rigo mentre in Assembler servono circa 40 righe di codice direi che ne è valsa la pena).
Da li in poi continuai nella programmazione in C. A volte utilizzavo l’assembler ma solo se avevo la necessità di far generare al mio micro particolari funzioni in cui la precisione temporale era necessaria; in questi casi dedicavo dei micro appositamente.
E poi l’arduino.
Circa ad inizio 2008 mi son avvicinato ad Arduino e ne ringrazio il realizzatore: Massimo Banzi. Perchè mi son avvicinato? Beh forse perchè l’uomo vuole sempre migliorarsi. In effetti è proprio così perchè se ai tempi universitari mi avessero detto che con un budget molto limitato e con un clock di 16 Mhz, potevo gestire memorie SD (Secure Digital), comunicare mediante cavo Ethernet, comunicare mediante protocollo I2C e gestire oltre 20 sensori ed attuatori, comunicare mediante protocollo WiFi o Zigbee etc etc, il tutto con un ambiente di sviluppo che permette la scrittura di codice e la programmazione, ad un costo alquanto ridotto… beh se qualcuno me lo avesse detto sei anni fa io… non ci avrei proprio creduto.