Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2022:amocanu:smart-tracker [2022/05/21 01:25]
ilie.burdiniuc [Concluzii]
pm:prj2022:amocanu:smart-tracker [2022/05/28 19:45] (current)
ilie.burdiniuc [Bibliografie/Resurse]
Line 1: Line 1:
-====== ​Smart Tracker ======+====== ​Fitness ​Tracker ======
 ===== Introducere ===== ===== Introducere =====
  
Line 6: Line 6:
   * numara pasii parcursi   * numara pasii parcursi
   * masoara pulsul (bataile inimii)   * masoara pulsul (bataile inimii)
-  * sincronizeaza datele cu telefonul prin Bluetooth si aplicatie ​pe Android+  * sincronizeaza datele cu telefonul prin Bluetooth si aplicatie ​mobila
  
 Pentru ce e util?  Pentru ce e util? 
Line 34: Line 34:
  
 == Design == == Design ==
-Aici va fi poza reala +{{ :​pm:​prj2022:​amocanu:​design_hard_smart_tracker.jpg?​400 |}}
  
 == Conexiunile si schema electrica == == Conexiunile si schema electrica ==
Line 54: Line 54:
  
 == compute_pulse() == == compute_pulse() ==
-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.+Functia timp de 6 secunde citeste datele de la senzor ​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 ​si calculam numarul de batai pe minut folosind aceste date. Dupa ce s-au scrus 6 secunde se calculeaza media acestor BPM, acesta va fi rezultatul final si cel trimis pentru sincronizare pe telefon.
  
 == compute_steps() == == compute_steps() ==
-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).  +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 depaseste ​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.+Algoritmul consta in verificarea daca variabila Z e mai mare ca 19500, atunci se incrementeaza numarul de pasi si se calculeaza ​ce procentaj ​din scopul zilnic ​(pentru testare 2000) sunt parcursi.
  
 == get_temp() == == get_temp() ==
Line 64: Line 64:
  
 == loop() == == loop() ==
-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.+Aceasta e functia care ruleaza la infinit ​cat timp placuta Arduino e conectata la tensiune. Se verifica daca a fost apasat butonul pentru masurarea BPM si se apeleaza functia compute_pulse(). La infinit se apeleaza si functiile compute_steps() si get_temp() fara nicio verificare.
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-== Interfata grafica a aplicatiei pentru sincronizare ​la tracker: ==+== Interfata grafica a aplicatiei pentru sincronizare ​cu tracker: ==
 {{ :​pm:​prj2022:​amocanu:​android_app_smart_tracker.jpeg?​300 |}} {{ :​pm:​prj2022:​amocanu:​android_app_smart_tracker.jpeg?​300 |}}
  
 == Demo: == == Demo: ==
 +<​html><​p align="​center"><​iframe width="​560"​ height="​315"​ src="​https://​www.youtube.com/​embed/​ghhTDJjEgpo"​ title="​YouTube video player"​ frameborder="​0"​ allow="​accelerometer;​ autoplay; clipboard-write;​ encrypted-media;​ gyroscope; picture-in-picture"​ allowfullscreen></​iframe></​p></​html>​
 ===== Concluzii ===== ===== Concluzii =====
-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.+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 datele citite ​din lumea reala si sa le utilizez in proiect. 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.
 ===== Download ===== ===== Download =====
 {{:​pm:​prj2022:​amocanu:​smarttracker.zip|Arhiva cu surse si scheme}} {{:​pm:​prj2022:​amocanu:​smarttracker.zip|Arhiva cu surse si scheme}}
Line 79: Line 79:
  
 Link-uri utile: Link-uri utile:
-  * Milestone 1{{:​pm:​prj2022:​amocanu:​milestone1.pdf|}}+  * {{:​pm:​prj2022:​amocanu:​milestone1_fitness_tracker.pdf|Milestone 1}} 
 +  * {{:​pm:​prj2022:​amocanu:​milestone2_fitness_tracker.pdf|Milestone 2}}
   * [[https://​github.com/​jarzebski/​Arduino-MPU6050/​blob/​master/​MPU6050_accel_simple/​MPU6050_accel_simple.ino|Library Example]] folosit pentru intelegerea a cum se citesc date de pe MPU6050   * [[https://​github.com/​jarzebski/​Arduino-MPU6050/​blob/​master/​MPU6050_accel_simple/​MPU6050_accel_simple.ino|Library Example]] folosit pentru intelegerea a cum se citesc date de pe MPU6050
   * [[https://​www.xtronical.com/​basics/​heart-beat-sensor-ecg-display/​|Heart Beat Sensot ECG Display]] algoritm folosit pentru masurarea BPM, putin update-at   * [[https://​www.xtronical.com/​basics/​heart-beat-sensor-ecg-display/​|Heart Beat Sensot ECG Display]] algoritm folosit pentru masurarea BPM, putin update-at
pm/prj2022/amocanu/smart-tracker.1653085545.txt.gz · Last modified: 2022/05/21 01:25 by ilie.burdiniuc
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0