Odometru-Speedometru bicicleta

Introducere

Prezentarea pe scurt a proiectului:

  • ce face: tine cont de distanta parcursa, timpul in ore:minute:secunde, viteza medie si viteza maxima atinsa de biciclist.
  • care este scopul lui: ajuta biciclistul sa isi inregistreze propriile performante pentru a putea evolua
  • ideea de la care am pornit: mereu mi-am dorit sa pot inregistra astfel de detalii cand merg pe bicicleta fara a utiliza telefonul sau vreun ceas inteligent. Voiam sa am un aparat integrat in bicicleta care sa imi poata spune mereu cum m-am descurcat in cursa mea.
  • de ce este util pentru alţii şi pentru mine: Personal, imi place foarte mult sa merg cu bicicleta si m-ar ajuta foarte mult un astfel de instrument care sa imi monitorizeze si inregistreze detaliile legate de cursa. Sun convins ca multi alti oameni cu o astfel de pasiune ar fi incantati sa aiba acest instrument.

Descriere generală

Schema bloc:

Componente: Arduino uno, LCD 16×2, butoane (3), rezistor 221ohm, rezistor 10k ohm (3), potentiometru de 10k ohm, potentiometru 10k ohm, senzor hall

Descriere:

- Cand arduino este initializat va aparea un mesaj pe lcd: “Press button to start”

- Cand biclistul va apasa oricare dintre cele 2 butoane se va considera ca o cursa a inceput si se va afisa mesajul “START”

- Displayul va incepe sa arate km parcursi si durata deplasarii care se vor actualiza in timp real.

- Senzorul hall montat la roata va inregistra fiecare rotatie completa a rotii. La fiecare rotatie completa se va afisa un '+' pe ecranul lcd pentru cateva secunde.

- Apasand butonul asignat schimbarii modului de afisare pe display, lcd-ul va arata viteza maxima atinsa in loc de distanta parcursa

- Apasand butonul de pauza va pune pe pauza cursa curenta, iar apasandu-l a doua oara va reporni toate functionalitatile

- Apasand butonul de oprire consideram ca biciclistul a incheiat cursa, iar rezultatele finale vor fi afisate pe LCD

Hardware design

Listă de piese:

- Arduino uno

- LCD 16×2

- Butoane (3)

- Rezistor 221ohm

- Rezistor 10k ohm (3)

- Potentiometru de 10k ohm

- Senzor hall

Software Design

Boblioteci utilizate:

- LiquidCrystal_I2C.h

- Wire.h

Setup si initializari:

Setez pinii butoanelor pe mod “INPUT_PULLUP”, iar pinul pentru senzorul hall pe “INPUT”. De asemenea, setez ca lcd-ul sa afiseze mesajul “PRESS BUTTON TO START”. Am initiaizat variabilele globale, inclusiv cea care desemneaza lungimea in metrii a unei rotatii de roata.

In loop:

- Extrag timpul curent

- Citesc senzorul hall si verific daca a mai avut loc o rotatie completa a rotii. Daca biciclistul nu se afla in modul de pauza, incrementez numarul de revolutii, actualizez distanta parcursa, afisez semnul plus pe lcd, calculez timpul trecut de la ultima rotatie completa si actualizez viteza maxima, daca e cazul.

- Citesc pinul butonului de start/pauza:

1. Daca sunt pe cazul de start afisez mesajul “CYCLE SAFELY!”

Ulterior, displayul va arata distanta parcursa (stanga sus), viteza in km/h (In dreapta sus), timpul deplasarii (Stanga jos), viteza medie (dreapta jos)

2. Daca sunt pe cazul de pauza afisez “PAUSED!”

Ulterior, displayul va afisa detaliile curselor: in stanga sus se va vedea numerul cursei, sus pe mijloc va fi viteza medie, dreapta sus viteza maxima, pe a doua linie a lcd-ului va fi afisata distanta totala si durata cursei.

- Citesc pinul pentru butonul de display.

1. In cazul in care sunt in timpul unei curse si acesta este apasat se va jongla intre afisarea vitezei medii(A) pe ecran si viteza maxima atinsa(M).

2) In cazul in care ciclistul se afla in pauza, apasand pe buton acesta va putea itera prin arrayul cu cursele acestuia pentru a-si putea analiza performanta

Pe langa alte mici cazuri tratate in loop, am mai implememtat niste functii care sa ma ajute la rezolvare.

computeHMS - primeste ca parametru timpul in milisecunde si il transforma in formatul ORe:MIN:SEC

resetLapVariables - reseteaza variabilele pentru a putea incepe o noua cursa

showCycleSafely, showPaused, showLabels - care ajuta la afisarea pe lcd

debounce - care verifica daca butoanele au fost apasate sau daca senzorul hall a mai inregistrat ceva

Rezultate Obţinute

Rezultatul a fost un aparat functional care vine in ajutorul biciclistilor care vor sa isi monitorizeze evolutia in cursele pe bicicleta.

Link youtube:

Odometru - Speedometru bicicleta

Concluzii

Acest proiect m-a invatat cum sa proiectez un aparat de la 0, care include parte de software, des intalnita in facultate, dar si de hardware cu care nu am prea avut ocazia sa ma intalnesc.

Download

Bibliografie/Resurse

pm/prj2022/amocanu/costin_bogdan.brebu.txt · Last modified: 2022/05/23 17:09 by costin_bogdan.brebu
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