Utente:Davidedip78

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

Wireless Sensor Network (WSN)[modifica | modifica wikitesto]

Le Wireless Sensor Network sono, letteralmente, “reti di sensori senza fili”: in realtà, il sensore è solo una parte dell’intero sistema, che costituisce la WSN, mentre c’è tutto un insieme di hardware e software dedicato, affinché le misure rilevate dal sensore siano inviate tramite comunicazione radio a un sistema di elaborazione centrale, che metta a disposizione dell’utente le misure stesse o dei risultati da esse derivanti.


In origine era “Smart Dust”[modifica | modifica wikitesto]

L’idea di avere un “qualcosa” che possa monitorare dei parametri ambientali e che sia capace di integrarsi nell’ambiente, in cui si trova nasce nei laboratori della NASA, verso la fine del XX secolo: l’ambiziosa intuizione iniziale prevedeva addirittura di realizzare della smart dust, polvere intelligente, per l’appunto, ossia un insieme di piccolissimi elementi (nell’ordine del pollice), che fossero in grado, un volta posizionati casualmente in un ambiente qualunque, di riuscire a configurarsi tra loro, costruendo una rete di comunicazione, che permettesse di inviare i dati puntualmente raccolti ad un nodo centrale; caratteristica fondamentale della smart dust era anche il bassissimo costo dei singoli elementi, nell’ordine di qualche dollaro. Nella realtà, non si è poi dato seguito a questo progetto, ma l’idea di “sentire” il mondo, tramite elementi non tanto piccoli e nemmeno molto economici, ha comunque dato origine ad un nuovo filone di ricerca, quale quello delle reti di sensori wireless; da allora, infatti, numerosi laboratori universitari e privati si sono lanciati in uno sforzo cognitivo per realizzare dei sistemi hardware e software, tali da realizzare questo scopo. Come risultato, oggi abbiamo sul mercato numerosi tipi di hardware, su cui è alloggiata una parte di controllo, una di comunicazione e una di sensori, che permettono di costruire una rete di sensori, capaci di essere dislocati su aree abbastanza vaste e in grado di comunicare tra loro, tramite dei protocolli di comunicazione, sviluppati ad hoc per tali sistemi. Lo stesso campo delle telecomunicazioni ha aperto un filone nuovo di indagine, quale quello dello studio di protocolli di livello MAC e livello Routing adatti per le WSN. Ad essi si è affiancata anche un’altra ricerca, tesa a semplificare la procedura di programmazione dei singoli nodi ed è stato creato un software dedicato, open source, che funziona da vero e proprio sistema operativo, con una propria sintassi, ma che permette un buon livello di astrazione dal linguaggio macchina; tal software è stato denominato TinyOS, ovvero “piccolo Sistema Operativo”.


Descrizione di una Wireless Sensor Network[modifica | modifica wikitesto]

Una Wireless Sensor Network è costituita da un insieme di elementi, definiti nodi (o mote), che, rispettano certe caratteristiche, come quelle di energy saving, auto riconfigurabilità, data processing, comunicazione wireless, che hanno il compito di monitorare determinati parametri ambientali, tramite dei sensori appositi, alloggiati su di essi. Ogni nodo può interagire con gli altri nodi, secondo il protocollo di comunicazione adottato, in modalità “flat” o “gerarchica”. L’obiettivo primario di ogni nodo è comunque quello di inviare i propri dati verso un “centro di raccolta”, all’interno della Wireless Sensor Network, che viene definito “Gateway”: quest’ultimo ha il compito di inviare tutti i dati pervenuti ad un sistema centrale, generalmente un server, che funge da database, tramite comunicazione wired (ethernet,usb,LAN, etc.), oppure wireless (es. GPRS). Nelle Wireless Sensor Network più evolute il flusso dati può non limitarsi a quello monodirezionale descritto (dai nodi al Gateway), ma può essere omnidirezionale, ovvero possono essere trasmessi comandi da nodo a nodo, o dal server centrale (quindi dall’utente) ai nodi.


Teoria[modifica | modifica wikitesto]

Dati due punti A,B, a distanza R l’uno dall’altro, e data la trasmissione di un’onda elettromagnetica, che supponiamo irradiarsi in forma sferica, si dimostra che la potenza di trasmissione (PT) necessaria per raggiungere il punto B da A, è proporzionale alla potenza ricevuta (PR) e ad un fattore R, che rappresenta il raggio dell’onda sferica, elevato ad un coefficiente m, intero, pari al numero di trasmissioni intermedie tra A e B. Quindi, minore è il raggio, minore sarà la potenza da trasmettere : se lo stesso tragitto A-B, invece di coprirlo con un’unica trasmissione, viene effettuato con un’insieme di trasmissioni a potenza più bassa lungo il tragitto stesso, si ottiene che la potenza totale necessaria in trasmissione è notevolmente inferiore.


Architettura di un Sistema WSN[modifica | modifica wikitesto]

Una wireless sensor network è solo una parte di un sistema più complesso, definito Sistema WSN; esso, infatti, inizia dalla WSN vera e propria ma prosegue con il canale di comunicazione tra la WSN e una database di raccolta dati, che può essere un server internet, e l’interfaccia tra il database e l’utente finale. Quindi, ha senso parlare di WSN, e soprattutto, ha senso il suo utilizzo, se non rimane confinato alla semplice dimostrazione di funzionalità della stessa, ma è in grado tramite delle interfacce opportune di interagire con l’utente finale: solo in questo modo si può ritenere che il “sensing”dell’ambiente in questione sia ragionevolmente utile. Analizzando in dettaglio gli elementi che costituiscono una WSN, appare subito chiara la differenza tra i nodi della rete, preposti alla gestione dei sensori e al mantenimento della infrastruttura wireless della rete, e uno (o anche più) nodi, che hanno il compito di fare da collettori e trasmettere i dati ricevuti dagli altri nodi verso il server centrale. Consideriamo in primo luogo, la struttura a blocchi di un singolo nodo (Fig 1):


Come si può vedere in figura, sul nodo è presente un elemento di power supply, generalmente una batteria, che fornisce l’alimentazione necessaria per tutte le funzionalità del nodo: in generale, la conservazione della carica della batteria è un elemento chiave, visto che la durata di vita dei singoli nodi e, quindi, della rete è uno dei parametri cruciali per valutare l’efficienza e la bontà di una WSN. Cuore del sistema nodo è sicuramente il microcontrollore, che deve rispondere alle caratteristiche di basso costo, buone capacità computazionali, memoria a bordo sufficiente per garantire le prestazioni minime richieste ad una WSN, e possa consumare poca potenza,o almeno preveda degli stati di power saving, quando non viene utilizzato. Il microcontrollore è colui, che gestisce ad alto livello tutti gli elementi presenti sul nodo:decide quando interrogare i sensori, quando trasmettere i dati e a quale nodo trasmetterli, può effettuare delle operazioni di data fusion, implementa e gestisce il protocollo di comunicazione. Il transceiver (TRANSmitter/reCEIVER) è l’elemento di interazione del nodo con il resto dei nodi della rete, ovviamente nel range della sua portata di trasmissione: al transceiver sono affidati i compiti di ricezione e trasmissione dati e di “Sensing del canale”, ovvero deve analizzare il livello di potenza radio presente sul canale di comunicazione, per stabilire se trasmettere o meno un pacchetto dati; ad esso sono anche affidati tutti i compiti, richiesti dalla teoria delle telecomunicazioni, ovvero l’analisi della correttezza del pacchetto ricevuto, l’invio della stringa di preambolo, etc. Il modulo di georeferenziazione può non essere presente a bordo, ma in generale, serve per fornire al nodo una informazione relativa alla propria posizione geografica. Molto importante per una WSN è lo stack dei sensori, ovvero l’insieme dei sensori che possono essere alloggiati su ogni singolo nodo, tramite una elettronica opportuna: garantire la presenza di una elettronica espandibile, ovvero che permetta di posizionare su ogni nodo un numero sufficientemente elevato di sensori, comporta sicuramente un innalzamento del livello di qualità della WSN, associato ad un notevole risparmio in termini di costi economici, visto che a parità di sensori posso avere meno nodi da posizionare, e in termini di “costi” di protocollo, perché una rete meno densa di nodi, può essere gestita anche da algoritmi meno complessi. La struttura di un nodo master non differisce sostanzialmente da un qualunque altro nodo, se non nel fatto che insieme ad esso deve essere prevista una elettronica apposita, per trasmettere i dati dalla WSN verso un provider internet o un qualsiasi altro sistema di raccolta dati, che possa essere accessibile all’utente finale; questa elettronica aggiuntiva costituisce quello, che viene definito Gateway. Quindi, allo schema precedente del nodo, deve essere aggiunta una parte, preposta alla comunicazione con il server: essa è fortemente condizionata dal tipo di connessione che si sceglie di utilizzare: può infatti essere di tipo wired, come una LAN,Ethrnet, USB o altro, oppure può essere anch’essa wireless, ad esempio GPRS; sarà quindi presente un’elettronica di interfaccia, che permetta la comunicazione tra Gateway e nodo master, e tra gateway e server, in questo caso può essere un comunissimo modem Fig.2


Sensori: interfaccia e condizionamento[modifica | modifica wikitesto]

Un grande ostacolo attualmente presente, che impedisce una rapida espansione del mercato delle WSN è l’assenza di sensori integrabili, di basso consumo e basso costo, da poter alloggiare sui singoli nodi: a parte i sensori più comuni, che si trovano in commercio e che misurano grandezze “semplici”, come umidità e temperatura, non c’è molta scelta, anzi è quasi assente, per sensori che misurino grandezze più “interessanti”, come la percentuale di gas presenti in un ambiente o in grado di riconoscere e quantificare le sostanze disciolte in un liquido. La maggiore difficoltà per arrivare all’integrazione tra la WSN e i sensori rimane il fatto, che molti sensori hanno bisogno di un “condizionamento”: ovvero possono funzionare solo con determinate condizioni al contorno, facilmente riproducibili in laboratorio, ma difficilmente realizzabili su un nodo, se non a costo di abbandonare la filosofia della WSN: tra le altre, ci possono essere forti vincoli sulla temperatura di funzionamento, generalmente stabile intorno a valori elevati, anche superiori a parecchie centinaia di gradi centigradi; oppure la necessità per i sensori di gas di mantenere un flusso continuo e costante di aria, per garantire una misurazione affidabile. Comunque, una volta superate queste difficoltà, rimane il problema ingegneristico di interfacciare il sensore con il nodo della WSN: i sensori si dividono in due grandi categorie, quelli analogici, ovvero che forniscono in uscita la variazione di una grandezza (Tensione,Resistenza,Corrente), e quelli digitali, che forniscono direttamente un segnale digitale contenente la misura, già codificata. Per poter garantire espansibilità e generalità alla WSN, l’interfaccia nodo-sensore deve essere almeno in grado di gestire queste due tipologie: deve quindi prevedere delle connessioni (bus), che forniscano l’alimentazione necessaria al sensore, la massa, uno o più bus dati, e per i sensori digitali, anche un bus, che fornisca il sincronismo (clock); tutto questo, insieme alla gestione del sensore (tempi di accesso, ritardo di lettura etc.) viene demandato ad una apposita elettronica, esterna al microprocessore,dal quale però, dipende e col quale comunica, tramite bus appositi: un esempio, può essere il bus I2C.


Rete Flat e Rete gerarchica[modifica | modifica wikitesto]

La possibilità di scambio dati tra vari nodi in una WSN è garantita dalla infrastruttura di comunicazione, che viene a crearsi tra i nodi, grazie ad un protocollo implementato sui nodi stessi: i protocolli di gestione della rete si dividono principalmente in due classi, quelli flat e quelli gerarchici. I protocolli flat prevedono che tutti i nodi siano tra loro “allo stesso livello di importanza”, eccetto uno che funge da master o coordinatore (sink), che può o meno coordinare le trasmissioni degli altri, ma comunque ha il compito di trasferire i dati della WSN verso il server. La configurazione, che generalmente si viene a creare in questo tipo di rete, con pochi nodi, è detta a “stella”, perché tutti i nodi comunicano col master in maniera diretta. I protocolli gerarchici, invece, prevedono l’attribuzione di livelli diversi tra i singoli nodi: in base alle metriche scelte, ogni nodo, che riceva un segnale di beacon (ovvero di “saluto”) da un altro, diventa lo slave e l'altro il master; a sua volta il nodo slave, generando un segnale di beacon, può diventare il master per un altro nodo. La configurazione che si viene a creare è detta ad albero (Fig. 3).



Applicazioni[modifica | modifica wikitesto]

I campi di applicazione delle WSN sono innumerevoli: ovunque si voglia monitorare dei parametri fisici e sia difficoltoso utilizzare sensori collegati a cavi di trasmissione o elettrici, la soluzione migliore è oggi rappresentata proprio dalle WSN. Di fatto, il loro utilizzo varia dai temi della sicurezza, alla sanità, ai trasporti, alle infrastrutture, all’agricoltura, all’industria. Ad esempio, per quel che riguarda la sicurezza, una WSN può essere usata per allertare in caso di incendi boschivi, slavine, frane; nella sanità, possono servire per tenere costantemente sotto controllo un paziente, affetto, ad esempio da cardiopatie. Si possono usare nel monitoraggio dei ponti, palazzi, grattacieli, per determinarne “consistenza” strutturale; nell’agricoltura servono per seguire il ciclo vitale delle piante e dei frutti, per rilevare attacchini parassiti o per certificare la qualità di un prodotto.


Filosofia del TinyOS[modifica | modifica wikitesto]

Introduzione[modifica | modifica wikitesto]

Il TinyOS è un sistema operativo, creato per embedded systems, quindi deve essere in grado di “girare” in condizioni di risorse limitate: poca memoria, minime capacità di calcolo. La filosofia che ha portato alla realizzazione del TinyOS è nata dalla necessità di fornire i sistemi embedded di un sistema operativo, che pur occupando poca memoria riuscisse a svincolare il programmatore dalla contingenza dell’hardware utilizzato; in altre parole, l’uso del TinyOS permette di programmare un sistema embedded, con un linguaggio simile al C++, il NesC, pur senza conoscere approfonditamente il funzionamento dell’hardware di basso livello (Microcontrollore,transceiver, flash memory,etc.). Questo significa che esistono delle “classi”, ovvero delle parti di programma già scritte, che gestiscono l’hardware di basso livello: conseguentemente se c’è la necessità di passare da un hardware ad un altro( per esempio da una Mica2 ad una Micadot), in linea di principio, è sufficiente specificare al momento della programmazione del mote il tipo di mote presente, senza cambiare il codice di alto livello scritto dal programmatore. Chiaramente, ci sono delle note negative da considerare: in primo luogo, la presenza di un sistema operativo, per quanto piccolo, comporta certa occupazione di memoria, che viene sottratta così da quella nominalmente disponibile, inoltre introduce un maggiore onere computazionale per il micro e rende complessivamente più instabile il sistema.


System Vision[modifica | modifica wikitesto]

La caratteristica fondamentale della visione del sistema in chiave TinyOS è la possibilità di gestire ogni elemento del programma (file, moduli di gestione hardware, etc.) come un modulo a sé stante, e collegabile con tutti gli altri tramite delle connessioni, del tutto simili a dalle linee elettriche: in questo modo un programma che gestisca un nodo wireless, per quanto complesso e articolato, è facilmente gestibile, come insieme di tanti sotto/file, che possono interagire tra loro con estrema semplicità: oltre a rendere molto più leggibile un programma, questa tecnica ha l’enorme vantaggio di consentire di riutilizzare una parte del programma, in un qualsiasi altro programma, una volta introdotto il modulo corrispondente.


I moduli[modifica | modifica wikitesto]

In TinyOS per modulo si intende una unità funzionale, che rappresenta una parte di programma, in grado di interfacciarsi con altri moduli, di livelli diversi: -un moduloA si definisce di livello superiore rispetto ad un moduloB, se il moduloA comanda o usa il moduloB. -un moduloB si definisce di livello inferiore rispetto ad un moduloA, se il moduloB è usato dal moduloA e fornisce delle interfacce per ricevere i comandi.

Sostanzialmente, un modulo è un file, preposto alla implementazione di una singola parte dell’algoritmo di gestione, se il modulo è di alto livello, o dell’hardware se il modulo è di basso livello.


--Davidedip78 18:27, 26 gen 2006 (CET)