Autorul poate fi contactat la adresa: Login pentru adresa
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.
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.
Piese necesare:
Schemă electrică
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
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 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
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.