INHOUDSOPGAWE:

IOT -hartslagmeter (ESP8266 en Android -app): 5 stappe
IOT -hartslagmeter (ESP8266 en Android -app): 5 stappe

Video: IOT -hartslagmeter (ESP8266 en Android -app): 5 stappe

Video: IOT -hartslagmeter (ESP8266 en Android -app): 5 stappe
Video: Чем ESP32 лучше за ESP8266? 🤔 5 пунктов #iot #arduino #esp32 #esp8266 2024, November
Anonim
Image
Image

As deel van my finalejaarsprojek wou ek 'n toestel ontwerp wat u hartklop kan monitor, u data op 'n bediener kan stoor en u per kennisgewing sal laat weet wanneer u hartklop abnormaal is. Die idee agter hierdie projek het gekom toe ek probeer om 'n fit-bit-app te bou wat 'n gebruiker in kennis stel wanneer hulle 'n hartprobleem het, maar ek kon nie 'n manier vind om inligting in real-time te gebruik nie. insluitend die fisiese stroombaan vir die meting van die hartklop, 'n ESP8266 Wi-Fi-module met seinverwerkingskode, die bediener om die kode te stoor en 'n Android-app om die hartklop te vertoon.

'N Video met 'n uiteensetting van die fisiese stroombaan kan hierbo gesien word. Al die kode vir die projek kan op my Github gevind word.

Stap 1: Die stroombaan

Die stroombaan
Die stroombaan

Daar is twee hoofmetodes om 'n hartklop te meet, maar vir hierdie projek het ek besluit om fotoplethysmografie (PPG) te gebruik wat 'n infrarooi of rooi ligbron gebruik wat deur die eerste paar lae van die vel gebreek word. 'N Fotosensor word gebruik om die verandering in ligintensiteit (wanneer bloed deur 'n vaartuig vloei) te meet. PPG seine is ongelooflik raserig, so ek het 'n bandpasfilter gebruik om die spesifieke frekwensies wat benodig word, uit te filter. 'N Menslike hart klop tussen 1 en 1,6 Hz frekwensie. Die op-amp wat ek gebruik het, was die lm324 wat die beste spanningsverskyning gehad het van al die op-versterkers wat vir my beskikbaar was. As u hierdie projek herskep, is 'n presiese op-amp 'n baie beter keuse.

'N Versterking van slegs twee is gebruik omdat die maksimum spanningstoleransie op die ESP8266 3.3v is en ek nie my bord wou beskadig nie!

Volg die kring hierbo en probeer om dit op 'n broodbord te laat werk. As u nie 'n ossilloskoop tuis het nie, kan u die uitset in 'n Arduino aansluit en dit teken, maar seker maak dat die spanning nie hoër is as die toleransie van die arduino- of mikrokontroleur nie.

Die kring is op 'n broodbord getoets en 'n verandering in die uitset is waargeneem toe 'n vinger oor die LED en fototransistor geplaas is. Ek besluit toe om die bord saam te soldeer wat nie in die video verskyn nie.

Stap 2: Die seinverwerkingskode en bedienerkommunikasie

Image
Image
Die seinverwerkingskode en bedienerkommunikasie
Die seinverwerkingskode en bedienerkommunikasie

Ek het besluit om die Arduino IDE op die ESP8266 te gebruik omdat dit so maklik is om te gebruik. Toe die sein uitgestippel word, was dit nog steeds baie raserig, en ek het besluit om dit skoon te maak met 'n FIR bewegende gemiddelde filter met 'n steekproefgetal van tien. Ek het 'n voorbeeld van 'n Arduino -program met die naam "smoothing" aangepas om dit te doen. Ek het 'n bietjie geëksperimenteer om 'n manier te vind om die frekwensie van die sein te meet. Die pulse was van verskillende lengte en amplitude as gevolg van die hart wat vier verskillende tipes pulse het en die eienskappe van PPG seine. Ek het 'n bekende middelwaarde gekies wat die sein altyd as 'n verwysingspunt vir elke pols oorgesteek het. Ek het 'n ringbuffer gebruik om te bepaal wanneer die helling van die sein positief of negatief was. Die kombinasie van hierdie twee het my in staat gestel om die tydperk tussen die pulse te bereken wanneer die sein positief was en gelyk was aan 'n spesifieke waarde.

Die sagteware het 'n redelik onakkurate BPM gelewer wat eintlik nie gebruik kon word nie. Met ekstra herhalings kan 'n beter program ontwerp word, maar as gevolg van tydsbeperkings was dit nie 'n opsie nie. Die kode kan gevind word in die onderstaande skakel.

ESP8266 sagteware

Stap 3: Die bediener- en datakommunikasie

Die bediener en datakommunikasie
Die bediener en datakommunikasie

Ek het besluit om Firebase te gebruik om die data te stoor, aangesien dit 'n gratis diens is en baie maklik is om saam met mobiele programme te gebruik. Daar is geen amptelike API vir Firebase met die ESP8266 nie, maar ek het gevind dat die Arduino -biblioteek baie goed werk.

Daar is 'n voorbeeldprogram in die ESP8266WiFi.h -biblioteek waarmee u met 'n router met die SSID en die wagwoord kan skakel. Dit is gebruik om die bord aan die internet te koppel sodat data gestuur kan word.

Alhoewel dit maklik was om data te stoor, is daar steeds 'n aantal probleme met die stuur van die stootkennisgewings via 'n HTTP POST -versoek. Ek het 'n opmerking gevind oor die Github wat 'n ou metode gebruik het om dit te doen via Google -wolkboodskappe en die HTTP -biblioteek vir ESP8266. Hierdie metode kan gesien word in die kode op my Github.

Op Firebase het ek 'n projek geskep en die API en registrasiesleutels in die sagteware gebruik. Die vuurbasis -wolkboodskappe is saam met die app gebruik om stootkennisgewings na die gebruiker te stuur. Toe die kommunikasie getoets is, kon data in die databasis gesien word terwyl die ESP8266 aan die gang was.

Stap 4: Die Android -app

Die Android -app
Die Android -app

'N Baie basiese Android -app is ontwerp met twee aktiwiteite. Die eerste aktiwiteit het die gebruiker aangemeld of met die Firebase API geregistreer. Ek het die datablad ondersoek en verskillende tutoriale gevind oor hoe om Firebase met 'n mobiele app te gebruik. Die belangrikste aktiwiteit wat die data -gebruiker van die gebruiker vertoon het, was 'n intydse luisteraar, sodat daar geen merkbare vertraging was in die veranderinge aan die BPM van die gebruiker nie. Die stootkennisgewings is gedoen met behulp van Firebase -wolkboodskappe wat voorheen genoem is. Daar is baie nuttige inligting oor die Firebase -datablad oor hoe om dit te implementeer, en die app kan getoets word deur kennisgewings vanaf die paneelbord op die Firebase -webwerf te stuur.

Al die kode vir die aktiwiteite en die metodes vir die wolkboodskappe kan gevind word in my Github Repository.

Stap 5: Gevolgtrekking

Daar was 'n paar groot probleme met die meting van die BPM van die gebruiker. Die waardes het baie gewissel en was nie bruikbaar om die gesondheid van 'n gebruiker te bepaal nie. Dit kom neer op die seinverwerkingskode wat op die ESP8266 geïmplementeer is. Na bykomende navorsing het ek uitgevind dat 'n hart vier verskillende polse het met 'n wisselende tydperk, dus dit was geen wonder dat die sagteware onakkuraat was nie. 'N Manier om dit te bestry, is om 'n gemiddelde van die vier pulse in 'n skikking te neem en die tydperk van die hart oor die vier pulse te bereken.

Die res van die stelsel was funksioneel, maar dit is 'n baie eksperimentele toestel wat ek wou bou om te sien of die voorwerp moontlik is. Die ou kode wat gebruik is om stootkennisgewings te stuur, sal binnekort onbruikbaar wees, dus as u dit laat in 2018 of laat lees, is 'n ander metode nodig. Hierdie probleem kom slegs by die ESP voor, maar as u dit op 'n WiFi -geskikte Arduino wil implementeer, is dit geen probleem nie.

As u enige vrae of probleme het, stuur 'n boodskap aan my op Instructables.

Aanbeveel: