Introduzione
«Le tecnologie più importanti sono quelle che scompaiono. Si intrecciano con la vita di tutti i
giorni fino a divenire indistinguibili da essa» sosteneva Mark Weiser del Palo Alto Research
Center, pioniere dell'ubiquitous computing [1].
Si consideri la scrittura. Ha dato all'uomo la possibilità di memorizzare informazioni in modo
permanente, di comunicale senza che queste si volatilizzino, di tramandarle. Ma non si pensi solo ai
libri o alle riviste. Si pensi anche ai manifesti, alle etichette dei prodotti di consumo, alle insegne
degli esercizi commerciali, alla segnaletica stradale ed anche ai graffiti. Ci si guardi attorno: si
vedranno decine e decine di scritte sparse nell'intorno. Quest'antica tecnologia dell'informazione è
parte integrante dell'ambiente che ci circonda e delle nostre vite.
Si pensi ora al computer. Ha da poco compiuto 25 anni il Commodore 64 che resta, secondo il
Guinnes dei primati, il computer più venduto della storia. In totale, ne sono stati venduti oltre 17
milioni di esemplari; record che, con tutta probabilità non verrà mai più superato. La natura degli
attuali computer, assemblati diversamente a seconda delle esigenze dell'utente, rende praticamente
impossibile ripetere un'impresa simile. Ma, nonostante il fatto che i computer si siano avvicinati
sempre di più alle esigenze degli utenti, non si sono ancora integrati nella vita quotidiana della
gente comune.
Le informazioni restituite dai computer non possono ancora essere assorbite con la stessa
spontaneità di quando, per la strada, si legge l'insegna di un negozio.
Il filosofo Michael Polanyi definisce la conoscenza che si acquisisce spontaneamente come la
dimensione tacita. Secondo il filosofo, la dimensione tacita è frutto di esperienze, di riflessione
critica sulle esperienze effettuate, d'intuito, di comprensione della specificità dei contesti.
I PC hanno delle dimensioni e un peso che non consentono di trasportarli agevolmente (anche se
sono dei laptop), ad esempio con una mano, mentre li utilizziamo e hanno un unico schermo che
copre un'area ridotta. Weiser sottolineò il fatto che nessuno si sognerebbe di lavorare su una
scrivania delle dimensioni dello schermo di un PC. Secondo il suo parere, sarebbero necessari più
schermi leggeri e dotati di CPU, collegati tra di loro attraverso reti wireless, da poter prendere tra le
mani e portare in giro come si fa con un quaderno. Inoltre i PC non possono configurarsi
autonomamente rispetto all'ambiente e alle situazioni. Un PC spento, ad esempio, potrebbe
prepararsi a funzionare quando entriamo nel suo raggio d'azione ed essere pronto a visualizzare la
schermata di login appena siamo davanti allo schermo.
Riflessioni come queste portarono Weiser all'idea di un mondo in cui il PC sia sostituito da un
insieme di mini-computer integrati nell'ambiente e collegati tra loro in rete. Quanti mini-computer
nascosti immaginava Weiser in una stanza? Centinaia.
Alcuni di questi, alimentati dalla rete elettrica, dovrebbero essere capaci di elaborare una grande
quantità di informazioni da instradare agli altri. Altri, leggeri e dotati di pile, dovrebbero poter
essere usati e trasportati agevolmente. Altri ancora, dotati di sensori, dovrebbero essere capaci di
reagire agli stimoli dell'ambiente in cui si trovano e avviare, cooperando con gli altri nodi della rete,
delle procedure.
Grazie ai recenti sviluppi nel campo dei dispositivi microelettronici a basso costo, ridotto consumo
di energia, piccole dimensioni, in grado di acquisire diverse grandezze fisiche e di comunicare via
radio con un gran numero di dispositivi simili tra loro, il sogno di Weiser potrebbe concretizzarsi.
Oggi migliaia di nodi wireless dotati di pile e sensori possono monitorare un ambiente per un lungo
periodo, consentendo così lo sviluppo di molteplici applicazioni.
8
Capitolo 1
Le reti wireless di sensori
Le reti wireless di sensori: una sottoclasse delle reti ad hoc
Una rete wireless di sensori è una rete wireless in cui ogni nodo è un dispositivo con capacità di
comunicazione wireless ed ha un qualche livello d'intelligenza che gli permette non solo di misurare
diverse grandezze fisiche (ad esempio la temperatura, la luminosità, il rumore, l'intensità dei campi
magnetici, l'umidità ed altro ancora) dei fenomeni ma anche di filtrare, condividere, combinare ed
aggregare le misurazioni che effettua e che riceve della rete.
Le reti wireless di sensori possono considerarsi come una sottoclasse di un'ampia classe di reti
wireless, quella delle reti ad hoc.
Una rete wireless ad hoc è una collezione di nodi wireless autonomi che comunicano tra loro
formando una rete multihop e mantenendo la connettività in modo decentralizzato. Ogni nodo
funziona sia da router che da host e, quindi, il controllo della rete è distribuito su tutti i nodi.
Le comunicazioni tra i nodi di una rete ad hoc avvengono lungo dei collegamenti wireless e quindi
risentono degli stessi problemi delle comunicazioni radio: disturbi, interferenze, attenuazioni dei
segnali e rimbalzi dei segnali.
La topologia della rete è generalmente dinamica: può variare con l'eliminazione di un nodo dalla
rete, con il guasto di un nodo, con l'arrivo di nuovi nodi, con l'interposizione di un ostacolo tra i
nodi e nell'eventualità di avere nodi mobili.
Così nasce l'esigenza di avere protocolli di routing efficienti che permettano ai nodi di comunicare
sopra i percorsi multihop, adattandosi alla topologia che la rete assume volta per volta, utilizzando
le risorse della rete senza sprechi.
Tornando alle reti wireless di sensori, queste condividono le caratteristiche descrittive delle reti ad
hoc ma presentano ulteriori caratteristiche specifiche [2] [3].
- I nodi di una rete di sensori sono miniaturizzati e possono essere soggetti più facilmente a guasti o
all'esaurimento delle batterie, di dimensioni ridotte.
- Le risorse hardware dei sensori sono tipicamente scarse, questo per minimizzare le dimensioni dei
nodi e per preservare le risorse energetiche.
- Il flusso dei dati in una rete di sensori è fortemente asimmetrico: generalmente tutti i nodi inviano
i dati ad un unico nodo che raccoglie le informazioni, anche detto sink. Usualmente questo nodo
inoltra le informazioni ricevute ad un PC collegato via cavo, ad esempio utilizzando la
comunicazione seriale, come viene mostrato in questa tesi.
- Il numero di nodi che compongono le reti di sensori può essere di diversi ordini superiore e la
densità dei nodi nelle vicinanze del fenomeno da rilevare può essere elevata. Questo punto può
essere sfruttato a fondo per il risparmio delle risorse della rete, utilizzando tecniche di clustering dei
nodi e adottando algoritmi localizzati in cui ogni nodo comunica solo con i nodi vicini.
- Poiché ci si aspetta, nella maggior parte dei casi, che le applicazioni siano localizzate, le reti di
sensori non dovrebbero incorporare sistemi di routing reattivi come quelli che si trovano oggi in
Internet. Le applicazioni dovrebbero integrare il routing ed usare una combinazione di schemi
proattivi e reattivi per raggiungere una comunicazione che sia efficiente sotto il profilo energetico.
- Risulta essenziale che la rete possa auto-organizzarsi. Come conseguenza del fatto che le reti di
sensori vengono spesso utilizzate in aree ostili o difficilmente accessibili, ma anche per il fatto che
usualmente siano composte da un largo numero di nodi, l'assistenza ai nodi in molti casi può non
essere possibile. In questi casi, il tempo di vita di un nodo è determinato dalla durata di vita delle
batterie.
9
Applicazioni delle reti di sensori
Alcuni esempi d'applicazione per le reti wireless di sensori sono:
- le applicazioni ambientali, per monitorare cambiamenti climatici ed altri fenomeni ambientali
(temperature, inquinamento, terremoti, tornado, maree, etc.) in città, pianure, foreste, mari, etc.;
- le applicazioni militari, per rilevare il maggior numero di informazioni possibili sui movimenti del
nemico, etc.;
- le applicazioni nella domotica, l'automazione domestica;
- il monitoraggio del traffico stradale;
- il monitoraggio delle strutture (ponti, palazzi, etc.).
Un esempio d'applicazione: ZebraNET
Un nodo di ZebraNET.
Il sistema ZebraNET [5] prevede dei collari (nodi) indossati dagli animali in studio per il
tracciamento di questi in una vasta area del Kenya centrale.
I collari operano come una rete peer-to-peer e acquisiscono i dati d'interesse dei ricercatori;
includono: una piccola CPU, memorie flash, un sensore GPS, due radiotrasmittenti. Essenzialmente
ogni nodo è un piccolo dispositivo d'elaborazione dotato di un trasmettitore wireless. Giacché non
esisteva un servizio di telefonia mobile o un servizio di radiocomunicazione di tipo broadcast che
coprisse l'area in cui è stato effettuato lo studio, l'utilizzo di una rete wireless di sensori è stato
indispensabile. L'obiettivo dei ricercatori è stato quello di utilizzare meno risorse possibili e di
fornire un servizio con un alto tasso di successo nella raccolta dei dati da parte del nodo base, sink,
situato a bordo di un aereo che sorvolava la regione ad intervalli di tempo di diverse settimane.
Tra le idee più originali c'è quella di utilizzare l'energia fotovoltaica per ricaricare i nodi e quella di
utilizzare due tipi di radio distinte: una a bassissimo dispendio d'energia, utilizzata per comunicare
tra i nodi più vicini, ed un'altra con un consumo maggiore d'energia ma a raggio più ampio, per
comunicare esclusivamente con il nodo base.
Capitolo 1
10
Il mote Mica2
Il mote Mica2.
Il termine "mote" indica un nodo delle reti wireless di sensori.
Il Mica2 [6] è un mote di terza generazione. Viene alimentato da semplici pile stilo (AA). Possiede
un microcontrollore, un chip per la radiotrasmissione delle informazioni, un connettore a 51 pin che
permette d'aggiungere schede hardware dotate di sensori acustici, magnetici, di luce, di pressione,
etc.
Ha tre LED, di colore rosso, verde e giallo.
La CPU: il microcontrollore ATmega 128L
La CPU del Mica2 è un microprocessore ATmega128L [7] ad 8 bit, della famiglia AVR della
Atmel.
Lavora alla frequenza di 8 Mhz ed è dotato di 128 KByte di memoria flash programmabile, 4 Kbyte
di memoria EEPROM, 4 Kbyte di SDRAM, 53 linee di I/O, 32 registri di lavoro ad uso generale,
interrupt interni ed esterni, UART (Universal Asynchronous Receiver-Transmitter, il gestore
hardware dell'interfaccia seriale RS-232) programmabile, timer watchdog programmabile e porta
SPI (Serial Peripheral Interface).
La radio: il chip CC1000
Il radiotrasmettitore del Mica2 è il chip CC1000 [8] di Texas Instuments. I mote Mica2 attualmente
disponibili sul mercato utilizzano il chip alle massime frequenze supportate, cioè a 868 e 915 Mhz.
La trasmissione è con modulazione FSK (Frequency-Shift Keying), multicanale 4/50, con codifica
di Manchester, con un tasso di trasmissione dei dati di 38,4 Kbaud.
Il raggio di trasmissione è di circa 500 piedi.
Consumi energetici
I valori sui consumi energetici per il mote Mica2 di Crossbow sono:
- 0,015 milliAmpere nello stato passivo;
- 8 milliAmpere nello stato attivo (con la CPU alla velocità di 8 Mhz) e con la radio spenta;
- 18 milliAmpere nello stato attivo e con la radio in sola ricezione;
- 35 milliAmpere nello stato attivo e con la radio in trasmissione alla massima potenza.
Per un confronto, vengono riportati i valori sui consumi energetici di un altro mote famoso nel
settore delle reti di sensori, l'Imote di Intel:
Capitolo 1
11
- 0,39 milliAmpere nello stato passivo;
- 31 milliAmpere con la CPU alla velocità di 13 Mhz e con la radio spenta;
- 44 milliAmpere con la CPU alla velocità di 13 Mhz e con la radio accesa per la
ricezione/trasmissione;
- 66 milliAmpere con la CPU alla velocità di 104 Mhz e con la radio accesa per la
ricezione/trasmissione.
Il mote Imote di Intel.
Capitolo 1
12
Capitolo 2
Il linguaggio di programmazione NesC e il sistema operativo
TinyOS
NesC [10] è un linguaggio di programmazione ad eventi, basato su componenti, per sistemi dedicati
(embedded, "incapsulati"). David Gay, uno dei principali progettisti, lo definisce "dialetto del C".
NesC è stato progettato da David Gay (Intel Research), Phil Levis (Stanford University), Rob Von
Behren (U.C. Berkeley), Matt Welsh (Harvard University), Eric Brewer (U.C. Berkeley) e David
Culler (U.C. Berkeley) per sviluppare TinyOS, un sistema operativo guidato dagli eventi (event
driven), disegnato specificamente per i mote, i nodi delle reti wireless di sensori. Di conseguenza, è
usato anche per scrivere i programmi applicativi per i mote che utilizzano TinyOS.
Il successo di TinyOS e di NesC è dovuto al fatto che siano open-source (sotto i termini della
Berkeley Software Distribution License), siano stati sviluppati e resi pubblici tempestivamente,
nonché alla posizione di prestigio e rilevanza internazionale di cui gode l'università di Berkeley nel
campo dell'I.T.
TinyOS
TinyOS [11] è un sistema operativo totalmente non bloccante. Gestisce le operazioni di I/O che
richiedono tempi d'esecuzione più lunghi di pochi microsecondi in modo asincrono; queste ultime
sono anche dette operazioni split-phase (che in inglese significa "a fase spaccata") per via del fatto
che, dopo essere state invocate, al momento del loro completamento, innescano l'esecuzione di una
funzione di ritorno (callback) chiamata evento.
Invece, per supportare le operazioni che richiedono lunghe computazioni, TinyOS usa il costrutto
task fornito dal linguaggio NesC. Questo costrutto è una specie di procedura che può essere
invocata da un comando (a sua volta invocato da un evento): è simile ad una chiamata DPC
(Deferred Procedure Call), una chiamata a bassa priorità.
Il nucleo (kernel) ha uno scheduling a due livelli gerarchici: uno per gli eventi e uno per i task. Gli
eventi hanno diritto di prelazione reciproco e sui task. L'esecuzione dei task segue una politica
First-Come First-Served tradizionale, senza diritto di prelazione (nonpreemptive).
Questo semplice modello di concorrenza funziona bene per applicazioni con prevalenza di
operazioni di I/O (applicazioni I/O bound) ma può generare delle difficoltà per applicazioni con
prevalenza di elaborazioni (applicazioni CPU bound). Sono state avanzate delle proposte per
l'incorporazione del multi-threading al livello d'utente (a livello di sistema esistono dei thread di
controllo) nel sistema, proprio per far fronte ad applicazioni CPU bound, ma è stato dimostrato che
ciò avrebbe un impatto negativo sulle prestazioni del sistema stesso. Ad ogni modo, per motivazioni
legate al risparmio energetico, i mote delle reti wireless di sensori non dovrebbero svolgere
elaborazioni intensive. Uno dei primi suggerimenti di TinyOS programming [12], il manuale di
riferimento per i programmatori, recita: "Keep tasks short", "fai in modo che le sezioni di codice dei
task siano brevi".
13