Kazalo:

IOT monitor srčnega utripa (ESP8266 in aplikacija za Android): 5 korakov
IOT monitor srčnega utripa (ESP8266 in aplikacija za Android): 5 korakov

Video: IOT monitor srčnega utripa (ESP8266 in aplikacija za Android): 5 korakov

Video: IOT monitor srčnega utripa (ESP8266 in aplikacija za Android): 5 korakov
Video: Start Using Wemos D1 Mini NodeMCU WiFi ESP8266 module with Arduino 2024, Julij
Anonim
Image
Image

Kot del mojega zadnjega letnega projekta sem želel oblikovati napravo, ki bi spremljala vaš srčni utrip, shranjevala vaše podatke na strežniku in vas obvestila, ko je vaš srčni utrip nenormalen. Ideja za ta projekt je nastala, ko sem poskušal zgraditi fit-bitno aplikacijo, ki bi uporabnika obvestila, ko ima težave s srcem, vendar nisem mogel ugotoviti načina uporabe informacij v realnem času. Projekt ima štiri glavne dele vključno s fizičnim vezjem za merjenje srčnega utripa, modulom Wi-Fi ESP8266 s kodo za obdelavo signala, strežnikom za shranjevanje kode in aplikacijo za Android za prikaz srčnega utripa.

Videoposnetek s podrobnostmi o fizičnem vezju si lahko ogledate zgoraj. Vso kodo za projekt najdete na mojem Githubu.

1. korak: vezje

Vezje
Vezje

Obstajata dve glavni metodi merjenja srčnega utripa, vendar sem se za ta projekt odločil uporabiti fotopletizmografijo (PPG), ki uporablja infrardeči ali rdeč vir svetlobe, ki se lomi v prvih nekaj plasteh kože. Foto senzor se uporablja za merjenje spremembe jakosti svetlobe (ko kri teče skozi posodo). Signali PPG so neverjetno hrupni, zato sem uporabil pasovni filter za filtriranje določenih zahtevanih frekvenc. Človeško srce utripa med 1 in 1,6 Hz. Op-amp, ki sem ga uporabil, je bil lm324, ki je imel najboljši odmik napetosti od vseh op-ojačevalcev, ki so mi bili na voljo. Če ponovno ustvarjate ta projekt, bi bil natančen op-amp veliko boljša izbira.

Uporabljen je bil samo dva ojačanja, ker je največja toleranca napetosti na ESP8266 3,3 V in nisem hotel poškodovati svoje plošče!

Sledite zgornjemu vezju in poskusite delovati na plošči za kruh. Če doma nimate osciloskopa, lahko priključite izhod v Arduino in ga narišete, vendar pazite, da napetost ne bo višja od tolerance arduina ali mikrokrmilnika.

Tokokrog je bil preizkušen na plošči za kruh in opazili smo spremembo izhoda, ko smo na LED in foto tranzistor postavili prst. Nato sem se odločil spajati ploščo skupaj, kar ni prikazano v videu.

2. korak: Koda za obdelavo signala in komunikacija s strežnikom

Image
Image
Koda za obdelavo signalov in komunikacija s strežnikom
Koda za obdelavo signalov in komunikacija s strežnikom

Odločil sem se za uporabo Arduino IDE na ESP8266, ker je tako enostaven za uporabo. Ko je bil signal narisan, je bil še vedno zelo hrupen, zato sem se odločil, da ga očistim s filtrom FIR drsečega povprečja z vzorcem deset. Za to sem spremenil primer programa Arduino, imenovan "glajenje". Malo sem eksperimentiral, da bi našel način za merjenje frekvence signala. Impulzi so bili različne dolžine in amplitude, ker je srce imelo štiri različne vrste impulzov in značilnosti signalov PPG. Izbral sem znano srednjo vrednost, ki jo je signal vedno prečkal kot referenčno točko za vsak impulz. Uporabil sem obročni vmesnik, da sem ugotovil, kdaj je naklon signala pozitiven ali negativen. Kombinacija teh dveh mi je omogočila izračun obdobja med impulzi, ko je bil signal pozitiven in je bil enak določeni vrednosti.

Programska oprema je ustvarila precej netočen BPM, ki ga dejansko ni bilo mogoče uporabiti. Z dodatnimi ponovitvami bi lahko oblikovali boljši program, vendar zaradi časovnih omejitev to ni bila možnost. Kodo najdete na spodnji povezavi.

Programska oprema ESP8266

3. korak: strežniška in podatkovna komunikacija

Strežnik in podatkovna komunikacija
Strežnik in podatkovna komunikacija

Odločil sem se, da bom za shranjevanje podatkov uporabil Firebase, saj je to brezplačna storitev in je zelo enostavna za uporabo z mobilnimi aplikacijami. Uradnega API -ja za Firebase z ESP8266 ni, vendar sem ugotovil, da knjižnica Arduino deluje zelo dobro.

V knjižnici ESP8266WiFi.h lahko najdete primer programa, ki vam omogoča povezavo z usmerjevalnikom s SSID in geslom. To je bilo uporabljeno za povezavo plošče z internetom za pošiljanje podatkov.

Čeprav je bilo shranjevanje podatkov enostavno, je še vedno nekaj težav s pošiljanjem potisnih obvestil prek zahteve HTTP POST. Našel sem komentar o Githubu, ki je za to uporabljal zastarelo metodo prek Googlovih sporočil v oblaku in knjižnice HTTP za ESP8266. To metodo lahko vidite v kodi na mojem Githubu.

V Firebase sem ustvaril projekt in uporabil API in registracijske ključe v programski opremi. Sporočila Firebase v oblaku so bila uporabljena z aplikacijo za pošiljanje potisnih obvestil uporabniku. Ko je bila komunikacija preizkušena, so bili podatki prikazani v bazi podatkov med delovanjem ESP8266.

4. korak: aplikacija za Android

Aplikacija za Android
Aplikacija za Android

Zelo osnovna aplikacija za Android je bila zasnovana z dvema dejavnostima. Prva aktivnost je prijavila uporabnika ali ga registrirala z vmesnikom Firebase API. Raziskal sem podatkovni list in našel različne vaje o uporabi Firebase z mobilno aplikacijo. Glavna dejavnost, ki je uporabniku prikazala podatke uporabnika v realnem času poslušalca dogodkov, tako da ni prišlo do opazne zamude pri spremembah uporabnikovega BPM. Potisna obvestila so bila opravljena s sporočili v oblaku Firebase, ki so bila prej omenjena. Na podatkovnem listu Firebase je veliko koristnih informacij o tem, kako to uresničiti, aplikacijo pa je mogoče preskusiti tako, da pošilja obvestila z nadzorne plošče na spletnem mestu Firebase.

Vso kodo za dejavnosti in metode za pošiljanje sporočil v oblaku najdete v mojem skladišču Github.

5. korak: Zaključek

Pri merjenju BPM uporabnika je bilo nekaj velikih težav. Vrednosti so bile zelo različne in niso bile uporabne za ugotavljanje zdravja uporabnika. To se je zmanjšalo na kodo za obdelavo signala, ki je bila izvedena na ESP8266. Po dodatnih raziskavah sem ugotovil, da ima srce štiri različne impulze z različnim obdobjem, zato ni čudno, da je programska oprema netočna. Način boja proti temu bi bil vzeti povprečno štiri impulze v nizu in izračunati obdobje srca za te štiri impulze.

Preostali del sistema je bil funkcionalen, vendar je to zelo eksperimentalna naprava, ki sem jo želel zgraditi, da vidim, ali je objekt mogoč. Podedovana koda, ki je bila uporabljena za pošiljanje potisnih obvestil, bo kmalu neuporabna, zato, če to berete konec leta 2018 ali pozno, bi bila potrebna drugačna metoda. Ta težava se pojavlja le pri ESP -ju, zato če bi to želeli izvesti na Arduinu, ki podpira WiFi, ne bi bilo težav.

Če imate kakršna koli vprašanja ali težave, mi pišite na Instructables.

Priporočena: