=========== EggMote =========== Il firmware governa il mote comandandolo attraverso tre stati: a) setup -comunicazione con il pc [EggMoteComm.java] -erase flash se viene premuto 'user button' b) sync sincronizzazione tra dispositivi via un pacchetto radio mandato da un generico mote su cui viene premuto 'usr button'. Dopo la ricezione del pacchetto (e la pressione del bottone sul mote trasmittente) parte un timeout resettato dall'arrivo di un altro generico pacchetto. Allo scadere, comincia l'erase della flash e dopo un intervallo fissato comincia il campionamento. c) log campionamento dei sensori e scrittura su flash Schematicamente (il colore del led è tra [.]): [VERDE] [VERDE] [BLU] [SPENTO/LAMPEGGIANTE] PC RADIO --> SYNC TIMEOUT --> ERASE FLASH --> LOG (nuovo) ^ ^ | | | | RESET --> SETUP --> SYNC --> LOG (append a precedente) [ROSSO] [VERDE] [SPENTO/LAMPEGGIANTE] Tutte le impostazioni del firmware sono in EggMote.h. Il numero massimo di misure attualmente registrabili è 2^16-1 = 65534. 1 Utilizzo rapido ================= 1.1 Programmazione ================== Per compilare da sorgenti (file EggMoteP.nc, EggMoteC.nc e EggMote.h) lanciare ./egg.py program A compilazione eseguita, inserendo un mote in una porta usb esso viene programmato: quando la procedura è finita viene comunicata la possibilità di toglierlo. Possono essere programmati più mote contemporaneamente: a programmazione ultimata premere CTRL+C. Il programma scriverà quanti mote sono stati effettivamente programmati in maniera corretta. 1.2 Lettura =========== Il contenuto della flash viene letto nella stessa directory in file della forma [nome mote].dat Prima di partire a leggere i mote assicurarsi di aver salvato in un altra directory tutti i file .dat già presenti. Per cominciare la lettura, eseguire ./egg.py read ed inserire i mote nella porta usb. Se il mote è provvisto di pile, eseguire prima dell'inserimento il reset (apposito pulsante del mote). In caso contrario il mote non viene letto: è necessario uscire dal programma con CTRL+C, effettuare il reset del mote e riavviare egg.py. Se la lettura è andata a buon fine, il programma consiglia di estrarlo dalla porta. Se la lettura ha avuto errori (di sequenzialità o di pacchetto corrotto) viene consigliato di lasciare il mote inserito. Esso verrà riletto (il nome del file sarà [nome mote](1).dat) sinché la lettura non verrà eseguita correttamente. Gli errori sono frequenti se il computer sta eseguendo calcoli e se sono in fase di lettura più mote contemporaneamente. Alla fine della procedura salvare i file .dat in un altra directory; i file di lunghezza nulla possono essere eliminati. Mantenere il file di dimensione maggiore per ogni mote. 2 Utilizzo EggMoteComm ====================== Per funzioni avanzate usare il comando java EggMoteComm /dev/ttyUSBx nome_mote comando dove x è il numero della porta usb (eseguire motelist per verificare le associazioni mote/porta), nome_mote è un identificativo scelto a piacere e comando è uno tra: read: legge su nome_mote[(x)].dat il contenuto della flash stop: se il mote è in logging, ferma il campionamento start: se il mote è stato fermato, fa ripartire erase: cancella il contenuto della flash [da non eseguire MAI] sync: effettua la sincronizzazione della flash (mette in sicurezza gli ultimi dati memorizzati) [non è necessario usarlo] 3 Compilazione ============== E' possibile selezionare alcune costanti in EggMote.h; la dimensione della flash è impostata in volumes-stm25p.xml (NON usare la dimensione massima consentita, 16*2^16, qualche bug nella libreria di logging impedisce la corretta lettura). Per compilare eseguire make tmote Vengono inoltre generati automaticamente alcuni wrapper java e compilati i file EggMoteComm.java. 4 Installazione =============== Eseguire motelist per vedere la porta a cui è legato il mote. Quindi eseguire make tmote reinstall bsl,/dev/ttyUSBx La ricompilazione non cancella la flash (solo un diverso template del formato dati preclude la corretta lettura della flash).