Arduino: Italia campione del mondo nell’elettronica open source

Vi ricordo che questo articolo è del 2010

Premessa: dopo l’estrema delusione della Nazionale ai mondiali, concedetemi almeno questo titolo e vediamo di tirarci su con l’Italia che “ci piace” e che ci da soddisfazione!

L’idea è folle. E’ assolutamente folle. E’ talmente folle che funziona alla grande e ha portato alla ribalta nel mondo dell’elettronica OpenSource il nome dell’Italia,  ma non quell’Italia che ci fanno vedere in TV, ma quella fatta di gente in gamba, che vale, che ha delle “idee in grado di cambiare il mondo”. Un motivo di vero orgoglio insomma.

La storia risale  a circa 5 anni fa quando un ingegnere italiano, Massimo Banzi, insegnante all’Interaction Design Institute di Ivrea, decide di creare per i propri studenti un sistema a microcontrollore assolutamente semplice da programmare (e quando dico semplice intendo: programmabile anche da qualcuno a digiuno completo nel campo della programmazione) e soprattutto economico e potente.  L’ingegnere si affida così proprio ad un suo studente, David Mellis, per la scrittura del linguaggio di programmazione da usare.

Non passa nemmeno una settimana: la creatura è nata e ha bisogno di un nome. Viene scelto “Arduino“, dal nome di un pub che si trovava nelle vicinanze dell’istituto. Il successo è immediato.

La storia completa la potete leggere sul magazine italiano on-line Wired a questo indirizzo.

Arduino è piccolo, semplice da far paura, potente, economico. Ma di cosa si tratta precisamente? E’ una di quelle che in molti chiamano “scheda di sviluppo”. Ha a bordo un microcontrollore della Atmel (acerrima rivale della Microchip).

Arduino duemilanove

Fin qui nulla di speciale direte voi. Ma… Aspettate un attimo!

Arduino viene fornito con un bootloader precaricato: il che vuol dire che non avrete bisogno di un programmatore. Basterà semplicemente l’IDE, scaricabile gratuitamente dal sito ufficiale, e collegare la scheda tramite USB al computer. Una volta acquistata la schedina (che ha un costo davvero irrisorio), in pratica non avrete bisogno di null’altro per cominciare a divertirvi!

Ok ma… Questa è una funzione che hanno tantissime altre schede, direte voi. Certo ma la filosofia alla base di Arduino è ben diversa. Il software che andrete a scaricare è un qualcosa di estremamente completo. Ed è il software di Arduino che fa la vera differenza con altri sistemi simili.

Innanzitutto partiamo col dire che non ci sono limitazioni di nessun genere: l’IDE, che è un ide completo (linguaggio di programmazione, software di programmazione, manualistica, esempi di programmazione, librerie gratuite a iosa già pronte) è gratis ma soprattutto è open source. Così come è open source anche il bootloader, che permette al microcontrollore di essere programmato senza bisogno di acquistare programmatori, e così come sono opern source gli schemi e tutto ciò che compone il progetto Arduino.

Capite adesso il perchè della definizione di “idea folle”? Forse non l’avete ancora afferrata del tutto perchè ho dimenticato di dire che tutto questo è liberamente (leggi: gratuitamente) utilizzabile da chicchessia, senza limitazione alcuna. Esempio: un giorno vi svegliate e decidete di mettervi a produrre schede basate su Arduino, modificando il software in base alle vostre idee. Non ve lo impedirà nessuno. L’unica (e dico unica) limitazione è che non potrete utilizzare il nome “Arduino” che è l’unico copyright.

Difatti in commerciono esistono centinaia di schede compatibili con Arduino e il cui nome finisce con -duino proprio a ricordare che sono dei derivati del progetto Arduino.

Immaginate ora lo scenario che si prospetta: è tutto open source (ma proprio tutto)… Il che vuol dire che in tutto il mondo ci saranno milioni di persone che ci lavorano su e rendono disponibili le proprie idee.

Arduino si programma in C++. Chi già mastica il C non avrà nessuna difficoltà ad utilizzarlo per la prima volta (il C++ usa la stessa sintassi del C e in più c’è l’utilizzo di “oggetti” ma vi assicuro che non è nulla di complicato). Anche se il C non lo avete mai nemmeno “annusato”, ci vorranno due secondi per trovare, nella vasta libreria di esempi, un programmino che faccia al caso vostro e basterà un minimo di lettura alla documentazione delle funzioni per capire come modificarlo in base alle proprie esigenze.

Io stesso sono rimasto spiazzato di fronte alla semplicità disarmante del sistema in se stesso.

Un’altra delle trovate geniali di Arduino è costituita dagli Shields (scudi). Si tratta in pratica di schede di espansione che si collegano su Arduino e ne estendono le funzionalità. Esistono shields per praticamente qualsiasi cosa: collegamento display, Xbee, Ethernet, interfacce MIDI, interfacce GPS con datalogger, controllo motori ecc ecc, tutte ad un prezzo accessibile e tutte con librerie già pronte ed utilizzabili senza limitazioni

Detto tra noi, lo shield per l’Ethernet, che costa intorno ai 36 euro, considerando che le librerie per usare l’Ethernet sono già pronte… Mi fa gola non poco e penso proprio che prossimamente ci farò un pensierino.

Shield XBee, come tutti gli altri shields si connette sopra la scheda Arduino rendendo comunque disponibili tutti connettori

Vi assicuro che per usare Arduino non sono necessari tutorial o libri, ne è necessario capire come è fatto un microcontrollore della Atmel: la documentazione fornita è completa e basta soltanto:

Primo utilizzo

Collegando Arduino al pc mediante USB (le vecchie versioni usavano la normale porta seriale DB9), verrà riconosciuto un nuovo dispositivo e nella maggior parte dei casi ne verrà richiesta l’installazione. In pratica Arduino ha a bordo il classico FT232 per l’emulazione di una seriale su porta USB, i drivers sono già inclusi nel file che avete scaricato (cartella “Drivers”), l’installazione segue quella che ho già illustrato in questo articolo in cui si faceva uso di un dispositivo basato sullo stesso chip.

Il primo esempio da compilare è sicuramente il led lampeggiante. Scaricato il software di Arduino, lanciamo Arduino.exe (ah! non c’è nulla da installare oltre ai drivers per la seriale), ci troveremo di fronte all’IDE:

L’IDE di Arduino chiama i progetti col nome “Sketch” (bozza).

I più attenti noteranno l’icona di Java. Difatti il software deriva da Processing, che è scritto in Java. Non dovrete nemmeno preoccupartìvi di avere Java installato sul pc in quanto è tutto già compreso nel download e senza la necessità di doverlo installare!

Andando nel menù File -> Examples noterete come l’IDE comprenda già numerosissimi esempi di programmazione dai quali prendere spunto. Apriamo Examples -> Digital -> Blink, che è il classico esempio di lampeggìo del led:

int ledPin =  13;    // LED connected to digital pin 13
 
// The setup() method runs once, when the sketch starts
 
void setup()   {
  // initialize the digital pin as an output:
  pinMode(ledPin, OUTPUT);
}
 
// the loop() method runs over and over again,
// as long as the Arduino has power
 
void loop()
{
  digitalWrite(ledPin, HIGH);   // set the LED on
  delay(1000);                  // wait for a second
  digitalWrite(ledPin, LOW);    // set the LED off
  delay(1000);                  // wait for a second
}

C’è innanzitutto da notare la cosa principale: ogni programma avrà sempre due funzioni: setup e loop. Setup contiene appunto i settaggi (o comunque tutte le funzioni da eseguire un’unica volta all’avvio) e loop equivale in pratica al main/while(1)  al quale noi programmatori di picmicro in C siamo abituati.

Per il resto, se capite un po’ di C, vedete che non c’è nulla di particolare. Arduino ha librerie già incluse che facilitano la stesura del codice: in questo esempio vediamo che pinMode setta il numero di pin, specificato come primo argomento (i numeri di pin sono serigrafati sulla scheda di Arduino), come uscita (OUTPUT). DigitalWrite serve per portare a livello alto o basso il pin specificato. E questo non potete negare che non si capisce chiaramente anche senza che si vada a leggere la documentazione!

E per caricarlo sulla scheda?

Hei! Stiamo parlando di Arduino! Qui non c’è bisogno di compilare, produrre l’HEX e quindi caricare con il programmatore! Basterà semplicemente tenere connesso Arduino e premere il pulsante Upload:

e quindi attendere il caricamento (o eventuali errori) nella finestra sottostante. La pressione del pulsantino Upload prevede comunque che abbiate correttamente settato la giusta porta seriale dal menù Tools->Serial port (almeno questo lo volete fare o siete davvero così pigri?). Il led lampeggerà da subito in quanto l’alimentazione viene prelevata dalla porta USB (ah dimenticavo! non c’è bisogno di collegare il led perchè Arduino già ha il led sulla porta 13).

Non dimenticate, inoltre, che essendo collegato su USB/Seriale, possiamo sempre sfruttare la comunicazione seriale come una sorta di Debug, inviando messaggi man mano che un programma viene eseguito (c’è difatti una voce che permette di controllare la seriale dal menù Tools -> Serial monitor e che agisce un po’ come hyperterminal su windows).

Alternative

Se volete, Arduino potete costruirvelo anche da soli dal momento che sono resi noti gli schemi e il bootloader. L’unico problema è che avrete bisogno di un programmatore almeno la prima volta per caricarvi il bootloader… Ma vi pare che il team di Arduino non aveva pensato anche a questo? A parte il fatto che pure il bootloader è già incluso nel corposo file che vi andate a scaricare e che c’è un’apposita funzione nell’IDE che vi permette di caricare il bootloader,  nella sezione “hacking” del sito ufficiale ci sono tutte le informazioni relative al bootloader: http://www.arduino.cc/en/Hacking/Bootloader e quindi anche varie soluzioni per ottenere il programmatore, tra cui quello più semplice è sicuramente quello con interfaccia parallela: http://arduino.cc/en/Hacking/ParallelProgrammer.

Ma non vi preoccupate perchè vengono anche venduti gli ATmega328 (sul quale è basata l’ultima versione di Arduino Duemilanove) già con il bootloader usato da Arduino. Qui ad esempio trovate un esempio per realizzarvi il vostro Arduino: http://www.droids.it/cmsvb4/content.php?229-1000Pads-Arduino-Compatible

Ovviamente, seguendo l’esempio di Arduino, sono nate tantissime altre schede che ne seguono la filosofia e addirittura alcune di queste possono usarne gli shields pur essendo basati su altri microcontrollori.

A titolo di esempio voglio citare solo quelli che fanno uso di PIC della Microchip:

Un elenco completo anche dei cloni di Arduino è disponibile su Wikipedia in lingua inglese: http://en.wikipedia.org/wiki/Arduino

 

Se questo articolo ti è piaciuto, condividilo su un social:
Se l'articolo ti è piaciuto o ti è stato utile, potresti dedicare un minuto a leggere questa pagina, dove ho elencato alcune cose che potrebbero farmi contento? Grazie :)