Differences

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

Link to this comparison view

pm:prj2024:amocanu:ioana_octavia.tudor [2024/05/26 21:43]
ioana_octavia.tudor [Rezultate]
pm:prj2024:amocanu:ioana_octavia.tudor [2024/05/27 14:04] (current)
ioana_octavia.tudor [Rezultate]
Line 552: Line 552:
       */       */
       speed = (3600 * (float(circumference) * 0.0254)) / float(timer_one_rot);​       speed = (3600 * (float(circumference) * 0.0254)) / float(timer_one_rot);​
-      totalDistanceTraveled += (circumference ​/ 39370.07); // convertire circumferinta din inch in mile    ​+      totalDistanceTraveled += (circumference ​* 0.0000254);   ​
       readings++; // incrementare nr de citiri facute       readings++; // incrementare nr de citiri facute
       averageSpeed = (averageSpeed + speed) / 2;  // actualizare a vitezei medii cu ultima viteza curenta       averageSpeed = (averageSpeed + speed) / 2;  // actualizare a vitezei medii cu ultima viteza curenta
Line 677: Line 677:
 Functia este folosita pentru a actualiza si calcula punctul cardinal folosind media unui esantion de NUM_READINGS citiri. Functia este folosita pentru a actualiza si calcula punctul cardinal folosind media unui esantion de NUM_READINGS citiri.
 Se calculeaza un nou heading folosind funcția atan2 pentru a obține unghiul dintre axa y și x al magnetometrului,​ exprimat în grade. Dacă acest unghi este negativ, i se adaugă 360 de grade pentru a obține o valoare pozitivă. Se calculeaza un nou heading folosind funcția atan2 pentru a obține unghiul dintre axa y și x al magnetometrului,​ exprimat în grade. Dacă acest unghi este negativ, i se adaugă 360 de grade pentru a obține o valoare pozitivă.
-Apoi, se actualizeaza in vectorul de citiri (rotatie circulara), adaugand noul unghi si se face media stabilizand astfel directia obtinuta si reducand din fluctuatiile senzorului.+Apoi, se actualizeaza in vectorul de citiri (rotatie circulara) ​scotand cea mai veche valoare, adaugand noul unghi si se face media stabilizand astfel directia obtinuta si reducand din fluctuatiile senzorului.
   ​   ​
 <code c> <code c>
Line 686: Line 686:
     }     }
  
-    // Adăugarea noii citiri și calcularea mediei+    // Incrementare index circular 
 +    headingIndex = (headingIndex + 1) % NUM_READINGS;​ 
 + 
 +    // Scoate cea mai veche valoare din suma totală
     totalHeading -= headingReadings[headingIndex];​     totalHeading -= headingReadings[headingIndex];​
 +
 +    // Adaugă noua valoare la poziția cea mai veche, acum actualizată
     headingReadings[headingIndex] = newHeading;     headingReadings[headingIndex] = newHeading;
-    totalHeading += headingReadings[headingIndex]+    totalHeading += newHeading; 
-    ​headingIndex = (headingIndex + 1) % NUM_READINGS;​+ 
 +    ​// Calculează media
     averageHeading = totalHeading / NUM_READINGS;​     averageHeading = totalHeading / NUM_READINGS;​
 } }
Line 767: Line 773:
  
 Fara a apasa pe niciun buton, pe ecran imi sunt afisate viteza , viteza medie, distanta parcursa si distanta setata de target. Fara a apasa pe niciun buton, pe ecran imi sunt afisate viteza , viteza medie, distanta parcursa si distanta setata de target.
-{{:​pm:​prj2024:​amocanu:​p1.jpeg?​nolink&​400|}}+{{ :​pm:​prj2024:​amocanu:​p1.jpeg?​nolink&​400 |}}
  
 Butonul 1 imi seteaza dimensiunea rotii, am ledul aprins deoarece distanta target se reseteaza la 0 si eu parcursesem deja o distanta > 0. Butonul 1 imi seteaza dimensiunea rotii, am ledul aprins deoarece distanta target se reseteaza la 0 si eu parcursesem deja o distanta > 0.
 Dimensiunea rotii poate fi de 26, 27.5 sau 29 inch. Dimensiunea rotii poate fi de 26, 27.5 sau 29 inch.
-{{:​pm:​prj2024:​amocanu:​p2.jpeg?​nolink&​400|}} +{{ :​pm:​prj2024:​amocanu:​p2.jpeg?​nolink&​400 |}}
- +
  
 Butonul 2 imi va incrementa distanta target la fiecare apasare. Butonul 2 imi va incrementa distanta target la fiecare apasare.
-{{:​pm:​prj2024:​amocanu:​p3.jpeg?​nolink&​400 |}}+{{ :​pm:​prj2024:​amocanu:​p3.jpeg?​nolink&​400 |}}
  
 Butonul 3 imi va afisa temperatura,​ presiunea si punctul cardinal spre care ma indrept. Butonul 3 imi va afisa temperatura,​ presiunea si punctul cardinal spre care ma indrept.
 +{{ :​pm:​prj2024:​amocanu:​p4.jpeg?​nolink&​400 |}}
 +
 +Butonul 4 imi va afisa datele giroscopice si magnetometrice.
 +{{ :​pm:​prj2024:​amocanu:​p5.jpeg?​nolink&​400 |}}
 +
 +<note tip>
 +Videoclip in care se poate urmari functionalitatea proiectului.
 +https://​www.youtube.com/​watch?​v=jS80wkaHZCw
 +</​note>​
 +
 +<note tip>
 +Download:
 +{{:​pm:​prj2024:​amocanu:​bike_monitoring_device_final.zip|}}
 +
 +</​note>​
 +
 +===== Concluzie =====
 +
 +
 +La partea de hardware, ce a fost mai provocator a fost realizarea lipiturilor cu letconul pentru ca a necesitat multa rabdare, partea de conectat si facut cablajul mi-a placut, a fost ca un construit de Lego. Partea fizica cea mai dificila a fost realizarea carcasei, dar totodata am si vrut sa arate ca un produs final finisat si sunt destul de mandra de cum arata.
 +
 +In ceea ce priveste partea de cod, m-am documentat din mai multe surse pe care le voi referi mai jos despre conceptele folosite (exemplu: interactiunea cu MPU9250, cum functioneaza si cum e construit senzorul). Ceea ce mi-a placut cel mai mult e ca chiar am observat o legatura logica si clara intre partea fizica si cea de software. Am avut o dificultate si m-am straduit mult sa rezolv partea ce priveste afisarea punctului cardinal (desi magnetometrul este calibrat si valorile ajustate, ​ arata niste valori destul de dispersate),​ planuiesc sa lucrez in continuare la topicul acesta. ​
 +
 +In final, produsul final arata bine, are functionalitate practica reala si mi-a placut sa lucrez la creearea lui. 
 +
 +===== Jurnal =====
 +
 +===== Bibliografie si resurse =====
 +
 +https://​www.optimusdigital.ro/​ro/​senzori-senzori-inertiali/​1671-modul-10dof-mpu9250-i-bmp280-accelerometru-giroscop-magnetometru-i-barometru-digital-gy.html?​search_query=mpu&​results=435
 +
 +https://​www.epitran.it/​ebayDrive/​datasheet/​20.pdf
 +
 +https://​www.youtube.com/​watch?​v=250Lzc0WHIg&​list=PLIcgpRPBfC5U9chF8or-npb-BaCgIstxk&​index=3
 +
 +https://​www.youtube.com/​watch?​v=wazPfdGBeZA
 +
 +https://​www.youtube.com/​watch?​v=mzwovYcozvI
  
 +https://​forum.arduino.cc/​t/​solved-issue-mpu9250-sensor-cant-get-correct-data-from-magnetometer/​644845/​7
pm/prj2024/amocanu/ioana_octavia.tudor.1716748989.txt.gz · Last modified: 2024/05/26 21:43 by ioana_octavia.tudor
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