This shows you the differences between two versions of the page.
pm:prj2024:sseverin:alexandru.vladut02 [2024/05/23 22:38] alexandru.vladut02 [Hardware Design] |
pm:prj2024:sseverin:alexandru.vladut02 [2024/05/27 17:11] (current) alexandru.vladut02 [Descriere generală] |
||
---|---|---|---|
Line 12: | Line 12: | ||
- **Inițierea monitorizării**: Utilizatorul pornește sesiunea de monitorizare a pulsului apăsând butonul conectat la Arduino. Acest moment marchează începutul perioadei de activitate fizică. | - **Inițierea monitorizării**: Utilizatorul pornește sesiunea de monitorizare a pulsului apăsând butonul conectat la Arduino. Acest moment marchează începutul perioadei de activitate fizică. | ||
- | - **Colectarea datelor**: Îndată ce sesiunea este inițiată, senzorul de puls începe să înregistreze ritmul cardiac al utilizatorului prin intermediul unor LED-uri cu infraroșu și a unui fotodetector, și transmite aceste date la placa Arduino în timp real. De asemenea, un LED RGB va semnala utilizatorului daca pulsul nu are o valoare optima. | + | - **Colectarea datelor**: Îndată ce sesiunea este inițiată, senzorul de puls începe să înregistreze ritmul cardiac al utilizatorului prin intermediul unor LED-uri cu infraroșu și a unui fotodetector, și transmite aceste date la placa Arduino în timp real. De asemenea, un LED RGB va semnala fiecare bătaie a inimii înregistrată. |
- **Procesarea și stocarea datelor**: Datele de la senzor sunt colectate și procesate continuu de Arduino pe durata activității. | - **Procesarea și stocarea datelor**: Datele de la senzor sunt colectate și procesate continuu de Arduino pe durata activității. | ||
- **Încheierea monitorizării**: Utilizatorul finalizează sesiunea de monitorizare apăsând din nou butonul. Acest lucru indică sfârșitul perioadei de activitate și inițiază procesul de afișare a datelor. | - **Încheierea monitorizării**: Utilizatorul finalizează sesiunea de monitorizare apăsând din nou butonul. Acest lucru indică sfârșitul perioadei de activitate și inițiază procesul de afișare a datelor. | ||
- | - **Afișarea statisticilor**: În momentul încheierii sesiunii, Arduino procesează datele finale și le afișează pe display-ul LCD prin intermediul adaptorului I2C. Statisticile afișate includ ritmul cardiac minim/mediu/maxim, durata totală a sesiunii sau HRV (variabilitatea ritmului cardiac). Aceste informații oferă utilizatorului o perspectivă detaliată asupra performanței sale cardiace pe durata activității. | + | - **Afișarea statisticilor**: În momentul încheierii sesiunii, Arduino procesează datele finale și le afișează pe display-ul LCD prin intermediul adaptorului I2C. Statisticile afișate includ ritmul cardiac minim/mediu/maxim sau durata totală a sesiunii. Aceste informații oferă utilizatorului o perspectivă detaliată asupra performanței sale cardiace pe durata activității. |
{{ :pm:prj2024:sseverin:alexandru-vladut_2_.png?750 |}} | {{ :pm:prj2024:sseverin:alexandru-vladut_2_.png?750 |}} | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | **Lista pieselor și modul de conectare** | + | **Lista pieselor și modul de conectare:** |
- Arduino UNO | - Arduino UNO | ||
- Display LCD 20x4 + Adaptor I2C | - Display LCD 20x4 + Adaptor I2C | ||
- | * VCC -> 5V | + | * //VCC -> 5V// |
- | * GND -> GND | + | * //GND -> GND// |
- | * SDA -> A4 | + | * //SDA -> A4// |
- | * SCL -> A5 | + | * //SCL -> A5// |
- Senzor Pulsoximetru MAX30102 | - Senzor Pulsoximetru MAX30102 | ||
- | * VCC -> 5V | + | * //VCC -> 5V// |
- | * GND -> GND | + | * //GND -> GND// |
- | * SDA -> A4 | + | * //SDA -> A4// |
- | * SCL -> A5 | + | * //SCL -> A5// |
- LED RGB | - LED RGB | ||
- | * Red -> Digital Pin 7 | + | * //Red -> Digital Pin 7// |
- | * Anod comun -> 5V | + | * //Anod comun -> 5V// |
- | * Blue -> Digital Pin 6 | + | * //Blue -> Digital Pin 6// |
- | * Green -> Digital Pin 5 | + | * //Green -> Digital Pin 5// |
- Push button | - Push button | ||
- | * GND | + | * //GND// |
- | * Digital Pin 2 | + | * //Digital Pin 2// |
- Powerbank | - Powerbank | ||
- Breadboard | - Breadboard | ||
Line 47: | Line 47: | ||
</note> | </note> | ||
- | **Circuit** | + | **Circuit:** |
- | {{ :pm:prj2024:sseverin:alex_vladut_tinkercad.png?600 |}} | + | {{:pm:prj2024:sseverin:alex_vladut_tinkercad.png?600|}} |
- | **Schematic** | + | \\ |
+ | **Schematic:** | ||
- | {{ :pm:prj2024:sseverin:alex_vladut_schematic.png?600 |}} | + | {{:pm:prj2024:sseverin:alex_vladut_schematic.png?600|}} |
- | **Stadiu curent** | + | \\ |
+ | **Stadiu curent:** | ||
- | {{ :pm:prj2024:sseverin:alex_vladut_circuit.jpeg?600 |}} | + | {{:pm:prj2024:sseverin:alex_vladut_circuit.jpeg?600|}} |
===== Software Design ===== | ===== Software Design ===== | ||
Line 97: | Line 99: | ||
* **//computeStats()//**: apelată în **//loop()//** în momentul în care este apăsat butonul și flag-ul //isMonitoring// e setat pe //FALSE//, metoda calculează statisticile afișate utilizatorului la finalul perioadei de monitorizare. | * **//computeStats()//**: apelată în **//loop()//** în momentul în care este apăsat butonul și flag-ul //isMonitoring// e setat pe //FALSE//, metoda calculează statisticile afișate utilizatorului la finalul perioadei de monitorizare. | ||
+ | <note>Codul și alte resurse folosite se pot găsi pe [[https://github.com/alexandru-vladut/Heart-Rate-Monitor|GitHub]].</note> | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | **Pornirea //Heart Rate Monitor//** |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
- | ===== Concluzii ===== | + | {{:pm:prj2024:sseverin:alex_vladut_1.jpeg?600|}} |
- | ===== Download ===== | + | \\ |
+ | **Starea de monitorizare**, în care LED-ul clipocește în culoarea roșie la fiecare bătaie a inimii. | ||
- | <note warning> | + | {{:pm:prj2024:sseverin:alex_vladut_2.jpeg?600|}} |
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | |
- | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | + | \\ |
- | </note> | + | **Afișarea rezultatelor**, moment în care LED-ul este aprins static în diferite culori, în funcție de BPM. |
- | ===== Jurnal ===== | + | {{:pm:prj2024:sseverin:alex_vladut_3.jpeg?600|}} |
+ | ===== Concluzii ===== | ||
- | <note tip> | + | Senzorii de puls sunt foarte pretențioși, din mai multe puncte de vedere: |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | * În primul rând, cei de tip **HW-827** nu s-au dovedit a fi cei mai funcționali, în cazul meu cel puțin. După folosirea eșuată a 2 senzori de acest tip, am trecut la **MAX30102** (o replică a pulsoximetrului făcut de SparkFun). |
- | </note> | + | * În al doilea rând, senzorul de puls are nevoie de o presiune constantă a degetului pentru a oferi valori accurate continuu. Oricât am crede noi, ca oameni, că aplicam aceasta presiune constant, cu siguranță nu reușim (informație găsită și în documentația senzorului). Prin urmare, am atașat senzorul unei benzi cu scai reglabile, simulând un inel, însă nici acest lucru nu a adus o funcționare perfectă a senzorului (ocazional omite unele bătăi ale inimii). |
+ | ===== Download ===== | ||
+ | |||
+ | {{:pm:prj2024:sseverin:vladut_alexandru-nicolae_332ca.zip|}} | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | **Resurse Software:** |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | * https://github.com/johnrickman/LiquidCrystal_I2C |
- | </note> | + | * https://github.com/sparkfun/SparkFun_MAX3010x_Sensor_Library |
+ | * https://docs.arduino.cc/learn/microcontrollers/digital-pins/ | ||
+ | * https://docs.arduino.cc/learn/microcontrollers/analog-input/ | ||
+ | * https://docs.arduino.cc/learn/microcontrollers/analog-output/ | ||
+ | * https://ocw.cs.pub.ro/courses/pm/lab/lab1-2023 | ||
+ | * https://ocw.cs.pub.ro/courses/pm/lab/lab2-2023 | ||
+ | * https://ocw.cs.pub.ro/courses/pm/lab/lab3-2023-2024 | ||
+ | * https://ocw.cs.pub.ro/courses/pm/lab/lab6-2023-2024 | ||
+ | |||
+ | **Resurse Hardware:** | ||
+ | * https://www.handsontec.com/dataspecs/I2C_2004_LCD.pdf | ||
+ | * https://cdn.sparkfun.com/assets/f/e/9/4/1/MAX30101.pdf | ||
+ | * https://learn.sparkfun.com/tutorials/max30105-particle-and-pulse-ox-sensor-hookup-guide/all | ||
+ | \\ | ||
<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> | ||