Just another “Getting Started Analizzatore MIDI con Arduino 3 102 with Arduino” Progetto serra domotica open 112 source 13 Come scrivere una libreria per Arduino Inverter ad onda sinusoidale 121 Open Source con scheda 17 Sviluppo Software per Arduino Infineon Arduino motor shield con Atmel Studio Camera slider DIY low cost con 125 26 Programmare Arduino UNO con Arduino [Progetto completo] Atmel Studio Arduino Micro e BMP180 Bosch 135 34 Un encoder per Arduino per realizzare una Weather Station 43 SMAs: gestiamo questi materiali “intelligenti” con Progetto Giardiniere: Gestire 150 Arduino una serra domestica con Arduino Realizzazione di un rilevatore 51 Un telecomando TV per SONAR con Arduino 156 comandare un robot cingolato 64 Più sprint alla tua auto con G.F.A.rduino (Generatore Arduino e Processing 172 di Funzioni Arbitrarie con Arduino) La regolazione di temperatura 72 con Arduino Arduino abbassa il volume degli 178 spot TV! [Fai-Da-Te] MEMS, dalla teoria alla pratica: 80 usiamo un Accelerometro con Stazione Meteo Online con 185 Arduino Arduino 87 Temperature & pressure 195 Crepuscolare fai-da-te con monitoring con Arduino Arduino 95 Pilotare motori passo-passo 198 Realizziamo una Smart Sveglia con Arduino Bluetooth con Arduino Costruiamo un Voice Shield per 98 Controllare I/O multipli con 214 far parlare Arduino [Progetto pochi pin di Arduino Completo Open Source] {3 Ar d uino Speciale TUTORIAL Just another “Getting Started with Arduino” di Luigi Francesco Cerfeda Come già saprete, il web pullula di pagine ticoli denominati “Arduino DUE Tutorial”. dedicate ad Arduino. Facendo una breve Fatte queste considerazioni, mi sono chiesto ricerca, infatti, si trovano un’infinità di tuto- quale contributo avrei potuto dare alla commu- rial step-by-step e getting started che prepa- nity nello scrivere l’ennesimo articolo che riguar- rano il novizio maker all’utilizzo della scheda. dasse la mitica scheda made in Italy. Così ho Esistono anche moltissimi articoli che parlano deciso di descrivere semplicemente quali sono della storia, ormai diventata leggenda, di Ar- state le mie impressioni, le difficoltà che ho af- duino e della filosofia che c’è dietro la scelta di frontato e come le ho superate nel mio primo realizzare un progetto open source. Anche su approccio con la scheda, che in realtà coincide EOS, ovviamente, si è parlato a fondo di questi anche con la mia prima esperienza con l’elet- argomenti. In particolare Piero Boccadoro si sta tronica pratica. E qui entra in gioco il nostro occupando, in modo impeccabile ed esaustiva, Sheldon, il tizio, raffigurato nell’immagine di della scheda Arduino DUE nella sua serie di ar- apertura, che guarda con sospetto e un po’ di 4} Speciale Arduino - TUTORIAL timore la gente entusiasta che si appresta ad • Cos’è Arduino? entrare nell’Arduino Park. Cominciamo dal principio. Arduino da Dadone, Per chi non lo sapesse, Sheldon Lee Cooper, o Arduino da Pombia, conosciuto come Ardui- star della sit-com Big Bang Theory, è un geniale no d’Ivrea, fu re d’Italia dal 1004 al 1014..... No, scienziato e fisico teorico, completamente av- scherzo, non da così indietro ! verso all’ingegneria pratica, come a qualsiasi Il nome Arduino, del resto, con buona pace del altra attività umana che implichi uno sforzo fi- vecchio monarca, è diventato famoso in tutto il sico, a parte quella di premere ripetutamente i mondo solo mille anni dopo, grazie all’intuizio- pulsanti di un joystick o giocare alla Wii. ne di un team di tecnici ed ingegneri capitanati Come ogni altro tutorial, anche il mio avrà come da Massimo Banzi, professore all’Interaction destinatari i principianti dell’ingegneria pratica, Design Institute, un istituto di formazione post- ma la cosa nella quale si distinguerà da altri è laurea con sede a Ivrea, luogo fondamenta- che è stato scritto da un principiante dell’in- le per l’informatica italiana dove già la Olivetti gegneria pratica e non da un professionista e/o aveva un tempo il suo nucleo. smanettone navigato. Userò quindi un approc- Dal sito ufficiale: cio “newbie2newbie”, se mi passate il termine. “ Newbie, ahimè, non per scelta, come nel caso di Arduino è una piattaforma Sheldon, ma per un motivo che credo sia abba- di prototipazione elettronica stanza comune a tutti gli studenti di ingegneria open-source che si basa su in Italia, e cioè, la cronica e patologica mancan- hardware e software flessibili za di laboratori nelle università. e facili da usare. È stata creata Prima di iniziare a descrivere la mia esperien- per artisti, designer, hobbisti e za con la scheda, credo sia giusto dedicare due chiunque sia interessato a create righe alla storia di Arduino, cercando di fare oggetti o ambienti interattivi. il punto della situazione e delinearne ‘lo stato telecomunicazioni e le industrie dell’arte’ dopo più di 8 anni dalla sua nascita. mediche di utilizzo finale. Per affrontare questo argomento si è ormai cre- ato uno standard, il quale prevede l’articolazio- Arduino, dunque, è un framework open source ne del discorso sulla base di una pseudo-inter- che permette la prototipazione rapida e l’appren- vista con domande-risposte pensate ad hoc per dimento veloce dei principi fondamentali dell’e- spiegare, in un modo più user-friendly ed accat- lettronica e della programmazione. È composto tivante, i vari aspetti del progetto Arduino e dello da una piattaforma hardware alla quale viene af- scenario hardware open source. Anch’io farò lo fiancato un ambiente di sviluppo integrato (IDE) stesso. Le domande di rito sono: Cos’è Arduino? A cosa multipiattaforma (per Linux, Apple Macintosh serve? Chi lo può utilizzare? Perché ha avuto un e Windows), scritto in Java e derivato dall’IDE così grande successo? Si può guadagnare con creato per il linguaggio di programmazione Pro- l’Open Source? cessing e per il progetto Wiring. Bene, andiamo con ordine: Speciale Arduino - TUTORIAL {5 • A cosa serve? Chi lo può utilizzare? anche semplicemente ci mette mani!)”, questo Arduino è progettato per risultare volutamente sistema può sembrare una pazzia. E in effetti, semplice, essendo destinato ad introdurre alla come disse lo stesso Banzi, “c’è una sottile linea programmazione ed all’elettronica artisti, desi- di confine tra l’open source e la stupidità”. gner e costruttori di gadget fai-da-te. Il proget- In realtà si è visto che, sulla scia del software to, infatti, prese avvio nel 2005 con lo scopo di open source, anche l’hardware open source rendere disponibile agli studenti dell’Interaction funziona. Design Institute un dispositivo per il controllo dei Una cosa fondamentale da capire per tentare di loro progetti che fosse più economico rispetto ai motivare questo successo è che la forza di Ar- sistemi di prototipazione allora disponibili. duino non è la scheda, ma è la sua Comunità. Andando più a fondo nello studio dell’elettronica Banzi e il suo team, fondamentalmente, hanno di Arduino, si può notare che si tratta di una tec- capito che quando la gente ha accesso ai sor- nologia abbastanza semplice, o meglio si trat- genti dei progetti, suggerisce modifiche. E non ta di un progetto che mette insieme una serie solo. di tecnologie standard, già ampiamente usate Gli stessi utenti/clienti, a differenza che in pas- e testate da community di ingegneri o semplici sato, sanno già quello che vogliono e dunque makers di tutto il mondo. Non si tratta dunque di risulta più efficiente farlo progettare a loro. Per hi-tech, o di elettronica di ultima generazione. avere successo in futuro, i produttori di har- In un’ intervista, lo stesso Banzi afferma, addi- dware, infatti, dovranno cambiare radicalmente rittura, che l’elettronica di Arduino sia facilmen- mentalità. Il loro lavoro non è più soltanto quello te replicabile da un diplomato ITIS. Proprio per di avere idee, ma è altrettanto importante cer- questa sua apparente semplicità, il progetto ha care e trovare innovazioni dagli utenti, i quali, subìto nel tempo numerose critiche; sempre nel- in sostanza, costituiscono anche il loro servizio la stessa intervista Banzi ne cita una per tutte: tecnico, a disposizione 24 ore al giorno, 7 giorni “Arduino è uno strumento per donne, pittori e alla settimana, senza alcuna spesa, sfruttando artisti” (che poi dove starebbe la critica non l’ho al massimo le potenzialità di internet e del Web capito, vabbè). 2.0. Questo sistema inoltre garantisce molta più pubblicità (gratuita) di quanta ne avrebbe • Ma allora, perché ha avuto un così grande potuto ottenere un pezzo di hardware chiuso e successo? proprietario. Come già detto in precedenza, Arduino è un pro- L’unico elemento di proprietà intellettuale che getto completamente open source, quindi chiun- il gruppo si è riservato è stato il nome, che è di- que lo desidera può legalmente e gratuitamente ventato il suo marchio di fabbrica, in modo che scaricare lo schema elettrico e l’elenco dei com- il brand sia ampiamente riconoscibile e che non ponenti elettronici necessari e auto-costruirsi la venga danneggiato da copie di scarsa qualità. scheda nella versione originale o derivarne una È tutto questo che permette ad un progetto nato versione modificata e, addirittura, rivenderla. in Italia, da un azienda con relativamente po- Per chi è abituato al sistema closed source, che risorse, di poter essere competitivo a livel- dove tutto è brevettato e “guai a chi copia (o lo globale, e, addirittura, capace di indirizzare 6} Speciale Arduino - TUTORIAL il mercato dell’elettronica a basso costo verso branding giusto, si riesce a vincere nel mondo” la creazione di prodotti open source Arduino e che “non ci vuole il permesso di nessuno per compatibili, sia dal lato hardware che da quello rendere le cose eccezionali.” software. OK, BASTA CHIACCHIERE, PASSIA- • Ma, in sostanza, è possibile guadagnare MO A QUALCOSA DI PIÙ PRATICO, in un mondo di hardware open source? APPUNTO Riflettendo sulle considerazioni fatte prima sul Come scrissi nel commento che poi mi ha fatto perchè Arduino ha avuto questo grande succes- vincere la scheda, Arduino DUE mi servirebbe so, si può facilmente rispondere anche a questa per controllare un motor driver che a sua volta domanda. pilota i motori di un robot-rover 2WD in grado Proprio grazie alla comunità che che si crea in- di muoversi in modalità CW, CCW, short-brake, torno ad un progetto open source, in pratica, l’a- e stop. Tale robot-rover, poi, dovrebbe essere zienda produttrice può usufruire di un notevole usato come applicazione per una Brain Compu- taglio ai costi di ricerca e sviluppo. Si crea, ter Interface, e, nello specifico, funzionare come così, un circolo virtuoso in cui i clienti fanno una sorta di pre-prototipo di una carrozzina risparmiare l’azienda produttrice che a sua volta elettrica per disabili controllata grazie all’ela- può investire nella qualità del proprio prodotto e borazione e traduzione del segnale EEG (il tutto della documentazione offerta all’utente, che, in usando hardware e software open source). Un fin dei conti, vede abbondantemente ripagato il progetto ambizioso, certo, ma l’entusiasmo non suo sforzo iniziale. manca. Insomma sembra proprio sia un sistema più Non tutti quelli che, come me, sono alle prime equo, più democratico e, soprattutto, più so- stenibile rispetto al vecchio sistema closed. armi, però, hanno la fortuna di avere già ben in Nel caso di Arduino, poi, si è avuto questo gran- mente cosa realizzare con la propria scheda e, de successo, e parliamo di un successo vera- paradossalmente, la scelta del progetto inizia- mente enorme (basta vedere il numero di risul- le potrebbe essere già un ostacolo difficile da tati se si fa una ricerca su google), perchè, come superare. In effetti, come detto prima, esistono disse Emanuele in questo articolo, è un progetto un’infinità di getting started e per il novizio ma- molto cool, ormai un must-have per ogni nerd o ker questa abbondanza può essere a volte più smanettone che si rispetti. Per inciso, Arduino frustrante che utile. Di solito, chi è alle prime deriva dal nome germanico Hardwin che, com- armi non possiede né attrezzatura né compo- posto dalle radici hard (“forte”, “valoroso”) e win nentistica elettronica e deve cominciare ad al- (“amico”), significa “amico valoroso” ... insom- lestire il proprio laboratorio da zero. Si va quindi ma, GENIALE ! alla ricerca di un progetto che sia economico, Ad ogni modo, riprendendo ancora le parole di ben documentato, facile da realizzare ma che Banzi, Arduino è un grande esempio di come allo stesso tempo dia delle soddisfazioni nella “combinando gli elementi del design, di cui l’I- realizzazione ed eventualmente nel suo utilizzo. talia è maestra, con la tecnologia e creando il Speciale Arduino - TUTORIAL {7 Cercare un progetto che soddisfi queste caratte- ristiche richiede tanto tempo e una buona dose di pazienza, cosa che non tutti possiedono, so- prattutto se si è all’inizio e si commette l’errore di voler anticipare i tempi. C’è poi da considerare che una soluzione perfetta non esiste e ogni vol- ta che arriva a casa il materiale che si è ordinato si ha sempre qualche dubbio sulla bontà della scelta di un componente invece di un altro. In questo articolo cercherò di indirizzarvi su cosa comprare e in che modo procedere per re- • un cavo USB con connettore micro-USB alizzare un progetto economico che dia già una di tipo B, per il collegamento del proprio discreta soddisfazione, partendo dalle basi computer con Arduino attraverso la Pro- dell’elettronica e dell’informatica, in pratica dagli gramming port, la porta di default per il esempi già presenti nelle librerie di Arduino. caricamento degli sketch; nel mio caso Nello specifico, il progetto che propongo di rea- ho usato un connettore mini-USB con lizzare è un dispositivo interattivo che permet- adattatore da mini a micro; te di accendere e spegnere un LED in base al rilevamento della presenza di un ostacolo entro una certa distanza limite. La scelta di proporvi questo tipo di progetto deriva dalle considera- zioni fatte precedentemente e dal fatto che un sistema del genere sarà implementato nel mio progetto riguardo il robot-rover prototipo della carrozzina per disabili. Come facilmente com- prensibile, infatti, è indispensabile che un dispo- sitivo mobile che trasporta una persona disabile • un sensore di prossimità; nel mio caso lo abbia autonomamente la capacità di individuare Sharp GP2YOA21YK Infra Red Proximity la presenza di ostacoli e fermarsi o effettuare Sensor (economico, facilmente reperibile prontamente una manovra in modo da evitare e di cui esiste una ampia documentazio- lo scontro. ne). Il sensore ha un connettore Japanese Solderless Terminal (JST). Si consiglia, Cosa serve per realizzare il progetto? quindi, l’acquisto del relativo pigtail, il qua- Solo pochi componenti: le viene fornito completamente assembla- • il vostro Arduino, nel mio caso un Arduino to e si collega direttamente a molti sensori DUE, gentilmente offerto da Elettronica Sharp. Open Source; 8} Speciale Arduino - TUTORIAL • Se si usa Linux, come nel mio caso, non è necessario installare nessun driver. In caso si usassero altri sistemi operativi, seguite le istruzioni presenti sul sito uffi- ciale di Arduino. Connettendo il cavo USB al computer si accenderà il led ON della scheda ed il led L lampeggerà. • Effettuate il download dell’IDE per Ardui- • un computer su cui far girare il software no per il vostro sistema operativo. Ricordo Arduino IDE 1.5 BETA e per alimentare la che, in caso si possieda Arduino DUE, si scheda. deve necessariamente installare la ver- Come dispositivo di output useremo diretta- sione 1.5 (ancora in fase Beta). Se si usa mente il LED connesso al pin digitale 13 della Linux, una volta scaricato il pacchetto lo si scheda. Il suo funzionamento è molto semplice: deve estrarre in una directory qualsiasi e quando il pin è HIGH il LED è accesso, quando fare doppio click sul file arduino per aprire è LOW il LED è spento. È anche possibile ef- l’IDE. fettuare il “dimming” del LED, dato che il pin 13 • Una volta avviato il programma seleziona- è anche un output PWM. Un semplice sketch te: Strumenti > Porta seriale e scegliete sull’utilizzo del LED 13 è Blink, incluso tra gli la porta seriale. esempi dell’Arduino IDE. • Successivamente selezionate: Strumenti Se per voi è proprio la primissima volta con Ar- > Board > Arduino Due (Programming duino, sappiate che, per poter caricare gli sketch Port) all’interno del microcontrollore, bisogna esegui- • Ora siete pronti per caricare gli sketch su re prima queste semplici istruzioni: Arduino DUE. Proviamo subito lo sketch d’esempio Blink, per • Collegate Arduino al computer attraverso il quale, come già detto, non è necessario nes- il cavo USB. sun altro dispositivo o circuiteria esterna oltre che al nostro Arduino: • Da File > Esempi > 0.1Basics selezionia- mo Blink. Si aprirà una schermata conte- nente il seguente codice /* Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */ // Pin 13 has an LED connected on most Arduino boards. Speciale Arduino - TUTORIAL {9 invece, potremo vedere il LED 13 lampeg- // give it a name: giare. int led = 13; • Congratulazioni, Avete caricato corretta- // the setup routine runs once when you press reset: mente il vostro primo sketch!! void setup() { Come abbiamo detto prima, però, non ci limite- // initialize the digital pin as an output. remo a far lampeggiare un LED ma cercheremo pinMode(led, OUTPUT); di fargli cambiare stato in risposta all’elabora- } zione di informazioni che provengono da un di- // the loop routine runs over and over again forever: spositivo di input esterno, nel nostro caso da un void loop() { sensore di prossimità. digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) Guardando il datasheet del sensore Sharp delay(1000); // wait for a second GP2Y0A21YK possiamo notare che ha un’usci- digitalWrite(led, LOW); // turn the LED off by ta analogica e va, quindi, interfacciato ad uno making the voltage LOW delay(1000); // wait for a second dei 12 analog inputs presenti sulla scheda. Da notare che nonostante Arduino DUE abbia un } ADC a 12 bit (quindi con la capacità di avere 4096 differenti valori), per default la risoluzione • Verifichiamo il codice cliccando sul tasto è impostata a 10 bit in modo da garantire la com- in alto a sinistra “Verifica” (ovviamente patibilità con le altre schede Arduino che lavo- questa operazione è superflua in questo rano, appunto, a 10 bit. E’ comunque possibile caso!). cambiare la risoluzione dell’ADC con il comando • In caso non ci siano errori andiamo a cari- analogReadResolution(). care il codice premendo sul tasto “Carica”. Prima di collegare fisicamente il dispositivo cer- • Attendiamo qualche secondo e dovrebbe chiamo di ragionare sul codice da utilizzare per presentarsi una schermata come quella ri- la lettura di un input analogico. Anche in questo portata di seguito. Guardando la scheda, caso ci vengono incon- tro gli esempi presenti di default nell’IDE. In particolare, useremo lo sketch ReadAna- logVoltage, anch’esso selezionabile da File > Esempi > 0.1Basics. Il codice in questo caso è: 10} Speciale Arduino - TUTORIAL /* ReadAnalogVoltage Reads an analog input on pin 0, converts it to voltage, and prints the result to the serial monitor. Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground. This example code is in the public domain. */ // the setup routine runs once when you press reset: void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); } // the loop routine runs over and over again forever: void loop() { // read the input on analog pin 0: int sensorValue = analogRead(A0); // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V): float voltage = sensorValue * (5.0 / 1023.0); // print out the value you read: Serial.println(voltage); } Ora che sappiamo come far “brillare” un LED e come leggere un segnale analogico, possiamo unire i due sketch per ottenere quello che ci serve per il nostro progetto. Ed ecco qua: /* Semplice Sketch sull’utilizzo interattivo di un dispositvo di input (GP2YOA21YK Infra Red Proximity Sen- sor) con uno di output (LED sul Pin 13 di Arduino), adattando il codice degli Sketch di esempio ReadA- nalogVoltage e Blink e aggiungendo la struttura di controllo “if else” */ int sensorPin = 5; //analog pin 5 // Pin 13 has an LED connected on most Arduino boards. // give it a name: int led = 13; // the setup routine runs once when you press reset: void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); // initialize the digital pin as an output. pinMode(led, OUTPUT); } // the loop routine runs over and over again forever:
Description: