Cuprins:

Monitor de ritm cardiac IOT (ESP8266 și aplicația Android): 5 pași
Monitor de ritm cardiac IOT (ESP8266 și aplicația Android): 5 pași

Video: Monitor de ritm cardiac IOT (ESP8266 și aplicația Android): 5 pași

Video: Monitor de ritm cardiac IOT (ESP8266 și aplicația Android): 5 pași
Video: PROIECT ARDUINO - DETECTOR DISTANȚĂ CU TRANSMITERE BLUETOOTH 2024, Iulie
Anonim
Image
Image

Ca parte a proiectului meu de ultimul an, am vrut să proiectez un dispozitiv care să vă monitorizeze ritmul cardiac, să stocheze datele pe un server și să vă anunțe prin notificare când ritmul cardiac a fost anormal. Ideea din spatele acestui proiect a venit atunci când am încercat să construiesc o aplicație fit-bit care să notifice un utilizator când are o problemă cardiacă, dar nu mi-am putut da seama de o modalitate de utilizare a informațiilor în timp real. Proiectul are patru părți principale inclusiv circuitul fizic pentru măsurarea bătăilor inimii, un modul ESP8266 Wi-Fi cu cod de procesare a semnalului, serverul pentru stocarea codului și o aplicație Android pentru afișarea ritmului cardiac.

Un videoclip care detaliază circuitul fizic poate fi văzut mai sus. Toate codurile proiectului pot fi găsite pe Github.

Pasul 1: Circuitul

Circuitul
Circuitul

Există două metode principale de măsurare a bătăilor inimii, dar pentru acest proiect am decis să folosesc fotopletismografia (PPG) care utilizează o sursă de lumină cu infraroșu sau roșu care este refractată prin primele câteva straturi de piele. Un senzor foto este utilizat pentru a măsura schimbarea intensității luminii (când sângele curge printr-un vas). Semnalele PPG sunt incredibil de zgomotoase, așa că am folosit un filtru de trecere a benzii pentru a filtra frecvențele specifice necesare. O inimă umană bate între 1 și 1,6 Hz frecvență. Op-amp-ul pe care l-am folosit a fost lm324, care avea cel mai bun offset de tensiune dintre toate amplificatoarele de operare disponibile. Dacă recreezi acest proiect, atunci un amplificator de operare de precizie ar fi o alegere mult mai bună.

S-a folosit un câștig de doar două, deoarece toleranța maximă de tensiune pe ESP8266 este de 3,3v și nu am vrut să-mi deteriorez placa!

Urmați circuitul de mai sus și încercați să îl faceți să funcționeze pe o placă de pâine. Dacă nu aveți un osciloscop acasă, puteți conecta ieșirea la un Arduino și trage-l, dar asigurați-vă că tensiunea nu este mai mare decât toleranța arduino sau a microcontrolerului.

Circuitul a fost testat pe o placă de pâine și s-a observat o modificare a ieșirii când a fost plasat un deget peste LED-ul și tranzistorul foto. Am decis apoi să lipim placa împreună, care nu era prezentată în videoclip.

Pasul 2: Codul de procesare a semnalului și comunicațiile serverului

Image
Image
Codul de procesare a semnalului și comunicațiile serverului
Codul de procesare a semnalului și comunicațiile serverului

Am decis să folosesc Arduino IDE pe ESP8266, deoarece este atât de ușor de utilizat. Când semnalul a fost reprezentat, era încă foarte zgomotos, așa că am decis să-l curăț cu un filtru FIR mediu-mobil cu un număr de eșantion de zece. Am făcut un exemplu de program Arduino numit „netezire” pentru a face acest lucru. Am experimentat puțin pentru a găsi o modalitate de măsurare a frecvenței semnalului. Impulsurile au fost de lungime și amplitudine variabile, datorită faptului că inima are patru tipuri diferite de impulsuri și caracteristicile semnalelor PPG. Am ales o valoare mijlocie cunoscută pe care semnalul o traversează întotdeauna ca punct de referință pentru fiecare impuls. Am folosit un tampon inelar pentru a determina când panta semnalului a fost pozitivă sau negativă. Combinația dintre aceste două mi-a permis să calculez perioada dintre impulsuri când semnalul a fost pozitiv și a fost egal cu o valoare specifică.

Software-ul a produs un BPM destul de incorect, care de fapt nu a putut fi utilizat. Cu iterații suplimentare ar putea fi proiectat un program mai bun, dar din cauza constrângerilor de timp, aceasta nu a fost o opțiune. Codul poate fi găsit în linkul de mai jos.

Software ESP8266

Pasul 3: Serverul și comunicațiile de date

Comunicarea serverului și a datelor
Comunicarea serverului și a datelor

Am decis să folosesc Firebase pentru a stoca datele, deoarece este un serviciu gratuit și este foarte ușor de utilizat cu aplicațiile mobile. Nu există un API oficial pentru Firebase cu ESP8266, dar am găsit că biblioteca Arduino funcționează foarte bine.

Există un exemplu de program care poate fi găsit în biblioteca ESP8266WiFi.h care vă permite să vă conectați la un router cu SSID și parolă. Aceasta a fost utilizată pentru a conecta placa la internet, astfel încât datele să poată fi trimise.

Deși stocarea datelor a fost realizată cu ușurință, există încă o serie de probleme cu trimiterea notificărilor push printr-o cerere HTTP POST. Am găsit un comentariu despre Github care a folosit o metodă veche de a face acest lucru prin intermediul mesajelor Google cloud și a bibliotecii HTTP pentru ESP8266. Această metodă poate fi văzută în codul de pe Github.

Pe Firebase am creat un proiect și am folosit API-ul și cheile de înregistrare din software. Mesageria cloud Firebase a fost utilizată cu aplicația pentru a trimite notificări push utilizatorului. Când comunicațiile au fost testate, datele au putut fi văzute în baza de date în timp ce ESP8266 rulează.

Pasul 4: aplicația Android

Aplicația Android
Aplicația Android

O aplicație Android foarte simplă a fost concepută cu două activități. Prima activitate a conectat utilizatorul sau l-a înregistrat utilizând API-ul Firebase. Am cercetat fișa tehnică și am găsit diverse tutoriale despre cum să utilizați Firebase cu o aplicație mobilă. Activitatea principală care afișa datele utilizatorului utilizatorului un ascultător de evenimente în timp real, astfel încât nu a existat nicio întârziere vizibilă în modificările BPM ale utilizatorului. Notificările push au fost făcute folosind mesaje cloud Firebase menționate anterior. Există o mulțime de informații utile pe foaia de date Firebase despre cum să implementați acest lucru, iar aplicația poate fi testată trimitând notificări din tabloul de bord de pe site-ul Firebase.

Toate codurile pentru activități și metodele de mesagerie cloud pot fi găsite în Github Repository.

Pasul 5: Concluzie

Au existat câteva probleme majore legate de măsurarea BPM a utilizatorului. Valorile au variat foarte mult și nu au putut fi utilizate pentru a determina starea de sănătate a unui utilizator. Acest lucru s-a redus la codul de procesare a semnalului care a fost implementat pe ESP8266. După cercetări suplimentare, am aflat că o inimă are patru impulsuri diferite cu perioadă variabilă, deci nu a fost de mirare că software-ul a fost inexact. O modalitate de a combate acest lucru ar fi să luați o medie a celor patru impulsuri dintr-o matrice și să calculați perioada inimii peste aceste patru impulsuri.

Restul sistemului a fost funcțional, dar acesta este un dispozitiv foarte experimental pe care am vrut să îl construiesc pentru a vedea dacă obiectul era posibil. Codul vechi care a fost folosit pentru a trimite notificări push va fi în curând inutilizabil, deci dacă citiți acest lucru la sfârșitul anului 2018 sau târziu, ar fi necesară o metodă diferită. Această problemă apare doar cu ESP, de aceea, dacă doriți să implementați acest lucru pe un Arduino capabil de WiFi, nu ar fi nicio problemă.

Dacă aveți întrebări sau probleme, vă rugăm să nu ezitați să-mi trimiteți un mesaj pe Instructables.

Recomandat: