Creative Commons BY-NC-ND 2.5Questo sito e tutto il suo contenuto sono distribuiti sotto la licenza Creative Commons Attribuzione - Non Commerciale - Non opere derivate 2.5 Italia e con le condizioni d'uso definite nel disclaimer: siete pregati di leggere entrambi questi documenti prima di usufruire dei contenuti di questo sito. Per alcuni contenuti è necessaria una registrazione gratuita: non è necessario pagare e non è necessario accumulare punteggi per accedere agli articoli e scaricare i sorgenti. Basta solo essere onesti. Se volete che questo sito continui a rimanere attivo, a contribuire ogni giorno alla diffusione della cultura libera, non copiate il materiale per ripubblicarlo in altri luoghi : chi fa questo è solo un miserabile e un perdente. Se volete partecipare su settorezero e rendere le vostre idee, i vostri progetti, fruibili da tutti senza limitazioni, come dovrebbe essere in un paese civile e acculturato, potete farlo tranquillamente.

Arduino: Italia campione del mondo nell’elettronica open source

Autore: Giovanni Bernardo | Data pubblicazione: 25 giugno 2010
Categorie: Arduino

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

Articoli che potrebbero interessarti

L'articolo ti è piaciuto o ti è stato utile per risolvere un problema? Supporta e mantieni in vita questo sito, ci basta soltanto un caffè o una birra.
Se desiderate che settorezero continui a rimanere gratuito e fruibile da tutti, non copiate il nostro materiale e segnalateci se qualcuno lo fa

Puoi lasciare un commento, o un trackback dal tuo sito.

  1. #1 da Roberto il 26 giugno 2010

    Ottima introduzione ad un prodotto che ho (finora?) snobbato, pur avendolo visto dappertutto, su riviste di elettronica, su Youtube… Non per la filosofia di base (open source, copyleft…), che anzi sposo appieno; tra l’altro a differenza dei PIC, questi Atmel sembrerebbero più linux-friendly o quantomeno lo sono gli strumenti hardware (programmatori) e software (IDE) di contorno.

    Quello che mi lascia perplesso, da modestissimo programmatore PIC in assembler, è il fatto che, come dici tu, “non è necessario capire come è fatto un microcontrollore della Atmel”. Programmando in assembler DEVI capire come funziona un microcontroller ed è anzi una delle cose più interessanti.
    Se mi togli questo, mi togli metà del godimento! :-)
    Tanto vale che mi compri una scatola di Lego Mindstorm e faccio quasi lo stesso :-)

    L’idea che mi sono fatto è che queste Arduino servono a chi proviene dall’informatica, non sa nulla di elettronica e non vuole tenere in mano un saldatore, cioè più o meno la mia condizione di qualche mese fa :-))

    • #2 da Giovanni Bernardo il 26 giugno 2010

      Ma difatti è così: Arduino, come dice lo stesso ideatore, è stato pensato anche per artisti, cioè soprattutto per una fascia di persone che sono proprio a digiuno sia di elettronica che di informatica. Pure per me, figurati, si perde metà (anzi… di più) del godimento se non conosci l’architettura interna. Però non tutti la pensano così. E’ comunque un bell’esempio di ingegnerizzazione, non c’è che dire, e lo apprezzo un po’ perchè è italiano, un po’ perchè può essere un buon pretesto anche per i pigroni, ad entrare nel mondo dell’elettronica.

  2. #3 da Matrix77 il 3 agosto 2010

    Ciao,

    Bel tutorial….;-)
    Per quello che riguarda la mia opinione, penso che questa scheda potrebbe essere sfruttata per collaudare in velocità un dispositivo interfacciato e poi in seconda istanza, si potrà utilizzare quel dispositivo, con un hardware diverso, riscrivendo il software, con il codice che preferiamo.
    Ciao!!

  3. #4 da Nemo il 13 novembre 2010

    Articolo interessante. Il beneficio di avere a disposizione soluzioni di questo tipo è quella di non dover perdere tempo nella progettazione dei circuiti, durante la fase di prototipazione e sviluppo anche di complesse architetture. Soluzioni ben testate e funzionanti facilitano il riuso e la modularità, nonché la capacità di individuare i guasti e di isolarli in tempi più rapidi. Non siamo qui per reinventare sempre l’acqua calda o la ruota ma per andare oltre e nei progetti complessi non si può fare sempre tutto partendo da zero. Ben venga quindi la possibilità di utilizzare hardware di alto livello con costi ridotti e competenze contenute. Ciò non toglie che se si ha del tempo (e ovviamente la voglia) ci si può divertire ad usare saldatore e Assembler, sono il primo a dire che è un bellissimo passatempo.
    Un saluto a tutti

  4. #5 da Etti il 30 settembre 2011

    Ciao, articolo e presentazione interessante, ma non capisco essendo una scheda progettata in Italia perché mancano siti dove viene integrato progettazione, esperimenti, hardware, software, e set di istruzioni (perchè no!). In lingua Italiana ma non solo i siti anche libri spesso completi e ricchi di informazioni ma in altre lingue meno che in Italiano, capisco la globalizzazione ed essendo open source di comunicare in Inglese ma fattelo anche in Italiano visto che esiste in altre lingue come in Tedesco, Spagnolo. Ma essendo appunto libero a tutti non è detto che tutti conoscono l’inglese.
    Ovviamente è per mia pigrizia di leggere in altra lingua, ma spesso capita di fare degli errori proprio dovuti a un errore di interpretazione che potrebbe essere evitato, forse capita solo a me! pazienza nessuno è maestro ci si diventa.
    Comunque un ripasso del linguaggio C non guasta chi sa se esiste la possibilità di programmare in altri linguaggi come l’Assembler oppure in VisulBasic
    in VisualC/C++ o comunque con la programmazione orientata agli oggetti OBJ, parlando di oggetti me passato un flash programmare ad icone rappresentando l’ingresso, l’uscita, temporizzatori, ecc, un come la video grafica di certi sintetizzatori musicali o il Logo linguaggio usato per i banbini.
    Chi sa magari c’è già ma non save!
    Ciao…..!

    • #6 da Giovanni Bernardo il 30 settembre 2011

      Se Arduino fosse rimasto in Italia, patria dell’illegalità e della violazione di tutti i tipi di diritti, in Italia sarebbe morto, dimenticato da tutti. Lo sforzo, poi, è giusto farlo una volta sola. Dovendo scrivere documentazione ed esempi uno lo fa direttamente in inglese.

Devi essere collegato per lasciare un commento.

  1. Ancora nessun trackback
settorezero.com e il logo Zroid™ ©2007÷2012 Giovanni Bernardo - E' vietata la copia e la distribuzione anche parziale dei contenuti di questo sito web senza l'esplicito consenso dell'autore.
I contenuti di settorezero.com sono distribuiti sotto una licenza Creative Commons Attribuzione-Non Commerciale-Non Opere derivate 2.5 Italia a cui vanno aggiunte le condizioni d'uso definite nel disclaimer.
settorezero.com e tutti i suoi contenuti sono tutelati dalla legge sul diritto d'autore per cui i trasgressori sono perseguibili a norma di legge.
Creative Commons BY-NC-ND 2.5
Il tema di questo sito è basato sul tema Fusion per wordpress, realizzato originariamente da digitalnature e fa uso del plugin Wassup per il computo delle statistiche. Per contattare l'autore siete pregati di utilizzare la sezione contatti.
Per essere aggiornato con tutte le novità di settorezero.com seguici anche anche su Facebook Twitter Tumblr Blogspot Youtube.