Andreea-Alexandra DIMA (78538) - Health Monitoring System

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Acest proiect presupune crearea unui dispozitiv pentru monitorizare pulsului, ușor de utilizat, pentru o supraveghere eficientă a stării de sănătate. Valorile pulsului pot dezvălui date importante despre starea de sănătate a unei persoane, motiv pentru care e necesară măsurarea periodică a acestuia, atât în stare de repaus, cât și pe durata unor activități intense. Acest sistem utilizează un senzor al bătăilor inimii pentru a urmări numărul de bătăi și, de asemenea, anomaliile.

Descriere generală

Senzorul de puls colectează date despre bătăile inimii și le transmite microcontroller-ului, care va trimite datele folosind un modul Bluetooth la o aplicație Android și care, de asemenea, va afișa valorile pe LCD, va aprinde led-urile în funcție de valoarea pulsului și va transmite buzzer-ului frecvența necesară pentru a reda un sunet specific valorii pulsului.

Hardware Design

Piese necesare:

  • Senzor puls XD-58C
  • Modul Bluetooth HC-05
  • Microcontroller ATMega324
  • Placă de bază PM 2018
  • Buzzer activ 5V
  • Led-uri 5mm
  • LCD text

Schemă electrică

Software Design

Mediu de dezvoltare

Am folosit editorul de text Sublime și compilatorul AVR. Este prezent un Makefile pentru compilare și generarea binarului iar pentru scrierea acestuia pe microcontroller am folosit bootloader-ul dat.

Biblioteci și surse 3rd-party

  • Biblioteca din Arduino portată pentru senzorul de puls

Algoritm

Am folosit algoritmul portat din biblioteca din Arduino pentru acest senzor. Pentru a calcula valoare pulsului, se contorizează IBI, intervalul de timpul între bătăi succesive, și se rețin ultimele 10 valori calculate ale acestuia, iar BPM va fi egal cu raportul dintre 60000 și media ultimelor 10 valori ale IBI, raport ce reprezintă numărul de bătăi pe care inima le face într-un minut.

Pentru a detecta o bătaie se rețin valorilor celui mai mic și celui mai mare punct al semnalului iar pentru a asigura o precizie bună, se evită zgomotul semnalului prin contorizarea timpul trecut de la ultima bătaie, prin calcularea amplitudinii în funcție de punctele de maxim și minim ale semnalului, prin resetarea acestor valori în cazul în care timp de 2.5 s nu s-a detectata o bătaie, prin așteptarea a 250 ms înainte de a începe calcularea valorii pulsului, prin a nu lua în considerare prima bătaie a inimii.

Surse şi funcţii implementate

  • Pentru eșantionarea semnalului la interval de 2 ms am folosit timer-ul 1 configurat în modul CTC cu top la OCR1A = 124, 0x7C, valoare pentru 2ms, PS = 256 și o întrerupere de comparație cu OCR1A.
  • Pentru LCD, ADC, USART, am preluat funcțiile folosite în cadrul laboratoarelor de PM .
  • Pentru inițializarea tuturor porturilor necesare am implementat separat funcția IO_init() precum și alte funcții ajutătoare precum turn_off_leds(), turn_on_speaker(), turn_on_led().

Rezultate Obţinute

Pentru testarea tuturor funcționalităților am folosit aplicația android Bluetooth Terminal HC-05, disponibilă în PlayStore, care se conectează la modulul bluetooth, primește și afișează datele trimise de acesta pe serială.

Pentru un adult sănătos puls normal înseamnă între 60 și 100 de bătăi pe minut, caz în care se aprinde led-ul verde. Pentru intervalele [50, 60) și (100, 120] se aprinde led-ul galben iar înafara acestor intervale, se aprinde led-ul roșu. Buzzer-ul emite un sunet la detectarea unei bătăi a inimii, asemănător celor emise de dispozitivelele folosite în spitale măsurarea pentru puls.

Se obțin rezultatele așteptate, dar se observă faptul că senzorul este foarte sensibil și trebuie să stea nemișcat, să nu fie exercitată o presiune mare pe el și, de asemenea, influențează și lumina ambientală deoarece cantitatea de lumină care apare pe senzor influențează valorea semnalului. Dacă cantitatea de lumină care apare pe senzor rămâne constantă, valoarea semnalului va rămâne la (sau aproape de) 512, punctul de mijloc al intervalului ADC. Mai multă lumină și semnalul urcă. Mai puțină lumină, opusul. Lumina de la led-ul verde care este reflectată înapoi la senzor se schimbă în timpul fiecărui impuls.

Demo: https://www.youtube.com/watch?v=MtOr46LNqVE&feature=youtu.be

Concluzii

Am intrat în contact cu dificultatea obținerii unei precizii absolute de la un senzor, datorită influenței unor factori externi, cum ar fi fixarea acestuia într-o poziție fixă, lumina care cade pe senzor, presiunea exercitată, cât și importanța protejării acestuia folosind o folie de vinilin pentru acest senzor. A fost o experiență interesantă, ce m-a introdus în partea practică a părții hardware și îmbinarea acesteia cu partea de software, programarea microcontroller-ului. Totodată, mi-a stârnit interesul pentru proiecte de acest tip și sper să am ocazia să avansez în acest domeniu.

Download

Bibliografie/Resurse

pm/prj2018/imatesica/andreeadima.txt · Last modified: 2021/04/14 17:07 (external edit)
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