Il libro cerca di insegnare i rudimenti della comunicazione tra dispositivi di vario genere, tramite la realizzazione di progetti basilari. L'obiettivo dichiarato nel testo è far comprendere al lettore il concetto di
networked object, facendo uso di programmazione
object-oriented per l'interfacciamento con i dispositivi fisici. Il libro nasce da un corso intitolato:
"Networked Objects", tenuto dall'autore
Tim Igoe, alla
Tish School of the Arts presso l’Università di New York e facente parte dell’
Interactive Telecommunications Program.
Gli argomenti trattati in ogni capitolo spaziano dall'elettronica, alla programmazione, alle reti. Nella realizzazione dei progetti sono consigliate diverse piattaforme hardware su cui è possibile lavorare e vengono forniti all'utente gli esempi del codice e dei circuiti realizzati. Molto curato è anche il lato informatico, che viene introdotto passo passo tramite la spiegazione dei linguaggi di programmazione utilizzati (
Processing e PHP), oltre che fornire alcune nozioni di riga di comando. Il libro risulta abbastanza tecnico, ma allo stesso tempo si apre ad un pubblico molto vasto in quanto l'autore si prodiga a spiegare tutti i concetti illustrati in maniera elementare, tramite semplici esempi pratici; in tal modo chiunque nutra un pizzico di interesse per l'argomento sarà in grado di comprendere i concetti trattati.
Come è consuetudine, il libro comincia con una
prefazione, che spiega a chi è rivolto l’argomento, nonché le conoscenze preliminari necessarie per comprendere i contenuti trattati. In ognuno dei capitoli successivi, l'autore si prefigge un obiettivo da portare a termine tramite la realizzazione di progetti reali. L'unico capitolo che non illustra alcun progetto è il
primo, che si occupa di presentare gli
ingredienti necessari per una migliore comprensione dei capitolo successivi.
Igoe pone molta attenzione sulle interfacce fisiche, software ed elettriche degli oggetti, sui protocolli di comunicazione, sui diversi tipi di computer e sulle interfacce fisiche a disposizione per l'interazione. Una sezione di tale capitolo è dedicata alle
buone abitudini che chiunque si appresti a realizzare applicazioni di rete deve tenere in considerazione. Il capitolo illustra anche i tool fisici, software ed hardware utilizzati per la realizzazione dei progetti presentati nei capitoli seguenti. Tra i
software tool si manifesta particolare predilezione per
Processing, che viene ampiamente utilizzato nei progetti per la sua facilità d'uso: vengono illustrati interessanti esempi di base per testarne il funzionamento. Inoltre un'ampia sezione è dedicata all'utilizzo della riga di comando, fornendo consigli utili a chi non ne ha mai fatto uso. Molto interessante risulta la trattazione relativa ai tool per la comunicazione seriale. In ultima sede, viene presentato l'hardware utilizzato e le interfacce esterne di comunicazione, indispensabili alla creazione di
networked object.
I successivi capitoli si occupano della realizzazione di 26 progetti
spalmati nei restanti otto capitoli corredati da una introduzione ai concetti basilari per la corretta comprensione dei progetti stessi. Nel
secondo capitolo vengono spiegate le tecniche basilari di connessione tra due dispositivi fisici; in particolare vengono illustrati i protocolli, il controllo di flusso e l'indirizzamento. Per agevolare l'acquisizione di queste nozioni, viene realizzato un peluche che gioca a
PONG; quest'ultimo è realizzato tramite USB nel primo progetto, tramite connessione senza fili nel secondo. Il successivo progetto spiega invece i principi relativi al protocollo Bluetooth. Di notevole interesse risulta in questo capitolo la trattazione dei collegamenti seriali USB, RS-232 nonché la realizzazione del circuito MAX3323 per la conversione da USB a seriale.
Il
terzo capitolo, dando per assodata l'acquisizione dei concetti trattati nei capitoli precedenti, passa alla spiegazione del reale funzionamento della
Rete delle reti, ovvero Internet, soffermandosi sulle interconnessioni tra i vari dispositivi, sugli apparati di rete, sugli indirizzi (sia fisici che di rete) e sui protocolli, che consentono la comunicazione tra entità diverse. Il tutto è corredato di utili esempi realizzati tramite l'
utility TELNET e tramite alcune pagine PHP di esempio. Dopo queste nozioni teoriche, si dà sfogo alla creatività tramite la realizzazione del progetto
"networked cat", che illustra passo passo come sia possibile monitorare, tramite una videocamera, il proprio gatto quando si trova in una posizione ben precisa, individuata tramite opportuni sensori.
I progetti illustrati sino a questo punto presentano un problema non trascurabile: è necessaria la presenza di un PC collegato al microcontrollore perché funzionino. Il
quarto capitolo si pone l'obiettivo di superare questa limitazione, realizzando il collegamento alla Rete direttamente dal controllore, tramite l'ausilio di un modulo di rete aggiuntivo. Dopo la presentazione di un progetto introduttivo per verificare il corretto funzionamento del modulo (un semplice
”Hello Internet”), viene mostrato come sia possibile configurare il modulo in modo tale che funzioni nella maniera più consona all'obiettivo che si vuole raggiungere. Il secondo progetto presente in questo capitolo si occupa dunque della realizzazione di un misuratore della qualità dell'aria, che legge la temperatura da una pagina PHP e la visualizza tramite un termometro con lancetta.
Nel
quinto capitolo si cerca di far capire al lettore come ottenere determinate prestazioni di rete; per far ciò, l'autore si impegna a far comprendere al lettore come sia possibile comunicare in (quasi) real time. Dopo aver introdotto l'argomento con esempi significativi, viene illustrato il funzionamento dei protocolli di livello trasporto più usati su Internet e viene posta l'attenzione sulla loro inadeguatezza per connessioni che richiedono determinate prestazioni in termini di ritardi. Il progetto realizzato per una esposizione più minuziosa di queste problematiche illustra un gioco di rete, del quale vengono mostrati i sorgenti del client, del server e il comportamento dei vari protocolli di rete.
Nel
sesto capitolo si prendono in esame le comunicazioni senza fili. Dopo aver menzionato brevemente le caratteristiche di base, vengono realizzati un trasmettitore-ricevitore a raggi infrarossi ed una radio; l'autore si sofferma sui pregi e sui difetti di ognuna di queste tecnologie. Il terzo progetto del capitolo si occupa invece di effettuare un invio bidirezionale tramite ricetrasmettitori. Il capitolo termina con un ultimo progetto che si occupa ancora di invio bidirezionale, ma stavolta invio e ricezione dei dati avvengono tramite l'ausilio della tecnologia Bluetooth.
Mentre nei capitoli fin qui presentati si è parlato sempre di comunicazioni tra due entità (server e client), nel
settimo capitolo vengono introdotte le connessioni e i messaggi di rete con più destinatari (il cosiddetto multicast), problematica molto diffusa nelle applicazioni odierne. A questo scopo viene illustrato un progetto per la creazione di report di sostanze chimiche tossiche. Nel secondo progetto di questo capitolo viene mostrato come sia possibile realizzare una
mesh network tramite l'uso del protocollo
ZigBee, molto usato per la comunicazione tra sensori.
L'
ottavo capitolo ha lo scopo di far comprendere al lettore come sia possibile localizzare qualsiasi tipo di oggetto; chiaramente gli oggetti in questione sono sempre
networked object. Dopo aver illustrato la differenza tra localizzazione di rete e localizzazione fisica, si passa ad analizzare i modi disponibili per trovare la locazione di un oggetto. Vengono realizzati due progetti per misurare la distanza, il primo con tecnologia infrarossi, il secondo con ultrasuoni. Il progetto successivo illustra invece come sia possibile leggere l'intensità del segnale (misurata in decibel) ricevuto tramite radio facendo uso di XBee prima, e di radio Bluetooth subito dopo. Il capitolo presenta ancora altri tre progetti: uno si occupa della lettura tramite protocollo seriale GPS, l’altro mostra come determinare l'orientazione degli oggetti tramite l'uso di un compasso digitale, mentre il terzo si occupa di determinare l'assetto usando un accelerometro.
Il
nono ed ultimo capitolo tratta le tematiche inerenti l'identificazione, intesa come fisica realizzata tramite video e colori. I primi due progetti al riguardo fanno uso di una webcam: nel primo si evidenzia come riconoscere i colori, mentre nel secondo viene illustrato il riconoscimento di barcode 2D. A quest'ultimo segue un progetto riguardante l'uso di tag
RFID in
Processing. Nel progetto successivo viene mostrato come la tecnologia
RFID può venire incontro alle esigenze di automazione domestica. Gli ultimi due progetti si occupano rispettivamente di
IP geocoding e invio di e-mail tramite tecnologia
RFID.
Ai capitoli appena presentati seguono tre appendici, che contengono argomenti ausiliari.
L'Appendice A mostra alcuni protocolli non trattati in altre parti del libro che potrebbero essere utili, una serie di proxy e un’introduzione allo sviluppo di applicazioni con telefoni mobili.
L'appendice B elenca i fornitori hardware, che offrono componenti hardware utili per la realizzazione dei progetti; per ogni fornitore sono presenti numeri ed indirizzi web per un immediato contatto. L'
Appendice C fornisce un elenco in ordine cronologico degli applicativi, corredati da codice sorgente, illustrati nei capitoli del libro. Nelle pagine conclusive del libro è presente un
indice analitico con diverse voci che ricorrono all'interno del testo.