• Non ci sono risultati.

4.6 Raccolta dei dati

4.6.2 Congurazione

Congurazione dell'elemento mobile

In gura 4.7 è rappresentata MobileElementC, la congurazione della com- ponente che rappresenta l'elemento mobile: i riquadri con il bordo scuro indicano le componenti che la costituiscono, mentre i riquadri più chiari rappresentano la connessione tra le componenti tramite interfaccia, dove i riquadri puntinati indicano le interfacce usate e quelli tratteggiati le inter- facce oerte. MobileElementP implementa il dispositivo mobile utilizzando le funzionalità oerte dalle componenti cui è connesso, proprie del sistema operativo TinyOS, cioè:

ˆ MainC tramite l'interfaccia Boot - Fornisce le funzionalità base, tra cui il boot

ˆ LedsC tramite l'interfaccia Leds - Gestisce l'accensione e lo spegni- mento dei led posti sul sensore

Figura 4.7: Congurazione TinyOS che implementa il dispositivo di raccolta mobile

ˆ TimerForBeacon, istanza della classe TimerMilliC, tramite l'inter- faccia Timer<TMilli> - Timer con granularità dei millisecondi, regola il periodo di invio del beacon

ˆ TimerCleaning, istanza della classe TimerMilliC, tramite l'interfac- cia Timer<TMilli> - Timer con granularità dei millisecondi, si occupa della pulizia periodica dell'array received per la gestione della maschera ˆ TimerReset, istanza della classe TimerMilliC, tramite l'interfaccia Timer<TMilli> - Timer con granularità dei millisecondi, gestisce la pulizia periodica delle strutture BuerElement

ˆ ActiveMessageC tramite le interfacce Receive e SplitControl - Si oc- cupa della ricezione dei dati via radio e permette l'accensione e lo spegnimento della radio

ˆ SerialActiveMessageC tramite le interfacce Receive, AMSend, Split- Control, Packet e AMPacket - Si occupa della comunicazione sulla porta seriale

ˆ Un'istanza della componente AMSenderC, tramite le interfacce AM- Send, Packet e AMPacket - Si occupa dell'invio dei dati sulla radio ˆ UserButtonC tramite le interfacce Get<button state> e Notify<button

state> - Permette di compiere alla pressione del bottone User presente sulla board del sensore le funzioni specicate nel codice

Congurazione dell'elemento sensore

Il nodo sensore è realizzato tramite la congurazione SensorNodeC che in- terconnette la componente SensorNodeP, sviluppata in questa tesi, con le componenti proprie di TinyOS ragurate in gura 4.8 che forniscono al- cune funzionalità necessarie all'implementazione delle operazioni svolte dal sensore.

Figura 4.8: Congurazione che implementa il nodo sensore in TinyOS Il modulo SensorNodeP è interconnesso con:

ˆ MainC tramite l'interfaccia Boot - Fornisce le funzionalità base, tra cui il boot

ˆ LedsC tramite l'interfaccia Leds - Gestisce l'accensione e lo spegni- mento dei led posti sul sensore

ˆ ReadingComponentP tramite l'interfaccia ReadingInterface - Com- ponente sviluppata in questa tesi, si occupa della gestione delle letture dai tre sensori di umidità, temperatura e intensità luminosa presenti sul dispositivo e segnala quando tutte le letture sono terminate ˆ TimerSending, istanza della classe TimerMilliC, tramite l'interfaccia

Timer<TMilli> - Timer con granularità dei millisecondi, regola l'invio dei pacchetti sulla radio

ˆ TimerSensing, istanza della classe TimerMilliC, tramite l'interfaccia Timer<TMilli> - Timer con granularità dei millisecondi, determina il periodo di campionamento

ˆ TimerDC, istanza della classe TimerMilliC, tramite l'interfaccia Ti- mer<TMilli> - Timer con granularità dei millisecondi, regola l'accen- sione e lo spegnimento della radio in duty cycle

ˆ TimerContact, istanza della classe TimerMilliC, tramite l'interfac- cia Timer<TMilli> - Timer con granularità dei millisecondi, scatta se durante una comunicazione non viene ricevuto nessun beacon per un certo intervallo di tempo: in questo caso si assume che il ME sia uscito dall'area di contatto e che la comunicazione sia terminata

ˆ TimerCleaning, istanza della classe TimerMilliC, tramite l'interfac- cia Timer<TMilli> - Timer con granularità dei millisecondi, si occupa della pulizia periodica delle strutture d'appoggio

ˆ WaitBeaconTimer, istanza della classe TimerMilliC, tramite l'inter- faccia Timer<TMilli> - Timer con granularità dei millisecondi, viene settato nel momento in cui viene ricevuto un beacon con un ACK che segnala la perdita di alcuni pacchetti. I pacchetti persi vengono ritra- smessi immediatamente, ma poiché si potrebbero ricevere altri ACK non ancora aggiornati, per un tempo stabilito da WaitBeaconTimer, questi vengono ignorati per evitare di dare origine a duplicati

ˆ AMSenderC, tramite le interfacce AMPacket, Packet e AMSend - Gestisce l'invio dei pacchetti sulla radio

ˆ ActiveMessageC, tramite l'interfaccia SplitControl - Componente che permette di accendere e spegnere la radio

ˆ AMReceiverC, tramite l'interfaccia Receive - Gestisce la ricezione di pacchetti dalla radio

ˆ SensirionSht11C(Temp), tramite l'interfaccia Read<uint16 t> - Com- ponente relativa al sensore SensirionSht11C presente sul mote, si oc- cupa della lettura del valore di temperatura

ˆ SensirionSht11C(Humid), tramite l'interfaccia Read<uint16 t> - Componente relativa al sensore SensirionSht11C presente sul mote, si occupa della lettura del valore di umidità

ˆ HamamatsuS1087ParC(Light), tramite l'interfaccia Read<uint16 t> - Componente relativa al sensore HamamatsuS1087ParC presente sul mote, si occupa della lettura del valore di intensità luminosa

ˆ UserButtonC, tramite le interfacce Get<button state t> e Notify<button state t> - Permette di rilevare la pressione del pulsante User presen- te sul dispositivo e di svolgere determinate funzioni in base a quanto stabilito dal codice

Si noti che i valori campionati di temperatura, umidità e intensità luminosa sono espressi come valori digitali e devono essere convertiti tramite formule apposite. Questa procedura, svolta dal software che elabora i dati prima di inviarli al server, verrà descritta nel capitolo 6.