Programmazione.it v6.4
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicità Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Forum
Il manuale di Arduino
Recensito da Pierpaolo Cira il 27-07-2011 ore 10:49
Copertina ISBN: 9788850330447
Autori: Maik Schmidt
Editore: Apogeo
Lingua: Italiano
Anno: 2011
Pagine: 262
Allegati: Nessuno
Sono sicuramente pochissimi quelli che ancora non conoscono Arduino, l'interessantissimo progetto made in Italy, che consiste in un piccolo, ma versatilissimo, microcontrollore e il relativo ambiente di sviluppo. Arduino ha attirato l'attenzione internazionale non solo per la sua predisposizione naturale all'integrazione con altri circuiti, sensori, motori e quant'altro, dimostrandosi così un ottimo strumento di prototipazione rapida; probabilmente ciò non è avvenuto nemmeno esclusivamente a causa del suo ridotto prezzo, se paragonato a molti degli equivalenti presenti sul mercato: l'idea veramente innovativa è stata, invece, quella di rendere sia l'hardware (quindi i vari componenti e il relativo schema elettrico) che il software (i sorgenti dell'IDE e delle varie librerie) disponibili con licenze open source, in modo che chiunque possa modificare, costruire o redistribuire qualsiasi componente del progetto.

Tutto ciò ha suscitato un enorme interesse anche da parte degli hobbisti, i quali, con poche decine di euro, sono diventati fieri possessori di una scheda, che purtroppo spesse volte non saranno in grado di usare nemmeno per una minima parte delle potenzialità che offre.

Io stesso, acquistando un paio d'anni fa la scheda insieme al testo Getting started with Arduino di Massimo Banzi – cofondatore del progetto Arduino – ho potuto constatare che il set di informazioni presenti tra il testo e il sito ufficiale era abbastanza ampio, ma soddisfava le fasce di utenza agli estremi, lasciando scoperto molto di quello che poteva servire a un utente con delle conoscenze di base sulla teoria dei circuiti che voleva utilizzare al meglio la scheda Arduino.

"Il manuale di Arduino" di Maik Schmidt, come vedremo in seguito, si affaccia sì sulle basi dell'elettrotecnica, ma solo per dare un senso logico a tutto il resto del testo, in modo da colmare questo potenziale gap di informazioni.

Prima di iniziare a esaminare il libro, ben tradotto in italiano da Claudio Persuati, spendiamo un'ultima nota sulla sua impostazione: essendo Maik Schmidt uno sviluppatore (con all'attivo un paio di testi su Ruby) il libro fornisce molte informazioni, sia sul codice scritto che sulla parte circuitale, con un pizzico di approfondimento in più sulle difficoltà che uno sviluppatore potrebbe incontrare quando si addentra nel mondo dell'elettronica.

"Il manuale di Arduino", da leggere in ordine come se ogni capitolo fosse solo l'introduzione al suo successivo, è suddiviso in 3 parti, comprendenti 10 capitoli e 4 appendici, che trattano tematiche differenti e che aumentano di complessità via via che si prosegue con la lettura.

La prima parte, "Iniziare a lavorare con Arduino", ha lo scopo di fornire a tutti le nozioni basilari per l'utilizzo di questo hardware da un punto di vista molto introduttivo. Il primo capitolo introduce concettualmente all'ambiente, soffermandosi poi su un esame delle componenti fisiche rilevanti per l'utilizzo della scheda e sull'installazione dell'IDE sui sistemi operativi supportati. Continua poi con le nozioni basilari per la scrittura di codice, la sua compilazione e il suo caricamento sulla scheda Arduino per far funzionare un led direttamente connesso.

Il secondo capitolo, "Le funzioni di Arduino", per prima cosa approfondisce l'utilizzo dell'IDE, addentrandosi nella gestione dei progetti o l'impostazione delle preferenze. In ogni modo, essp è prevalentemente concentrato sull'utilizzo delle comunicazioni seriali che avvengono, mediante connessione USB, con la porta di un computer, che potrà così leggere i dati prodotti e inviati dal processore della scheda, durante l'esecuzione del codice. Un trattamento basilare sulla teoria delle comunicazioni seriali, l'utilizzo di sistemi di monitoraggio dei dati in arrivo sul computer (sia tramite l'IDE Arduino che con altri strumenti) e una lista di osservazioni utili, che possono fungere da trampolino verso altri approfondimenti (l'integrazione con un componente UART) concludono questo capitolo e questa parte.

Il cuore di questo manuale è la seconda parte, intitolata, "Otto progetti Arduino". Come già detto, ogni capitolo tratta uno specifico argomento, ma non si è sottolineato che è veramente interessante il modo con cui ciò viene fatto: Maik Schmidt afferma che una persona ricorda il 5% di quello che ha sentito, il 10% di quello che ha scritto e il 95% di quello che ha provato personalmente; per questa considerazione, l'autore sceglie di trattare ogni argomento nel capitolo di riferimento ricorrendo alla realizzazione di uno o più progetti Arduino.

La struttura dei paragrafi è omogenea: si inizia con una breve introduzione a quanto si farà e verrà trattato, seguita da un eventuale paragrafo sugli argomenti teorici inerenti la natura del progetto e necessari a capire quello che praticamente si andrà a realizzare. Poi vi è una parte relativa a Cosa serve, che enumera la lista dei componenti hardware necessari alla realizzazione del progetto, con eventuali dettagli su alcuni componenti particolari, seguito dalla serie di paragrafi necessari a realizzare concretamente il prototipo e apprendere come e cosa si sta realizzando. Segue un paragrafo dal titolo "Cosa fare se non funziona?", che fornisce una serie di soluzioni ai problemi più frequenti che si possono riscontrare, a causa di errori comuni nel realizzare quelle specifiche operazioni. Ogni capitolo, infine, termina con esercizi per fornire (alcune volte inutili) spunti per dimostrare a se stessi di aver appreso l'argomento in questione, magari realizzando un nuovo progetto o migliorando quello appena fatto.

Una piccola eccezione si trova in "Il dado binario", il terzo capitolo, in cui vi è anche un'introduzione all'utilizzo della bread-bord. Il capitolo permette la realizzazione di un dado binario (ossia un generatore di numeri casuali da 1 a 6 inclusi, che su 3 led codifica in codice binario il risultato), insegnando l'utilizzo di led esterni e pulsanti. Così innanzitutto si mostra come collegare i 3 led necessari, con i relativi resistori, e poi si passa al codice per settare adeguatamente i pin di I/O digitale, generando un numero casuale e mostrandolo sui led. La versione successiva del programma integra l'utilizzo di un piccolo pulsante, collegato con resistenza di pull-down, per simulare ogni volta il lancio di un dado (anziché costringere l'utente ad agire sul reset della scheda). Ciò, però, viene reso possibile solo dopo aver studiato come far funzionare al meglio un pulsante, realizzando una classe (C++) immune sia alle pressioni prolungate del pulsante che agli eventuali "rimbalzi" di segnale, che si verificano durante il cambio di stato. Per rendere il capitolo un po' più divertente e iniziare a mostrare i vantaggi della programmazione a oggetti, la conclusione prende il nome di "Il gioco del dado": si utilizza il solito schema di led, ma con due pulsanti gestiti per mezzo della classe appena creata, che permettono di scommettere su un valore numerico e poi lanciare il dado per vedere se esce quel determinato valore; il tutto con logging sulla porta seriale.

Nel quarto capitolo, invece, si realizzerà una libreria per la generazione di un codice morsel. Il progetto, dopo la codifica di un Hello Word!, permetterà la realizzazione di un sistema in grado di leggere dati dalla tastiera del computer e rappresentarli, con un led e/o con un buzz, per mezzo della libreria in questione. A parte una piccola lezione di base sullo standard Morse, necessaria per poter realizzare correttamente alcuni aspetti come le tempistiche dei segnali, il cuore del capitolo vero e proprio verte sulla creazione di una libreria chiamata Telegraph, sulla sua inclusione nell'IDE e sul suo utilizzo all'interno di diversi progetti, oltre che sulla sua possibile distribuzione alla comunità open.

Le cose continuano a diventare divertenti e interessanti con il quinto capitolo intitolato "Misurare con i sensori il mondo che ci circonda". Questo capitolo si concentra sull'utilizzo di due tipi di sensori: uno a ultrasuoni di tipo digitale (che inviato un segnale, restituisce un valore logico rilevante quando questo è ritornato alla sorgente), e uno analogico per la temperatura (che restituisce un valore di tensione analogico, poi campionato su 10 bit dalla scheda Arduino). Con qualche piccola nozione utile di fisica si realizza, per prima cosa, un componente in grado di misurare la sua distanza dall'oggetto più vicino, grazie a una formula che coinvolge il tempo trascorso tra l'emissione e la ricezione del segnale sonoro in questione. Dopo aver realizzato un circuito per studiare il comportamento del sensore di temperatura, calcolandola in funzione del valore di tensione ricevuto, si unisce il tutto nel circuito finale. Si tratta di un misuratore di distanze, in centimetri, molto più preciso del primo, sia per l'utilizzo di numeri a virgola mobile (necessari seppur onerosi dal punto di vista computazionale) che per il fatto che il sensore di temperatura permette di avere una stima più accurata della misura effettuata con il solo sensore a ultrasuoni, in quanto il calcolo della distanza comprende anche la velocità del suono, proporzionale alla temperatura. Questo fondamentale capitolo non finisce qui: la sua seconda parte si concentra sulla ricezione e l'utilizzo di dati rilevati dal sensore all'interno di un'applicazione per computer. Nonostante sia abbastanza evidente che qualsiasi linguaggio di programmazione in grado di interagire con una porta seriale sia adatto allo scopo, l'autore preferisce basare tutto il testo su Processing, un linguaggio di programmazione open source basato su Java e in grado di esportare applet per JVM, che semplifica enormemente l'utilizzo di funzioni multimediali ed è molto apprezzato nell'ambiente dell'elettronica. Fornito con un IDE su cui è basato quello per Arduino, questo linguaggio viene utilizzato nel capitolo per ricevere, tramite porta seriale, i dati dell'applicazione in formato CSV e rappresentarli graficamente sotto forma di una pallina che ruota intorno a un punto, a una distanza proporzionale a quella rilevata da esso.

Il sensore da integrare nel sesto capitolo è invece un accelerometro su 3 dimensioni, al fine di poter realizzare un game controller sensibile al movimento. Dopo il solito schema per il cablaggio del circuito e il consiglio di utilizzare una Proto Shield per comodità, si vede come tarare e gestire i dati ricevuti da un economico, ma affidabile accelerometro. Questo, combinato con un pulsante, diventa un game controller sensibile al movimento in grado di inviare i dati sulla porta seriale. Tali dati verranno utilizzati per comandare un gioco implementato in Processing, che clona il classico Breakout: una palla che rimbalza e abbatte dei mattoncini sullo scherno e che non deve essere fatta cadere grazie a una barra orizzontale comandata dal player.

E con lo stesso spirito ludico sembra si continui con "Giocherellare con il controller Wii Nunchuk", il settimo capitolo. In realtà più che creare un gioco, visto che alla fine si realizzerà (con Processing e le API 3D) un cubo che viene fatto ruotare tramite il controller Nunchuk della console di gioco Nintendo Wii, lo scopo del capitolo è quello di dimostrare come interagire con dispositivi già esistenti per mezzo delle connessioni che mettono a disposizione, anziché crearne di nuovi. Nello specifico il Nunchuck effettua le comunicazioni per mezzo del protocollo I2C e ci si occupa proprio di poter interpretare quei dati e inviarli sulla propria seriale per permettere al Processing l'esecuzione di quanto detto; chiaramente dopo aver esaminato il significato dei vari byte ricevuti dal controller.

Un interessante argomento è affrontato nell'ottavo capitolo, che dedica l'attenzione al networking con Arduino, parlando di come poter far comunicare la scheda con la rete Internet, sia tramite l'invio di dati a un software per computer che farà il resto, sia per mezzo di una Ethernet shield per Arduino. La prima modalità viene usata per creare un monitor, il quale, tramite la libreria Twitter4J per Processing, invia un messaggio sul proprio account Twitter ogni qualvolta una certa temperatura viene superata e rilevata. Il resto del capitolo, invece, prosegue utilizzando la Ethernet shield: si vede prima come funziona il comando telnet insieme ad altre basi del networking, per poi integrare la libreria per il networking Ethernet.h e procedere. Il primo esempio si integra con un server DAYTIME per visualizzare i dati ricevuti, il secondo realizza una libreria per l'invio di e-mail (implementando il già esaminato metodo tramite telnet) e ancora, dopo un progetto che rileva il movimento per mezzo di un sensore a infrarossi passivo, si assembla il tutto. Il risultato è un rudimentale, ma efficace sistema anti-intrusione stand-alone, che sfruttando le classi create durante il capitolo, invia un'e-mail connettendosi direttamente al mail server non appena viene rilevato un movimento.

Relativo al networking è anche il progetto di un telecomando universale, sviluppato nel nono capitolo, che funziona per mezzo di un ricevitore o di un led a infrarossi. A parte la teoria sul funzionamento generico di un telecomando, si vede innanzitutto come usare il ricevitore per acquisire i segnali, anche grazie alla libreria IRremote, che supporta vari protocolli di comunicazione. Subito dopo, si utilizza il trasmettitore per comunicare con un dispositivo, sempre mediante la stessa libreria, dopo aver ricevuto il comando tramite porta seriale.

La parte relativa al networking entra in gioco qui, quando si decide di sostituire l'interfaccia utente dal monitor di una seriale al Web (grazie a un plug-in per browser web in grado di permettere l'accesso alle porte seriali da parte di JavaScript). La seconda modifica al progetto, invece, fa sì che il software caricato nel processore della scheda Arduino funga da server web REST collegato alla Ethernet shield, in modo da poter essere controllato da qualsiasi dispositivo in possesso di un browser nella rete domestica.

Infine abbiamo il decimo capitolo; se qualcuno intanto ha storto il naso pensando che non fosse un argomento trattato, il controllo dei motori con Arduino è qui spiegato: vengono affrontate brevemente le differenze nell'utilizzo di motori in continua, servomotori e motori passo-passo, e l'autore realizza brevemente un simpatico progetto con un servo. Esso comanderà un indicatore in grado di puntare la freccia sul nome di qualcuno per dargli la colpa di qualcosa (e che potrebbe essere facilmente integrato in sistemi di Continuous Integration).

Inizia, così, la terza parte del testo contenente le appendici: una trentina di pagine di approfondimenti che iniziano con l'Appendice A, "Elettronica di base", dedicata ai concetti fondamentali della teoria dei circuiti (tensione, corrente, resistenza e Legge di Ohm) e a un approfondimento sul calcolo e l'utilizzo delle resistenze, con una lista dettagliata delle operazioni da effettuare quando si decide di mettere mano alle saldature.

Le Appendici B e C sono approfondimenti riguardo la programmazione: sono intitolate rispettivamente "Programmazione avanzata di Arduino", che tratta il compilatore C++ e si sofferma sulle operazioni sui bit, e "Programmazione seriale avanzata", che illustra, con maggior dettaglio rispetto al secondo capitolo, le comunicazioni seriali e poi mostra come interagire con tali porte nei linguaggi di programmazione C/C++, Java, Ruby, Python e Perl).

Il manuale di Arduino si conclude con l'Appendice D, che è una semplice bibliografia.

Alla fine della lettura non si può che concordare che il testo è veramente ben fatto: si può partire quasi da zero e trovarsi in poco tempo – lo assicuro, le pagine si fanno veramente divorare grazie a un'impostazione molto pratica dei contenuti – a effettuare non poche operazioni e, di sicuro, ad avere molte meno difficoltà nella realizzazione dei propri progetti.

Certo, il titolo della versione italiana tende a essere un po' fuorviante — mi domando che cosa centri, nella prima di copertina, la citazione alla prima Legge della robotica di Isaac Asimov — mentre quello originale centra perfettamente l'essenza: "Arduino: a quick start guide".

Ma a parte questo e rarissime imprecisioni, sia di carattere grammaticale che nelle immagini, nel codice o nelle traduzioni (le quali potrebbero essere delle incongruenze presenti anche nell'originale e non imputabili al traduttore), il testo è veramente una miniera di immagini, schemi e approfondimenti; per ogni argomento, infatti, sono presenti spunti esterni interessantissimi (come il progetto di una pistola a led prima utilizzato per scopi militari, riferimenti all'utilizzo della balance board della Wii nel campo medico, ma anche progetti amatoriali come un orologio a cucù che suona ogni volta che arriva un messaggio sul proprio account Twitter, o uno strumento in grado di dire ai propri figli su quali denti non hanno ancora passato lo spazzolino e tanto altro ancora).

E la cura dei dettagli non manca nemmeno per la traduzione (in cui spesse volte i link a Wikipedia sono stati modificati riportando alla versione italiana della pagina), e per i componenti hardware da acquistare per seguire gli esempi: oltre alla "lista della spesa", per ogni capitolo, ce n'è una globale all'inizio del testo (molto utile considerando che il più delle volte questi componenti si acquisteranno da un sito web e, per ovvie ragioni, è consigliabile un acquisto cumulativo), in cui sono esaminati e consigliati anche alcuni starting-kit.

Stesse considerazioni valgono per i commenti al codice e al funzionamento dei dispositivi, che sono ben fatti e, nonostante il nono capitolo sia lievemente Apple-centrico, una valutazione complessiva di questo testo non può che essere veramente molto positiva.
proL'impostazione del testo e dei capitoli, la scelta e il modo in cui sono trattati gli argomenti, le immagini e tutti gli approfondimenti, oltre che la cura dell'editore, rendono il testo un ottimo punto di partenza per chiunque voglia addentrarsi con cognizione di causa nel mondo di Arduino.
controDopo venti giorni a leggere il testo, sfogliandolo avanti e indietro, mi sono ritrovato a raccogliere qualche foglio al vento; devo perciò constatare che la rilegatura in brossura fresata richiede al lettore un po' di delicatezza nel maneggiare le pagine.
Precedente: Centrare verticalmente un elemento con i CSS
Successiva: Boot to Gecko, un progetto Mozilla per un nuovo Web OS
Copyright Programmazione.it™ 1999-2014. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.235 secondi.