Taula de continguts:

Monitor de ritme cardíac IOT (ESP8266 i aplicació per a Android): 5 passos
Monitor de ritme cardíac IOT (ESP8266 i aplicació per a Android): 5 passos

Vídeo: Monitor de ritme cardíac IOT (ESP8266 i aplicació per a Android): 5 passos

Vídeo: Monitor de ritme cardíac IOT (ESP8266 i aplicació per a Android): 5 passos
Vídeo: KOOPOWER Smart Magical RGB Рождественские светодиодные фонари #gifted 2024, Juliol
Anonim
Image
Image

Com a part del meu projecte de darrer any, volia dissenyar un dispositiu que controlés la freqüència cardíaca, emmagatzemés les vostres dades en un servidor i us notifiqués mitjançant una notificació quan la freqüència cardíaca era anormal. La idea darrere d’aquest projecte va sorgir quan vaig intentar crear una aplicació de fit-bit que notifiqués a un usuari quan té problemes cardíacs, però no vaig poder trobar una manera d’utilitzar la informació en temps real. El projecte té quatre parts principals. incloent el circuit físic per mesurar el batec del cor, un mòdul Wi-Fi ESP8266 amb codi de processament de senyal, el servidor per emmagatzemar el codi i una aplicació per a Android per mostrar la freqüència cardíaca.

A la part superior es pot veure un vídeo que detalla el circuit físic. Es pot trobar tot el codi del projecte al meu Github.

Pas 1: el circuit

El Circuit
El Circuit

Hi ha dos mètodes principals per mesurar els batecs del cor, però per a aquest projecte vaig decidir utilitzar la fotopletismografia (PPG) que utilitza una font de llum infraroja o vermella que es refracta a través de les primeres capes de pell. Un sensor fotogràfic s’utilitza per mesurar el canvi d’intensitat de la llum (quan la sang flueix a través d’un vas). Els senyals PPG són increïblement sorollosos, de manera que he utilitzat un filtre de pas de banda per filtrar les freqüències específiques necessàries. Un cor humà batega entre 1 i 1,6 Hz de freqüència. L’amplificador operatiu que vaig fer servir era el lm324, que tenia el millor desplaçament de tensió de tots els amplificadors operatius disponibles. Si esteu recreant aquest projecte, un amplificador operatiu de precisió seria una opció molt millor.

Es va utilitzar només un guany de dos, perquè la tolerància màxima de la tensió a l’ESP8266 és de 3,3 v i no volia danyar la placa.

Seguiu el circuit anterior i intenteu que funcioni sobre una taula de pa. Si no teniu un oscil·loscopi a casa, podeu connectar la sortida a un Arduino i dibuixar-lo, però assegureu-vos que el voltatge no sigui superior a la tolerància de l’arduino o del microcontrolador.

El circuit es va provar en una placa de pa i es va observar un canvi en la sortida quan es va col·locar un dit a través del transistor LED i fotogràfic. Aleshores vaig decidir soldar el tauler junt que no es mostrava al vídeo.

Pas 2: el codi de processament de senyal i les comunicacions del servidor

Image
Image
El codi de processament de senyal i les comunicacions del servidor
El codi de processament de senyal i les comunicacions del servidor

Vaig decidir utilitzar l'Arduino IDE a l'ESP8266 perquè és molt fàcil d'utilitzar. Quan es va representar el senyal, encara era molt sorollós, així que vaig decidir netejar-lo amb un filtre FIR de mitjana mòbil amb un nombre de mostra de deu. Vaig modificar un exemple de programa Arduino anomenat "suavitzat" per fer-ho. Vaig experimentar una mica per trobar una manera de mesurar la freqüència del senyal. Els polsos eren de longitud i amplitud variables a causa que el cor tenia quatre tipus diferents d’impulsos i les característiques dels senyals PPG. Vaig triar un valor mig conegut que el senyal sempre creuava com a punt de referència per a cada pols. Vaig utilitzar una memòria intermèdia per determinar quan el pendent del senyal era positiu o negatiu. La combinació d’aquests dos em va permetre calcular el període entre els impulsos quan el senyal era positiu i era igual a un valor específic.

El programari produïa un BPM bastant imprecís que en realitat no es podia utilitzar. Amb iteracions addicionals es podria dissenyar un programa millor, però a causa de les limitacions de temps, aquesta no era una opció. El codi es pot trobar a l’enllaç següent.

Programari ESP8266

Pas 3: el servidor i les comunicacions de dades

El servidor i les comunicacions de dades
El servidor i les comunicacions de dades

Vaig decidir utilitzar Firebase per emmagatzemar les dades, ja que és un servei gratuït i és molt fàcil d’utilitzar amb aplicacions mòbils. No hi ha cap API oficial per a Firebase amb l’ESP8266, però he trobat que la biblioteca Arduino funcionava molt bé.

Hi ha un programa d’exemple que es pot trobar a la biblioteca ESP8266WiFi.h que us permet connectar-vos a un enrutador amb l’SSID i la contrasenya. S'utilitzava per connectar el tauler a Internet perquè es poguessin enviar dades.

Tot i que l’emmagatzematge de dades es va fer fàcilment, encara hi ha diversos problemes amb l’enviament de notificacions push mitjançant una sol·licitud HTTP POST. Vaig trobar un comentari sobre el Github que feia servir un mètode heretat per fer-ho mitjançant la missatgeria en núvol de Google i la biblioteca HTTP per a ESP8266. Aquest mètode es pot veure al codi del meu Github.

A Firebase vaig crear un projecte i vaig utilitzar l'API i les claus de registre al programari. La missatgeria en núvol de Firebase es va utilitzar amb l'aplicació per enviar notificacions push a l'usuari. Quan es van provar les comunicacions, es podien veure dades a la base de dades mentre s’executava l’ESP8266.

Pas 4: l'aplicació d'Android

L’aplicació per a Android
L’aplicació per a Android

Es va dissenyar una aplicació Android molt bàsica amb dues activitats. La primera activitat va iniciar la sessió a l'usuari o el va registrar mitjançant l'API de Firebase. He investigat el full de dades i he trobat diversos tutorials sobre com utilitzar Firebase amb una aplicació mòbil. L'activitat principal que mostrava a l'usuari de dades de l'usuari un oient d'esdeveniments en temps real, de manera que no es va produir cap retard notable en els canvis al BPM de l'usuari. Les notificacions automàtiques es van fer mitjançant la missatgeria en núvol de Firebase que s’ha esmentat anteriorment. Al full de dades de Firebase hi ha molta informació útil sobre com implementar-lo i es pot provar l’aplicació enviant notificacions des del tauler del lloc web de Firebase.

Es pot trobar tot el codi per a les activitats i els mètodes de missatgeria al núvol al meu dipòsit Github.

Pas 5: Conclusió

Hi ha hagut alguns problemes importants en mesurar el BPM de l'usuari. Els valors van variar molt i no es van utilitzar per determinar la salut d'un usuari. Això es va reduir al codi de processament del senyal que es va implementar a l’ESP8266. Després d’investigacions addicionals, vaig descobrir que un cor té quatre polsos diferents amb períodes diferents, de manera que no era d’estranyar que el programari fos imprecís. Una manera de combatre-ho seria agafar una mitjana dels quatre impulsos d’una matriu i calcular el període del cor sobre aquests quatre impulsos.

La resta del sistema era funcional, però es tracta d’un dispositiu molt experimental que volia construir per veure si l’objecte era possible. El codi heretat que s’utilitzava per enviar notificacions push aviat serà inutilitzable, de manera que si llegiu això a finals de 2018 o tard, caldria un mètode diferent. Aquest problema només es produeix amb l'ESP, de manera que si volguéssiu implementar-ho en un Arduino compatible amb WiFi no seria cap problema.

Si teniu cap pregunta o problema, no dubteu a enviar-me un missatge a Instructables.

Recomanat: