Nell'articolo precedente abbiamo fatto la conoscenza di Arduino ed esaminato le caratteristiche di base della board (quelle di "Arduino Uno") che possiamo sfruttare su tutte le evoluzioni come YUN o Intel Galileo. In questa lezione possiamo passare allo sviluppo del software introducendo l'ambiente di sviluppo (IDE) che ci permette di scrivere, compilare e trasferire i nostri programmi sulla scheda.
In primo luogo, bisogna sottolineare che il linguaggio di programmazione utilizzato per Arduino è il C/C++; si può parlare di entrambi i linguaggi, in quanto è possibile utilizzare o meno il supporto per le classi che il C++ mette a disposizione. Inoltre, il compilatore utilizzato è ovviamente dedicato per i microcontrollori della famiglia AVR della Atmel e fa parte di una ben definita toolchain GCC.
Con un compilatore ed un semplice editor di testo è sempre possibile scrivere e compilare un programma ma, per aumentare la produttività e ridurre i tempi di sviluppo, si preferisce sempre utilizzare un IDE dedicato (se disponibile); per fortuna con Arduino abbiamo questa possibilità!
Scaricare e installare l'IDE
Sul sito ufficiale di Arduino è disponibile la sezione Download , dalla quale possiamo scaricare l'IDE per il sistema operativo che utilizziamo (sono supportati Windows, Linux e Mac OS X). Oltre alla versione "Arduino 1.0.5" che ci interessa (versione corrente al momento della pubblicazione della guida), sono disponibili una versione Beta per la board "Arduino Yun", una versione dedicata per la Intel "Galileo" ed addirittura i sorgenti dell'ambiente, data la natura open source del progetto.
Nel caso di Windows, che utilizzeremo nel corso di questa guida, abbiamo la possibilità di scaricare un installer oppure un semplice file ZIP contenente tutto il necessario. Per evitare un inutile processo di installazione, la seconda soluzione è assolutamente la migliore; in questo modo ci basterà semplicemente cancellare la cartella nel caso in cui dovessimo aggiornare l'IDE oppur non volerlo più utilizzare.
Una volta scaricato ed estratto il contenuto del file ZIP, clicchiamo sul file eseguibile arduino.exe
che si trova nella cartella principale e dopo pochi secondi ci ritroveremo davanti ai nostri occhi l'unica finestra semplice ma essenziale dell'IDE completamente sviluppato in Java.
La prima operazione da fare consiste nel selezionare quale board della famiglia Arduino sarà utilizzata (nel nostro caso la "Arduino Uno") attraverso il menu "Strumenti à Tipo di Arduino".
Selezione del tipo di board Arduino da utilizzare
Prima di connettere la nostra board al PC attraverso il cavo USB, diamo uno sguardo all'IDE per visionare le funzionalità che ci mette a disposizione.
Librerie ed esempi
In primo luogo, nel menu File > Esempi
, abbiamo un accesso diretto a tutti gli sketch di esempio che sono disponibili nella cartella examples
dell'IDE e suddivisi per categoria in base alla funzionalità di Arduino che vogliamo esplorare.
Ci sono esempi sulla gestione dei pin della board, sull'uso del convertitore analogico/digitale, su tutti i tipi di connessione dalla seriale alla Ethernet e così via. Inoltre, attraverso il menu Sketch > Importa libreria ...
possiamo aggiungere al nostro programma una o più delle tante librerie che il progetto Arduino ci mette a disposizione (per accedere alla EEPROM, al controller Ethernet, alla SD, etc.).
Nel caso in cui sia stata sviluppata da terze parti (oppure da noi stessi) una libreria per la gestione di un particolare componente o device, è possibile aggiungerla attraverso la voce Add Library ...
.
L'operazione di import di una libreria non fa nient'altro che aggiungere all'interno del nostro file sorgente tutte le direttive #include
necessarie per l'utilizzo delle classi e delle funzioni che la libreria stessa ci mette a disposizione. Sarà l'IDE a farsi carico al momento della compilazione di includere nel firmware generato, non solo il nostro codice ma anche quello delle librerie utilizzate.
Compilazione
Sempre nel menu Sketch
è disponibile la voce Verifica/Compila
che ci permette di verificare la correttezza del codice (ovviamente da un punto di vista sintattico e dei riferimenti alle funzioni utilizzate) e quindi compilarlo ma senza caricarlo immediatamente sulla board.
I tasti di scelta rapida
Infine, nel menu Modifica
troviamo una serie di funzioni strettamente legate all'editor per poter eseguire semplicemente le operazioni di commento del codice, di ricerca, di copia/incolla e di indentazione.
Alcune delle operazioni più comuni sono accessibili attraverso una serie di pulsanti posti immediatamente al di sotto alla barra dei menu e che rispettivamente indicano :
- Verifica : esegue la verifica del codice scritto e relativa compilazione;
- Carica : esegue il caricamento sulla board del firmware compilato;
- Nuovo : permette di creare un nuovo sketch;
- Apri : permette di aprire uno sketch esistente;
- Salva : permette di salvare lo sketch correntemente aperto;
Pulsati per accesso diretto alle principali funzioni
Collegare la scheda
A questo punto possiamo passare al collegamento della nostra board al PC attraverso il cavo USB. Una volta collegata ed alimentata la scheda (anche solo attraverso il cavo USB), il PC dovrebbe riconoscere la presenza della board (es. "Arduino Uno") ma necessita dei driver per una corretta installazione.
All'interno della cartella drivers
dell'archivio che abbiamo scaricato è possibile trovare i due file eseguibili (dpinst-x86.exe
e dpinst-amd64.exe
), che permettono l'installazione della scheda rispettivamente su un sistema operativo a 32 e 64 bit.
Una volta completata l'installazione, le porte seriali già disponibili sul PC con in più quella appena installata e relativa alla board Arduino, saranno visibili nel menu Strumenti > Porta seriale
; dobbiamo ovviamente selezionare la porta giusta alla quale è collegata la scheda. Per verificare quale sia la porta seriale giusta, possiamo individuare tutte le porte installate nel sistema all'interno del pannello di controllo, dove troviamo una porta del tipo Arduino Uno (COMx), che altro non è che una porta seriale virtuale associata al convertitore USB-seriale a bordo della scheda.
Porta seriale virtuale assegnata alla board "Arduino Uno"
Impostazione porta seriale relativa alla board Arduino
Il debug a runtime
Una utilissima funzionalità dell'IDE è il monitor della porta seriale disponibile nella voce di menu Strumenti > Monitor seriale
. Come vedremo, tale strumento si rivelerà molto importante per il debug dei nostri programma a runtime.
Per limiti dovuti in primo luogo al tipo di microcontrollore, non abbiamo a disposizione le funzioni di debugging che utilizziamo di solito per altri tipi di applicazione. Quindi niente breakpoints, esecuzione step by step e visualizzazione in tempo reale del valore delle variabili.
Utilizzando la libreria relativa alla gestione della seriale, avremo la possibilità di inviare dei messaggi su di essa e quindi visualizzarli attraverso il monitor; solo in questo modo potremmo "debuggare" e sapere a runtime in quale punto del programma ci troviamo oppure qual è il valore assunto da una o più variabili. Anche se può apparire un po' rudimentale rappresenta l'unica soluzione in questo caso.
Monitor seriale utile per il debugging
Abbiamo acquisito tutte le conoscenze necessarie, dalla board all'IDE, per poter iniziare finalmente a sviluppare un'applicazione per Arduino. Nel prossimo articolo vedremo la struttura di uno sketch ed inizieremo a programmare con l'immancabile esempio "Hello World" che nel mondo embedded è tipicamente rappresentato da un programma che fa lampeggiare, in gergo "blinkare", un led!