This is an old revision of the document!
Pentru ce e util?
Arduino primeste constant datele de la accelerometru si le trimite la modulul Bluetooth care le trimite la telefon pentru sincronizare si afisarea numarului de pasi si temperatura. In interfata aplicatiei mobile exista un buton, care porneste algroitmul de masurare a batailor inimii pe minut. Acest algoritm ruleaza 6 secunde, ceea ce provoaca blocarea celorlalte calculari. Dupa ce se termina masurarea BPM se afiseaza rezultatul pe telefon si se intoarce la celelalte calcule.
Aici va fi poza reala
Initializeaza structurile de date, varaibilele si libraria mpu (initializeaza comunicatia si seteaza senzorul).
Functia timp de 6 secunde citeste datele de la seszor si detecteaza daca s-a efectuat o bataie completa. Aceste 6 secunde au fost alese pentru ca rezulta o valoare mai exacta si e timp destul de mic ca sa nu se piarda conexiunea Bluetooth cu telefonul. Ca sa putem asocia un rezultat al pulsului cu o bataie de inima, am luat doua valoari de referinta 550 si 520, daca e mai mica de 520 atunci a fost efectuata o bataie, iar in momentul cand am citit o valoarea mai mare de 550, calculam timpul scurs intre aceste doua citiri (acesta este BPM). Dupa ce s-au scrus 6 secunde se calculeaza media acestor BPM, acesta va fi rezultatul final si cel trimis pentru sincronizare pe telefon.
Pentru a deduce algoritmul de numarare a pasilor, am conectat arduino la laptop cu firmware care afiseaza valorile X, Y, Z citite de la accelerometrul MPU6050. Dupa am deschis Serial Plotter si ma plimbam prin camera cu laptop si arduino conectat. De aici am dedus ca la fiecare pas valoarea Z creste peste 19500 (presupun ca aceasta valoare e doar pentru inaltimea mea si pasul meu). Algoritmul consta in verificarea daca variabila Z a crestul peste valoarea 19500, atunci se incrementeaza numarul de pasi parcursi si se calculeaza cat din numarul de pasi ca scop (pentru testare 2000) sunt parcursi.
Se citeste temperatura de la senzorul MPU6050.
Aceasta e functia care ruleaza la infinit pana placuta Arduino e conectata la tensiune. Se verifica daca a fost apasat butonul pentru masurarea BPM din interfata grafica a aplicatiei mobile si se apeleaza functia compute_pulse(). La infinit se apeleaza si functiile compute_steps() si get_temp() fara nicio verificare.
Acest proiect m-a invatat cum e sa proiectezi un device de la zero, care include si hardware si software. Am invatat cum sa deduc pattern-uri din citirea datelor din lumea reale si sa le utilizez in proiect (numararea pasilor). Am invatat cum comunica Arduino prin Bluetooth cu alte device-uri. Consider ca acest “fitness-tracker” isi atinge scopurile: calculeaza bine pulsul cu o eroare mica si numara bine pasii cel putin din mers cu o viteza normala.
Link-uri utile: