This shows you the differences between two versions of the page.
pm:prj2024:amocanu:ioana_octavia.tudor [2024/05/26 22:30] 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 789: | Line 795: | ||
<note tip> | <note tip> | ||
Download: | Download: | ||
- | + | {{:pm:prj2024:amocanu:bike_monitoring_device_final.zip|}} | |
- | ---- | + | |
</note> | </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 |