Differences

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

Link to this comparison view

pm:prj2021:amocanu:ciclocomputer [2021/04/27 10:04]
teodora.argintaru
pm:prj2021:amocanu:ciclocomputer [2021/05/22 16:49] (current)
teodora.argintaru
Line 8: Line 8:
 Astfel, proiectul pe care l-am ales constă într-un ciclocomputer,​ deoarece consider că un astfel de device este util oricărui ciclist. Astfel, proiectul pe care l-am ales constă într-un ciclocomputer,​ deoarece consider că un astfel de device este util oricărui ciclist.
 \\ \\
-Scopul principal al proiectului este familiarizarea cu plăcuța Arduino și modul în care diferiți senzori interacționează cu aceasta. Computerul de bicicletă va oferi informații în timp real despre viteză, ​distanța parcursă, iar la frânare aprinde stopul bicicletei.+Scopul principal al proiectului este familiarizarea cu plăcuța Arduino și modul în care diferiți senzori interacționează cu aceasta. Computerul de bicicletă va oferi informații în timp real despre viteză, ​timpul trecut de la începutul turei, precum și despre elevația din timpul acesteia.
  
  
 ===== Descriere generală ===== ===== Descriere generală =====
-Ciclocomputerul va avea un buton de ON/OFF.\\ +Ciclocomputerul va fi un device care se va monta pe bicicletă. Singura parte vizibilă pentru utilizator va fi ecranul LCD, unde vor fi afișate informațiile relevante
-**Viteza roții** va fi calculată cu ajutorul unui senzoru ​de efect Hall, și un magnet prins pe roata din față.\\ +**Viteza roții** va fi calculată cu ajutorul unui senzor ​de efect Hall, și un magnet prins pe roata din față.\\ 
-**Distanța parcursă** va fi calculată ​drept //media vitezei ​de la începutul execuției * timpul total//. +**Elevația** va fi calculată ​cu ajutorul modulului ​de accelerometru ​și giroscop.\\
-Tot senzorul pentru efect Hall și magnetul vor fi folosiți și pentru detectarea momentelor de frânare. În aceste cazuri se va aprinde stopul bicicletei.\\ +
- +
-Pentru pierderile cauzate de frecare se va lua în calcul tipul de cauciucuri.\\+
  
 === Schema bloc === === Schema bloc ===
-{{ :​pm:​prj2021:​amocanu:​ciclocomputer_block_2.png |}}+{{ :​pm:​prj2021:​amocanu:​ciclocomputer_block.png |}}
 ===== Hardware Design ===== ===== Hardware Design =====
 <​note>​ <​note>​
 ** Lista de componente ** ** Lista de componente **
   * Arduino UNO   * Arduino UNO
-  * LCD 16x2 +  * Modul LCD Nokia 5110
-  * Breadboard+
   * Fire   * Fire
   * Modul senzor efect Hall (luat de la un device de kilometraj)   * Modul senzor efect Hall (luat de la un device de kilometraj)
   * Magnet   * Magnet
-  * Buzzer +  * Modul accelerometru și giroscop MPU6050 
-  * LED+
 </​note>​ </​note>​
 +
 +=== Schema electrică ===
 +{{ :​pm:​prj2021:​amocanu:​ciclocomputer_pinout.png?​500 |}}
 ===== Software Design ===== ===== Software Design =====
 +Pentru implementare,​ am folosit interfața I2C pentru comunicația cu modulul MPU6050 (alături de biblioteca MPU6050_tockn) și comunicația SPI (implementată in software în biblioteca //​Adafruit_PCD8544.h//​) cu modulul LCD Nokia 5110.
 +Pentru senzorul de efect Hall, am testat mai întâi cu un multimetru polaritatea celor doi pini (pentru că senzorul făcea parte inițial dintr-un vitezometru) și l-am conectat la pinul digital 8, în modul INPUT_PULLUP.
 +=== Structura codului ===
 +  * funcția **setup** inițializează pinul pentru senzor Hall, display-ul și comunicația I2C cu senzorul MPU6050
 +  * funcția **loop** afișează de fiecare dată noile informații
 +  * funcțiile **print_speed**,​ **print_elevation**,​ **print_time_elapsed** realizează afișarea efectivă
 +  * funcția **calculate_elevation** adaugă la elevația curentă abs(sin(variație_OY)),​ în cazul în care variația trece de un prag setat
 +  * funcția **calculate_speed_elevation** verifică dacă este prima dată când se întâlnește magnetul după o perioadă în care starea a fost HIGH (adică s-a făcut o rotație completă a roții din față) și dacă da, atunci calculează viteza curentă și elevația; dacă a trecut prea mult timp de când nu s-a mai întâlnit magnetul, atunci viteza este probabil 0
 +  * funcția **calculate_time_elapsed** actualizează timpul trecut de la începerea turei
 +
 ===== Rezultate obținute ===== ===== Rezultate obținute =====
 +[[https://​youtu.be/​uyjJ-Wnt36Q|Link demo proiect]]
 +[[https://​github.com/​teodoraargintaru/​ciclocomputer|Cod sursă]]
 +
 ===== Concluzii ===== ===== Concluzii =====
 +În concluzie, proiectul la PM a reprezentat o provocare interesantă anul acesta.
 +Cred că una dintre cele mai dificile părți la proiectul meu a fost calibrarea și poziționarea senzorilor (parte la care sunt destul de sigură că încă se mai pot aduce îmbunătățiri :-)).
 +Proiectul reprezintă un punct de plecare bun pentru un device pe care chiar l-aș putea folosi atunci când merg cu bicicleta. Singurul dezavantaj este probabil dimensiunea componentelor,​ mult mai incomodă decât cea a unui ceas care ar avea aceleași funcții.
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
 +  * https://​github.com/​tockn/​MPU6050_tockn/​blob/​master/​examples/​GetAllData/​GetAllData.ino
 +  * https://​create.arduino.cc/​projecthub/​muhammad-aqib/​interfacing-nokia-5110-lcd-with-arduino-7bfcdd
 +  * https://​maker.pro/​arduino/​tutorial/​how-to-interface-arduino-and-the-mpu-6050-sensor
  
 {{:​pm:​prj2021:​amocanu:​ciclocomputer.pdf|}} {{:​pm:​prj2021:​amocanu:​ciclocomputer.pdf|}}
pm/prj2021/amocanu/ciclocomputer.1619507097.txt.gz · Last modified: 2021/04/27 10:04 by teodora.argintaru
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