# Wireless sensor network

Con il termine wireless sensor network (o WSN) si indica una determinata tipologia di rete informatica che, caratterizzata da un'architettura distribuita, è realizzata da un insieme di dispositivi elettronici autonomi in grado di prelevare dati dall'ambiente circostante e di comunicare tra loro.

## Descrizione

I recenti progressi tecnologici nei sistemi microelettromeccanici (MEMS, micro electro mechanical system), nelle comunicazioni wireless e nell'elettronica digitale hanno permesso lo sviluppo di piccoli apparecchi a bassa potenza dai costi contenuti, multifunzionali e capaci di comunicare tra loro tramite tecnologia wireless a raggio limitato. Questi piccoli apparecchi, chiamati nodi sensori, sensor node (in inglese) o mote (principalmente nell'America settentrionale), sono formati da componenti in grado di rilevare grandezze fisiche (sensori di posizione, temperatura, umidità ecc.), di elaborare dati e di comunicare tra loro. Un sensore è comunemente definito come un particolare trasduttore che si trova in diretta interazione con il sistema misurato.
Una rete di sensori (in inglese sensor network) è costituita da un insieme di sensori disposti in prossimità oppure all'interno del fenomeno da osservare. Questi piccoli dispositivi sono prodotti e distribuiti in massa, hanno un costo di produzione trascurabile e sono caratterizzati da dimensioni e pesi molto ridotti. Ogni sensore ha una riserva d'energia limitata e non rinnovabile e, una volta messo in opera, deve lavorare autonomamente; per questo motivo tali dispositivi devono mantenere costantemente i consumi molto bassi, in modo da avere un maggior ciclo di vita. Per ottenere la maggior quantità possibile di dati occorre effettuare una massiccia distribuzione di sensori (nell'ordine delle migliaia o decine di migliaia) in modo da avere un'alta densità (fino a 20 nodi/m3) e far sì che i nodi siano tutti vicini tra loro, condizione necessaria affinché possano comunicare. Una delle più comuni applicazioni in cui è possibile far uso di una rete di sensori consiste nel monitoraggio di ambienti fisici come il traffico in una grande città oppure dati rilevati da un'area disastrata da un terremoto.
I nodi sensore all'interno di una rete hanno la possibilità di collaborare tra loro dal momento che sono provvisti di un processore on-board; grazie a quest'ultimo, ciascun nodo, invece di inviare dati grezzi ai nodi responsabili della raccolta dei dati, può effettuare delle semplici elaborazioni e trasmettere solo i dati richiesti e già elaborati.
La comunicazione, realizzata tramite tecnologia wireless a corto raggio, è solitamente di tipo asimmetrico in quanto i nodi comuni inviano le informazioni raccolte ad uno o più nodi speciali della rete, detti nodi sink, i quali hanno lo scopo di raccogliere i dati e trasmetterli tipicamente ad un server o ad un calcolatore. Una comunicazione può avvenire autonomamente da parte del nodo quando si verifica un dato evento, o può venire indotta dal nodo sink tramite l'invio di una query verso i nodi interessati.
Le reti di sensori possono essere utilizzate in numerose applicazioni; tuttavia la realizzazione di queste ultime richiede l'uso di tecniche utilizzate anche nelle reti wireless ad hoc. Sfortunatamente, molti degli algoritmi usati nelle reti ad hoc non sono compatibili con i requisiti di questo tipo di reti.
I principali motivi derivano dal fatto che:
* Il numero di nodi che compongono una rete di sensori può essere di alcuni ordini di grandezza maggiore rispetto al numero di nodi in una rete ad hoc;
* I nodi sono disposti con un'alta densità;
* I nodi sono soggetti a guasti;
* La topologia di una rete di sensori può cambiare frequentemente a causa di guasti ai nodi o della loro mobilità.
* I nodi utilizzano un paradigma di comunicazione broadcast mentre la maggior parte delle reti ad hoc sono basate su una comunicazione di tipo punto-punto;
* I nodi sono limitati rispetto ad alimentazione, capacità di calcolo e memoria;
* I nodi solitamente non possiedono un identificatore globale (come l'indirizzo IP nei computer);
* I nodi necessitano di una stretta integrazione con le attività di rilevamento.
Per questo motivo, questa tipologia di rete necessita di algoritmi pensati e realizzati in maniera specifica per gestire la comunicazione e l'instradamento dei dati.
Le reti di sensori possono migliorare in modo significativo la qualità delle informazioni: ad esempio possono garantire una elevata fedeltà, possono fornire informazioni in tempo reale anche da ambienti ostili e possono ridurre i costi di trasmissione delle stesse informazioni.
Quindi, assumiamo che le reti di sensori possono essere utilizzate su un'ampia schiera di applicazioni che vanno da quella militare a quella scientifica, industriale, medica e domestica. Lo scopo fondamentale di una rete di sensori è di produrre su un periodo esteso di tempo, una informazione globale significativa ottenuta da una serie di dati locali provenienti dai singoli sensori. È importante notare che la rete deve essere realizzata in modo da garantirne l'integrità per un periodo di tempo che sia il più lungo possibile, allo scopo di ottenere informazioni accurate anche in caso di attacco alla rete da parte di organi esterni o di cedimenti hardware.
Il fatto che un singolo sensore sia dotato di una piccola quantità di energia non deve impedirgli di inviare le informazioni elaborate, che verranno raccolte e unite alle informazioni provenienti dagli altri sensori. Un'importante via da seguire consiste nel rilevare il maggior quantitativo possibile di dati locali, evitando la trasmissione dei dati inefficienti attraverso la rete. Ci sono diverse possibili tecniche che possono essere usate per connettere la rete con l'esterno, in particolare per trasmettere le informazioni che essa raccoglie. Nelle nostre reti sensoriali assumiamo che ci siano entità speciali chiamate nodi sink, che agisce come nodi gateway, a lungo raggio d'azione e distribuiti accanto ai sensori.
Un utente specifica al nodo sink di quali informazioni ha bisogno. Il sink genera una interrogazione che viene poi immessa nella rete. Una o più risposte sono rinviate indietro al sink il quale riunisce ed elabora queste risposte prima di fornire il risultato finale all'utente. Le reti di sensori sono modellate come dei database distribuiti. Il recupero di informazioni è effettuato tramite un linguaggio simile ad SQL. Il flusso delle informazioni dipende dal meccanismo di elaborazione interno al database. La cosa più semplice sarebbe quella di lasciare al nodo sink il compito di collezionare tutte le informazioni da ciascun nodo sensore e quello dell'elaborazione dei dati.
Questo cosa è però impraticabile per diversi motivi:
* Gli ack che il sink è costretto a mandare ai vari nodi sensore rappresenterebbero un collo di bottiglia nel caso in cui il numero di nodi sensore fosse destinato ad aumentare;
* I nodi sensore usano, per interagire tra loro, una comunicazione wireless. Alcuni nodi posizionati lontano dal sink potrebbero non essere in grado di comunicare direttamente con questo a causa della limitata potenza di trasmissione a disposizione.
Quindi, non dobbiamo modellare una rete di sensori come un database distribuito dove tutti i nodi sono passivi, ma come un insieme distribuito di nodi che collaborano tra loro e dove ciascuno ha capacità attive programmabili. Questo permette a tutti i nodi di coordinarsi l'uno con l'altro per eseguire un task assegnato. In questo modo i nodi sensore diventano attivi e autonomi.
I nodi sensore sono sparpagliati in un'area chiamata area di sensing. Ciascun nodo, all'interno di questa area, ha la capacità di accumulare e di instradare i dati fino al nodo sink e quindi all'utente finale. Il nodo sink consiste in un'antenna capace di illuminare tutto il dominio occupato dai nodi sensori ovvero l'area di sensing. La posizione dei nodi all'interno della rete non deve essere predeterminata in quanto questo consente di utilizzare questa tecnologia in posti difficilmente accessibili o in operazioni di soccorso in luoghi disastrati per i quali è necessaria una disposizione random dei nodi.
Ciò significa che gli algoritmi e i protocolli utilizzati nelle reti di sensori devono possedere capacità auto organizzative. I sensori, conoscendo le caratteristiche di trasmissione del sink, e sfruttando il suo segnale di illuminazione (che possono, o meno, sentire), possono effettuare un autoapprendimento di posizione, permettendo quindi la distribuzione random di questi nella rete. L'autoapprendimento di posizione dei sensori è quindi una delle caratteristiche più importanti di questi e, vista la scarsa quantità di energia di cui è dotato un sensore, si deve cercare di ottimizzare al meglio gli algoritmi che permettono ad un sensore di conoscere la propria posizione, abbassando il suo tempo di apprendimento, ovvero cercare di minimizzare il tempo in cui un sensore deve stare sveglio ed il numero di volte in cui esso si deve svegliare.

## Campi di applicazione

Una rete di sensori può essere vista come un insieme di sensori di diverso tipo capaci di rilevare grandezze come temperatura, umidità, pressione, luce, ma anche capaci di rilevare il movimento di veicoli, la composizione del terreno, livello di rumore e molte altre cose.
È possibile classificare le applicazioni in cui si possono usare le reti di sensori in militari, ambientali, sanitarie, casalinghe e commerciali.

### Applicazioni militari

La facilità e rapidità di distribuzione, l'auto-organizzazione e la tolleranza ai guasti fanno di una rete di sensori una tecnica promettente per applicazioni militari.
Poiché una rete di sensori è basata su una disposizione densa di nodi monouso ed a basso costo, la distruzione di alcuni nodi da parte del nemico non danneggia le operazioni militari come potrebbe accadere con la distruzione dei sensori tradizionali. Le possibili applicazioni vanno dal monitoraggio di forze alleate, equipaggiamenti e munizioni alla sorveglianza del campo di battaglia. Sempre nel campo militare, è possibile usare una rete di sensori per effettuare il riconoscimento di nemici, la stima dei danni di una battaglia oppure il riconoscimento del tipo di attacco (nucleare, biologico o chimico).

### Applicazioni ambientali

In questo ambito, le reti di sensori potrebbero essere usate per alcune applicazioni che riguardano, ad esempio, il monitoraggio del movimento di uccelli, piccoli animali, insetti.
È possibile anche effettuare il monitoraggio di una foresta e rilevare prontamente eventuali incendi. Negli Stati Uniti è stato messo a punto un sistema per la previsione e rilevazione di inondazioni. Il sistema è formato da molti sensori in grado di rilevare la quantità di pioggia caduta, il livello dell'acqua di un fiume e condizioni climatiche come ad esempio temperatura, l'umidità etc...
Le reti di sensori possono essere utilizzate anche nell'agricoltura di precisione. Tra gli obiettivi che è possibile raggiungere c'è quello di monitorare il livello dei pesticidi nell'acqua, il livello di erosione del terreno e il grado di inquinamento dell'aria. Il tutto effettuato in tempo reale. Altra applicazione è quella del monitoraggio dell'habitat di animali, e lo studio del loro comportamento.
Sempre nel settore ambientale, le reti di sensori possono essere di interesse per studiare gli spostamenti ed il dinamismo all'interno dei ghiacciai. A tal proposito i sensori vengono distribuiti all'interno del ghiaccio a profondità differenti. I sensori sono capaci di rilevare temperatura e pressione comunicando con una stazione base posizionata in cima al ghiacciaio che provvederà al trasferimento di questi a chi di competenza.

### Applicazioni medico-sanitarie

Gli utilizzi delle reti di sensori in questo campo sono rivolte a fornire un'interfaccia per le persone affette da handicap, al monitoraggio di dati fisiologici (riguardanti l'uomo), all'amministrazione ospedaliera sia essa relativa ai pazienti che ai medici (per una facile rintracciabilità). Inoltre è anche possibile usare i sensori per l'identificazione di allergie.

### Applicazioni domestiche

Un esempio di utilizzo di una rete di sensori in ambito domestico è l'automazione della casa che consiste nell'inserire sensori nel forno, aspirapolvere, refrigeratore, videoregistratore etc... Questi nodi, inseriti negli elettrodomestici, possono interagire l'uno con l'altro e anche con reti esterne tramite l'utilizzo di internet o del satellite permettendo la gestione anche da distanze remote.
L'ambiente domestico viene ad assumere così le stesse caratteristiche di un piccolo centro fornito di una rete in grado di mettere in comunicazione tra loro tutti i vari strumenti di cui l'ambiente è composto.

### Applicazioni commerciali

In questo ambito, i sensori potrebbero essere usati per le seguenti applicazioni:
* Rilevamento del furto di auto: nodi sensore sono stati disposti per scoprire e identificare minacce che avvengono in una determinata zona geografica. Tutte le informazioni rilevate sono inviate, tramite internet, agli utenti finali per essere analizzate e per prendere i giusti provvedimenti;
* Rilevamento della posizione e del movimento di veicoli (car tracking): tramite una rete di sensori è possibile monitorare la posizione di un'auto in movimento. È inoltre possibile monitorare il traffico su strade particolarmente transitate;
* Controllo dell'ambiente in ufficio: di solito il sistema di gestione del riscaldamento o dell'aria condizionata è centralizzato e quindi la temperatura in ufficio può essere diversa a seconda della zona (una parte più calda e una parte più fredda) proprio per il controllo della temperatura e del flusso dell'aria centralizzato (esiste un solo termometro e un solo bocchettone da dove esce l'aria). Con una rete di sensori nelle stanze è possibile controllare la temperatura e la distribuzione dell'aria calda nelle varie zone.

### Applicazioni energetiche

Il monitoraggio del consumo energetico di ogni sistema, con l'impiego della WSN, migliora l'efficienza energetica nelle fabbriche, uffici, residenze/abitazioni.

## Progettare una rete di sensori

La progettazione di una rete di sensori è influenzata da molti fattori che non solo sono necessari per la progettazione della rete, ma influenzano a loro volta la scelta degli algoritmi utilizzati nella rete stessa. Questi fattori sono:

### Tolleranza ai guasti

Nella rete di sensori c'è la possibilità che alcuni nodi della rete siano affetti da malfunzionamenti o guasti le cui cause possono essere danni fisici, interferenze o batterie scariche. La tolleranza ai guasti è la capacità di far funzionare una rete di sensori anche in caso di malfunzionamento da parte di alcuni nodi.
La tolleranza ai guasti (o affidabilità) di un nodo $k$ è modellata tramite una distribuzione di Poisson ed è vista come la probabilità di non avere malfunzionamenti nell'intervallo $(0,t)$:
$R_{k}(t)=e^{-\lambda kt}$
Dove $\lambda k$ è il tasso di fallimento del nodo sensore $k$.
I protocolli e gli algoritmi possono essere progettati in modo da garantire il livello di tolleranza ai guasti richiesto dalla rete. Il livello di tolleranza dipende fortemente dall'applicazione in cui viene utilizzata la rete di sensori (uso militare, domestico, commerciale, etc...).

### Scalabilità

Il sistema deve essere in grado di funzionare anche all'aumentare del numero di nodi (che possono andare da un basso numero di unità, fino ad arrivare a qualche milione di sensori). La scalabilità può essere ottenuta anche sfruttando la natura densa delle reti di sensori.
La densità di nodi in una rete di sensori risulta application dependent e può variare da pochi a centinaia di nodi in una regione di diametro minore di 10m. La densità, cioè il numero di nodi presenti all'interno del raggio di trasmissione di un nodo, può essere calcolata nel seguente modo:
$\mu (r)={\frac {(N\pi r^{2})}{A}}$
dove $N$ è il numero di nodi sparpagliati in una regione di area $A$ ed $r$ è il raggio di trasmissione di un nodo.

### Costi di produzione

Poiché una rete di sensori è formata da un grande numero di nodi, il costo di un singolo nodo è molto importante. Se il costo della rete è maggiore rispetto all'utilizzo dei sensori tradizionali allora l'uso di una rete di sensori non è giustificabile.
Il costo di un nodo sensore dovrebbe perciò essere abbastanza basso (minore di 1 euro). Questo è un obbiettivo non molto facile da raggiungere in quanto attualmente solo il prezzo di una radio bluetooth (che è considerato un apparecchio economico), è almeno 10 volte superiore al prezzo indicato. Un nodo ha anche altre unità come un processore o un campionatore; inoltre in alcune applicazioni può essere necessario equipaggiare un nodo con un sistema di posizionamento globale (GPS). Tutte queste cose portano ad un incremento del costo di un sensore.

### Ambiente operativo

I sensori sono disposti molto vicino o addirittura all'interno del fenomeno da osservare. Perciò, spesso, si trovano a lavorare in zone geografiche remote (es: all'interno di un macchinario, in fondo all'oceano, sulla superficie dell'oceano durante un tornado, in una zona biologicamente o chimicamente contaminata, in un campo di battaglia etc..) e senza la supervisione dell'uomo.
Tutto ciò dà un'idea delle condizioni sotto le quali i sensori devono essere capaci di funzionare (devono sopportare alte pressioni se lavorano in fondo all'oceano, alte o basse temperature etc..).

### Topologia della rete

Un gran numero di nodi sono disposti l'uno accanto all'altro a volte anche con un'alta densità. Questo richiede un'attenta attività per il mantenimento della topologia.
Il mantenimento e il cambiamento della topologia può essere diviso in tre fasi:
* Pre-deployment e deployment phase: i sensori possono essere sia gettati sia disposti uno ad uno nell'ambiente; infatti possono essere gettati da un aereo, da una catapulta, collocati uno ad uno da un robot o da una persona umana.
* Post-deployment phase: i cambiamenti topologici della rete sono dovuti al cambiamento della posizione dei nodi, oppure alla variazione della raggiungibilità di un nodo, dell'energia disponibile, alla presenza di malfunzionamenti etc...
* Re-deployment of additional nodes phase: nodi sensore addizionali possono essere ridisposti in qualsiasi momento per rimpiazzare i nodi malfunzionanti o a causa della dinamica dei task. L'aggiunta di nuovi nodi comporta la necessità di riorganizzare la rete. L'alta frequenza di cambiamenti topologici e il vincolo stringente del risparmio energetico richiedono protocolli di routing molto particolari.

### Vincoli hardware

Un nodo sensore è composto da quattro unità base:
* Unità di sensing: di solito è composta da due sotto unità: sensore e convertitore analogico-digitale;
* Unità computazionale: di solito è associata ad una piccola unità di immagazzinamento dati e gestisce le procedure che permettono la collaborazione del nodo con gli altri nodi della rete per portare a termine il task assegnato;
* Unità transceiver: è l'unità che connette il nodo alla rete. Può essere un apparecchio ottico oppure un apparecchio a radio frequenza (RF). È possibile usare anche delle radio con basso duty-cycle anche se attualmente ci sono problemi nell'usare questi apparecchi in quanto viene consumata molta energia per le operazioni di spegnimento;
* Unità energetica: è forse il componente più importante di un nodo sensore; a volte può essere supportata da una unità per il recupero di energia (ad esempio da fonte solare).
Queste quattro componenti sono quelle basilari per un nodo sensore.

### Mezzo di trasmissione

In una rete di sensori multihop i nodi possono interagire tra loro tramite un mezzo di comunicazione wireless. È quindi possibile utilizzare onde radio. Una possibilità è quella di usare bande ISM (industrial, scientific and medical), cioè un gruppo predefinito di bande che in molti paesi sono utilizzabili liberamente. La maggior parte dei sensori attualmente in commercio fanno uso di un circuito RF.
Un altro possibile modo per far comunicare i nodi è tramite gli infrarossi. La comunicazione con gli infrarossi non richiede permessi o licenze e protetta da interferenze. I transceiver basati sugli infrarossi sono economici e facili da costruire. Il problema maggiore che si ha nell'uso degli infrarossi è la necessità di avere una "line-of-sight" diretta tra il trasmettitore ed il ricevitore. Questo rende gli infrarossi di difficile utilizzo nelle reti di sensori dove solitamente i nodi sono disposti in modo random.
La scelta del mezzo trasmissivo è imposta dall'applicazione. Ad esempio, le applicazioni marine impongono di usare l'acqua come mezzo trasmissivo. È quindi necessario usare onde che possano penetrare nell'acqua.

### Consumo energetico

Un sensore è dotato di una limitata sorgente di energia. Il tempo di vita di un nodo sensore dipende molto dal tempo di vita della batteria. In una rete di sensori ogni nodo ha il ruolo sia di generare che di ricevere dati, perciò la scomparsa di alcuni nodi può portare a significativi cambiamenti topologici che possono richiedere una riorganizzazione della rete e del routing.
È per queste ragioni che molte ricerche si stanno concentrando sulla creazione di protocolli e algoritmi power-aware, cioè protocolli che ottimizzano il consumo energetico.
Mentre nelle reti mobili e nelle reti ad hoc il consumo di energia è un importante fattore ma non è il principale (che risulta invece il soddisfacimento della QoS, cioè della qualità del servizio), nelle reti di sensori il consumo di energia è la principale metrica per valutare le prestazioni: questo perché nelle altre reti è possibile ricaricare o sostituire le batterie dei nodi mentre nelle WSN ciò potrebbe non essere possibile.
Il consumo di energia in un nodo sensore è essenzialmente dovuto alle tre principali attività svolte dal nodo:
* Sensing: la potenza necessaria per effettuare il campionamento dipende dalla natura dell'applicazione;
* Data processing: l'energia spesa nel processare i dati è molto piccola se comparata a quella spesa per la comunicazione;
* Communication: dei tre fattori è quello che necessita della maggior quantità di energia. La comunicazione comprende sia la ricezione che la trasmissione di dati i cui costi energetici possono essere ritenuti uguali.

### Protocolli di comunicazione

I requisiti menzionati in precedenza impongono dei vincoli molto stringenti sulla tipologia di protocolli di rete da adottare nelle WSN. Le tecnologie wireless a corto raggio costituiscono un requisito imprescindibile, visto il ridotto budget energetico a disposizione di ciascun nodo. Tuttavia, realizzare una rete wireless di comunicazione multi-hop, che sia robusta ai guasti ed in grado di auto-configurarsi anche in ambienti ostili, rappresenta una sfida tecnologica notevole, che ha richiesto (e tuttora richiede) l'impegno di molteplici enti di standardizzazione, quali ad esempio IEEE ed IETF. In ambito IEEE, la tecnologia IEEE 802.15.4 rappresenta un punto fermo nello sviluppo dei livelli MAC e PHY di una WSN, poiché in grado di fornire bitrate sino a 250 kbps e di abilitare l'uso di topologie multi-hop, in modo energeticamente efficiente. I livelli superiori dello stack possono essere invece implementati seguendo la specifica ZigBee e le più recenti proposte emerse in ambito IETF per le cosiddette low power lossy network.