This shows you the differences between two versions of the page.
pm:prj2022:imacovei:andreea.traistaru00 [2022/05/21 17:17] andreea.traistaru00 |
pm:prj2022:imacovei:andreea.traistaru00 [2022/05/27 16:07] (current) andreea.traistaru00 [Download] |
||
---|---|---|---|
Line 8: | Line 8: | ||
* Culoarea și intensitatea unui led RGB vor fi variate în funcție de valoarea tensiunii măsurate; | * Culoarea și intensitatea unui led RGB vor fi variate în funcție de valoarea tensiunii măsurate; | ||
* Consider că acest dispositiv poate fi util sportivilor în cadrul antrenamentelor pentru a putea aprecia intensitatea exercițiilor; | * Consider că acest dispositiv poate fi util sportivilor în cadrul antrenamentelor pentru a putea aprecia intensitatea exercițiilor; | ||
- | + | ===== Descriere generală ===== | |
- | ===== Descriere generala ===== | + | * Pe ecranul LCD-ului se vor afișa diferite informații în funcție de butonul apăsat. Un buton va fi folosit pentru a semnala începerea măsurării pulsului. După terminarea procesului se va putea începe o nouă acțiune de măsurare prin apăsarea celui de-al doilea buton care va duce dispozitivul în starea de început. |
- | Datele vor fi preluate cu ajutorul senzorului pentru puls XD-58C atunci cand este atins de degetul utilizatorului. Senzorul foloseste un amplificator optic si un circuit de eliminare a zgomotului. Valoarea citită va fi redată pe ecranul LCD-ului. De asemenea, pe măsură ce este măsurat pulsul va fi redat un sunet conform bătăilor inimii cu ajutorul unui buzzer. | + | * Datele vor fi preluate cu ajutorul senzorului pentru puls XD-58C atunci cand este atins de degetul utilizatorului. Senzorul foloseste un amplificator optic si un circuit de eliminare a zgomotului. Valoarea citită va fi redată pe ecranul LCD-ului. De asemenea, pe măsură ce este măsurat pulsul va fi redat un sunet conform bătăilor inimii cu ajutorul unui buzzer. Dacă este măsurat un ritm cardiac crescut lumina generată de led-ul RGB va avea o culoare roșie, în cazul unui puls normal va avea o nuanță de verde, iar în cazul unui puls scăzut va avea culoarea albastru. Totodată cele trei culori vor fi redate cu intensități diferite pentru a indica cât de scăzut respectiv cât de crescut este ritmul cardiac față de valorile optime. |
- | Schema bloc: | + | |
- | {{:pm:prj2022:imacovei:traistaru_andreea_schema_bloc.png?752x405|}} | + | {{:pm:prj2022:imacovei:traistaru_andreea_schema_bloc.png?700|}} |
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | Componente folosite: | + | |
- | *Arduino Uno | + | ==== Componente ==== |
- | *Breadboard | + | ^ Nume ^ Numar Piese ^ |
- | *2 butoane | + | | Arduino UNO |1 | |
- | *Buzzer | + | | Breadboard | 1 | |
- | *Fire | + | | Ecran LCD I2C | 1| |
- | *LCD | + | | Push Buton |2 | |
- | *Senzor puls (XD-58C) | + | | Senzor puls (XD-58C) |1 | |
+ | | Buzzer |1 | | ||
+ | |Rezistente |3 | | ||
+ | |Fire |15 | | ||
+ | |||
+ | ==== Schema electrică ==== | ||
+ | |||
+ | |||
+ | {{:pm:prj2022:imacovei:schema_electrica_traistaru_andreea.png?722x502|}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | <note> | ||
+ | **Mediu de dezvoltare** | ||
+ | * Arduino IDE | ||
+ | * Autodesk EAGLE | ||
+ | </note> | ||
+ | <note> | ||
+ | ** Librării folosite ** | ||
+ | * PulseSensorPlayground.h | ||
+ | * hd44780ioClass/hd44780_I2Cexp.h | ||
+ | * Wire.h | ||
- | ===== Rezultate Obţinute ===== | + | </note> |
+ | |||
+ | |||
+ | ===== Implementare ===== | ||
+ | |||
+ | Dispozitivul creat poate avea la un moment dat una dintre următoarele stări: | ||
+ | - ENABLE -> dispozitivul este pornit și va reda un mesaj de început; | ||
+ | - WAIT -> se așteaptă apăsarea butonului de start de către utilizator; | ||
+ | - MEASURE -> dispozitivul începe măsurarea pulsului și îl afișează pe LCD; | ||
+ | - FINISH -> pulsul a fost măsurat și se poate reveni la starea de WAIT prin apăsarea butonului de reset; | ||
+ | |||
+ | |||
+ | == Funcțiile folosite: == | ||
+ | * lightRGB → funcție ce setează pinii led-ului RGB la niște valori transmise ca parametri; | ||
+ | * timerInit → inițializează timer-ul 0 la modul CTC, cu un prescaler de 1024; | ||
+ | * setup → funcția inițializează LCD-ul, senzorul de puls, setează pinii pentru LED-ul RGB, pentru butoane și configurează întreruperile | ||
+ | * loop → reprezintă funcția principală care descrie logica programului; aici se afișează diferite informații pe LCD ținând cont de starea în care se află dispozitivul la un moment dat; conform datelor citite de la senzor în starea de MEASURE este pornit led-ul RGB a cărui culoare va fi diferită, iar de fiecare dată când va fi recepționată o bătaie a inimii buzzer-ul va semnala acest lucru; | ||
+ | * ISR(TIMER0_COMPA_vect) → se folosește un counter pentru a trece de la o stare la alta în mod automat dupa un anumit timp; | ||
+ | * ISR(PCINT2_vect) → implementare întrerupere buton; | ||
+ | * void count_time() → decrementează variabilele folosite pentru counter-ul utilizat de timer; | ||
+ | * pin_ISR → întrerupere folosită pentru a trece de la o stare la alta prin resetarea unor variabile la apăsarea unui buton; | ||
+ | ====== Rezultate obținute ====== | ||
+ | {{:pm:prj2022:imacovei:1_traistaru.jpeg?250|}} | ||
+ | {{:pm:prj2022:imacovei:2_traistaru.jpeg?250|}} | ||
+ | {{:pm:prj2022:imacovei:3_traistaru.jpeg?250|}} | ||
+ | |||
+ | **Demo** → https://www.youtube.com/watch?v=XSQjz5b1zZI | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | * Proiectul m-a ajutat să aprofundez noțiunile parcurse de-a lungul semestrului la laboratoare într-un mod interactiv. Am învățat că este important să citești datasheet-ul componentelor pentru a fi sigur că piesele sunt compatibile. | ||
+ | * Mi s-a părut o provocare să realizez acest proiect, dar mi-a făcut plăcere să lucrez la el.=) | ||
===== Download ===== | ===== Download ===== | ||
+ | {{:pm:prj2022:imacovei:heart_rate_monitor.zip|}} | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
+ | * **20.04.2022**: alegere tema proiect | ||
+ | * **22.04.2022**: comandă piese | ||
+ | * **23.04.2022**: creare pagină wiki | ||
+ | * **20.04.2022**: testare individuală componente | ||
+ | * **23.05.2022**: implementare hardware și software | ||
+ | * **27.05.2022**: finalizare pagină wiki | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
+ | * https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/ | ||
+ | * https://ocw.cs.pub.ro/courses/pm/lab/lab2-2022 | ||
+ | * https://ocw.cs.pub.ro/courses/pm/lab/lab3-2022 | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||