Da un paio d’anni, dopo una lunga pausa, mi sono riavvicinato all’elettronica grazie all’invenzione di un gruppo di persone capeggiate dal genio italiano Massimo Banzi: Arduino. Ma che cos’è Arduino, a cosa serve, come si utilizza? Si tratta di una scheda elettronica il cui comportamento è programmabile, e quindi rende molto più semplice inventare e realizzare dei prototipi elettronici. Inoltre riesce a combinare due delle mie passioni: elettronica e programmazione. Se a questo aggiungiamo che il progetto è completamente open-source (cosa rara nel mondo dell’hardware) potete capire come mai Arduino stia spopolando nel mondo.
Grazie all’apertura dello schema è possibile acquistare la versione originale prodotta in Italia (di elevatissima qualità produttiva) oppure una delle innumerevoli imitazioni legali di produzione, quasi sempre, taiwanese. La versione che vedete nelle foto è quella denominata Freeduino. Dopo alcune esperienze comunque la mia opinione è che vale la pena di spendere qualche euro in più per la versione originale italiana, in quanto le saldature sono nettamente migliori.
Per utilizzare questa scheda è necessario scaricare gratuitamente dal sito www.arduino.cc l’ambiente di sviluppo che include anche i drivers (Windows, Mac, o Linux). Una volta installato tutto possiamo scrivere, nall’apposito editor, il programma (detto “scketch”) che definirà il comportamento del nostro Arduino. Collegata la scheda al computer tramite un normale cavo usb, selezioniamo dal menù Tools\Board la tipologia di scheda che stiamo utilizzando, e da Tools\Serial port scegliamo la porta di comunicazione a cui è collegato Arduino. Infine dal menù File eseguiamo il comando “Upload to I/O Board”. Alcune luci sulla nostra scheda lampeggeranno fino a quando sarà pronta per eseguire i comandi impartitigli. Ma che comandi possiamo dargli e come? Sul come avrete ormai capito che viene utilizzato un vero e proprio linguaggio di programmazione chiamato “processing”. Se sapete programmare in C+, C#, Java, Visual Basic, Pascal, o un qualsiasi altro linguaggio, riuscirete a lavorare in Processing in men che non si dica semplicemente esaminando alcuni degli innumerevoli esempi che trovate in rete. Inoltre se siete già dei programmatori con Arduino dovrete usare i soliti principi di input e output. Infatti questa scheda presenta una serie di connettori (“pin”), 14 analogici (numerati da 0 a 13) e 6 digitali (da 0 a 5), che possono funzionare sia come input che come output della scheda. In pratica con il nostro codice possiamo definire cosa Arduino deve dare in output quando riceve determinati input. Tanto per darvi un’idea in questo tutorial mostrerò come Arduino possa far accendere una piccola luce (Led) collegata al piedino numero 13 quando viene applicata una tensione sul piedino 7. Se volete realizzare questo mini progetto avete bisogno di:
- una scheda Arduino (o compatibile) e relativo cavo usb
- un led
- una resistenza da 10khom (strisce marrone, nero, arancione, oro)
- un sottile cavetto elettrico (il tipo per breadbord risulta il più comodo perchè ha dei puntali già collegati)
I numeri nella parte alta indicano i connettori di input/output digitali (ovvero quelli che leggono uno stato di 0 e diverso da 0), mentre quelli in basso sono i connettori analogici (leggono tensioni variabili tra 0 e 5V).
Ho connesso il led inserendo il terminale lungo nel connettore 13 e quello più corto in quello contrassegnato GND (ground, massa, terra).
Nel momento in cui Arduino darà in output sul connettore 13 una tensione maggiore di 0 il led si accenderà.
Tramite la resistenza da 10 khom ho collegato il connettore 7 al connettore GND in basso. In questo modo sappiamo che in una situazione normale sul connettore 7 c’è una tensione di 0 volt.
Ho collegato un estremo del cavetto al connettore 5v.
Il codice di esempio è questo, completo di commenti esplicativi:
// Questa routine viene eseguita ogni qualvolta la scheda viene accesa o resettata
void setup() {
pinMode(7, INPUT); //indica che il connettore digitale 7 sarà utilizzato come INPUT
pinMode(13, OUTPUT); //indica che il connettore digitale 13 sarà utilizzato come OUTPUT
}
//Questa routine viene eseguita in continuazione appena terminata la routine di setup
void loop() {
int sensorValue = digitalRead(7); //legge il valore presente sul connettore 7.
//Tale valore può essere LOW (tensione ugule a 0)
//oppure HIGH (tensione maggiore di 0)
if(sensorValue==HIGH){ //se sul connettore 7 c’è una tensione maggiore di 0
digitalWrite(13, HIGH); //viene data in output sul connettore 13 una tensione di 5V
}
else //altrimenti se la tensione sul pin 7 è 0
{
digitalWrite(13, LOW); //sul pin 13 viene data una tensione di 0 volt.
}
}
Fatto l’upload sulla scheda del precedente programma il led rimane spento, ma se appoggiamo l’altra estremità del cavetto elettrico sul terminale della resistenza collegato al pin 7, staremo dando in input una tensione di 5volts e quindi il led si accende.
Appena togliamo il cavetto il led si spegne.
Il bello è che, una volta programmata, la scheda può essere scollegata dal computer e possiamo alimentarla con una normale batteria da 9v oppure con un alimentatore esterno. Per sfruttare l’alimentazione esterna nei modelli più vecchi dovrete spostare un piccolo jumper sulla scheda. Il programma è ormai memorizzato all’interno della scheda, ma si può riprogrammare ogni volta che si vuole.
Il circuito presentato non ha una grande utilità, ma presenta nella maniera più semplice possibile i concetti di input e output in Arduino utilizzando un numero di componenti davvero basso e che quindi può essere realizzato da tutti. E’ possibile utilizzare come input sensori per la luce, per le temperature, di pressione, di posizione, di prossimità, a ultrasuoni, etc. Come output potreste collegare motori elettrici, luci, cicaline, etc. Inoltre, lasciando Arduino collegato al pc tramite cavo usb, potete avere applicazioni scritte in un qualsiasi linguaggio che comunicano con la scheda tramite comunicazione seriale. Immaginate ad esempio un chiosco informativo che si accende appena qualcuno si avvicina. Per gli amanti del .Net framework è disponibile una versione specifica chiamata Netduino anche se personalmente consiglio di supportare la versione originale (e multipiattaforma).
In giro per la rete trovate migliaia di progetti e tutorials. Vi consiglio di partire dalla pagina ufficiale degli esempi per poi cercare in giro altri progetti più specifici. Inoltre su Youtube trovate anche i video tutorials realizzati direttamente dal mitico creatore di Arduino: Massimo Banzi.
A questo indirizzo trovate i rivenditori ufficiali di Arduino UNO (prezzo circa 26 euro).
In un altro articolo mostro come ho sfruttato Arduino per realizzare un controller MIDI.