Aplicatie are scopul de a inregistra acceleratiile in timpul unei calatorii (masina, bicicleta, chiar si alergat) si sa afiseze un set de informatii folositoare si de asemenea putand realiza un profil al utilizatorului. Un astfel de dispozitiv isi poate avea utilitate in mai multe situatii:
Dispozitivul va avea conectat un accelerometru cu 3 axe la convertorul analog digital al micro procesorului care v-a putea ori trimite datele prin seriala catre un laptop ori va putea inregistra datele pe un card SD.
Principalul mod de fuctionare va fi cel in care se trimit datele in timp real catre un laptop pentru a putea fi vizualizate intr-un mod placut. Astfel ca toate acceleratiile primite ca voltaj de la accelerometru vor trece prin ADC si vor fi trimise mai departe catre laptop prin serial. Aici pachetele vor fi asteptate de un server dezvoltat in C care la randul sa va trimite datele prin SOCKET pentru a putea fi prelucrate mai departe intr-un mediu mai interactiv precum Adobe Flash. Este necesar un astfel de server C deoarece Flash-ul nu poate citi de la interfata seriala. Ca front end am ales Flash deoarece ofera posibilitati nelimitate in designul aplicatiei oferind si suport pentru touchscreen lucru extrem de folositor la echipamentele embeded.
Se vor putea detecta si calcula:
Daca se modifica modul de comunicare din serial in spre exemplu bluetooth aplicatia va putea fi portata cu extrem de mare usurinta pe PDA-uri sau smartphone-uri oferind suport si pentru touch screen.
Accelerometru da 1.5 - 3.5 volts output. ADC returneaza o valoare intre 0 - 1023. Impart 1023 la 5 volts pentru a obtine 204.6 care este output-ul per volt. Scad 1.5 volti din voltaj pentru a obtine un range de 0 - 2 volti. Acest lucru se intampla in server. Acesta va trimite valorile citite mai departe prin socketi de unde o aplicatie Flash/ Air va prelua controlul si va prelucra datele raw primite de la accelerometru.
Aici va cacula medii de accelearii, maxime, zone de risc, grafice de acceleratii in timp si spatiu.
De asemenea va realiza profilul utilizatorului determinand stilul: agresiv, normal, sub limita etc.
Aceste informatii sunt doar inceputul se pot realiza mult mai multe.
Toate vor fi prezentate printr-un GUI foarte interactiv si placut la vedere. Datele vor putea pe urma fi salvate ca XML sau intr-o baza de date SQL putand fi trimise catre un prieten sau poastate pe un site sau blog personal.
unsigned int read_adc(unsigned char adc_input) { ADMUX=adc_input|ADC_VREF_TYPE; // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCW; }
void main(void) { int adc; while (1) { adc = read_adc(0); printf("|%d|", adc); delay_ms(500); }; }
Actionscript 3:
import flash.events.*; import flash.net.Socket; var socket:Socket = new Socket("localhost",5335); socket.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler); function socketDataHandler(event:ProgressEvent):void { var now = new Date(); trace(now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+":"+now.getMilliseconds()+" = "+socket.readUTFBytes(socket.bytesAvailable)); }
Acesta este doar inceputul proiectului. In limita timpului disponibil vreau sa implementez si un receiver GPS alaturi de accelerometru pentru a putea realiza o mapare exacta pe o harta a acceleratiilor vazandu-se exact diferitele portiuni cu nivelele de acceleratii corespunzatoare.