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.