Obsah:

Monitor srdečního tepu IOT (ESP8266 a aplikace pro Android): 5 kroků
Monitor srdečního tepu IOT (ESP8266 a aplikace pro Android): 5 kroků

Video: Monitor srdečního tepu IOT (ESP8266 a aplikace pro Android): 5 kroků

Video: Monitor srdečního tepu IOT (ESP8266 a aplikace pro Android): 5 kroků
Video: Heart Rate 5 click | the optical biosensor Click board™ 2024, Červenec
Anonim
Image
Image

V rámci projektu mého posledního roku jsem chtěl navrhnout zařízení, které by monitorovalo vaši srdeční frekvenci, ukládalo vaše data na server a upozorňovalo vás na to upozorněním, když byl váš srdeční tep abnormální. Myšlenka tohoto projektu vznikla, když jsem se pokusil vytvořit vhodnou aplikaci, která uživatele upozorní, když má problém se srdcem, ale nemohl jsem přijít na způsob využití informací v reálném čase. Projekt má čtyři hlavní části včetně fyzického obvodu pro měření tepu, Wi-Fi modulu ESP8266 s kódem pro zpracování signálu, serveru pro ukládání kódu a aplikace pro Android pro zobrazení srdeční frekvence.

Video s podrobnostmi o fyzickém obvodu lze vidět výše. Veškerý kód projektu najdete na mém Githubu.

Krok 1: Okruh

Okruh
Okruh

Existují dvě hlavní metody měření srdečního tepu, ale pro tento projekt jsem se rozhodl použít fotopletyzmografii (PPG), která používá zdroj infračerveného nebo červeného světla, který se láme skrz prvních několik vrstev kůže. Fotosenzor se používá k měření změny intenzity světla (když krev protéká nádobou). PPG signály jsou neuvěřitelně hlučné, takže jsem použil filtr s pásmovým filtrem k odfiltrování konkrétních požadovaných frekvencí. Lidské srdce bije mezi frekvencí 1 až 1,6 Hz. Operační zesilovač, který jsem použil, byl lm324, který měl nejlepší kompenzaci napětí ze všech operačních zesilovačů, které jsem měl k dispozici. Pokud tento projekt obnovujete, pak by přesný operační zesilovač byl mnohem lepší volbou.

Byl použit zisk pouze dvou, protože maximální tolerance napětí na ESP8266 je 3,3 V a nechtěl jsem poškodit desku!

Postupujte podle výše uvedeného obvodu a pokuste se, aby fungoval na desce chleba. Pokud doma nemáte osciloskop, můžete zapojit výstup do Arduina a vykreslit jej, ale ujistěte se, že napětí není vyšší než tolerance arduina nebo mikrokontroléru.

Obvod byl testován na desce chleba a změna výstupu byla pozorována, když byl prst umístěn přes LED a fototranzistor. Poté jsem se rozhodl spojit desku dohromady, což ve videu nebylo uvedeno.

Krok 2: Kód pro zpracování signálu a komunikace se serverem

Image
Image
Kód pro zpracování signálu a komunikace se serverem
Kód pro zpracování signálu a komunikace se serverem

Rozhodl jsem se použít Arduino IDE na ESP8266, protože je to tak snadné. Když byl signál vykreslen, byl stále velmi hlučný, a tak jsem se rozhodl jej vyčistit filtrem FIR s klouzavým průměrem s číslem vzorku deset. K tomu jsem upravil příklad programu Arduino s názvem „vyhlazování“. Trochu jsem experimentoval, abych našel způsob měření frekvence signálu. Pulsy měly různou délku a amplitudu, protože srdce mělo čtyři různé typy pulzů a charakteristiky signálů PPG. Jako referenční bod pro každý impuls jsem zvolil známou střední hodnotu, kterou signál vždy překročil. Pomocí kruhového pufru jsem určil, kdy je sklon signálu kladný nebo záporný. Kombinace těchto dvou mi umožnila vypočítat dobu mezi impulsy, když byl signál kladný a byl roven konkrétní hodnotě.

Software vytvořil poměrně nepřesné BPM, které ve skutečnosti nebylo možné použít. S dalšími iteracemi by mohl být navržen lepší program, ale z časových důvodů to nebylo možné. Kód najdete v odkazu níže.

Software ESP8266

Krok 3: Server a datová komunikace

Server a datová komunikace
Server a datová komunikace

Rozhodl jsem se použít Firebase k ukládání dat, protože je to bezplatná služba a velmi snadno se používá s mobilními aplikacemi. S ESP8266 neexistuje žádné oficiální API pro Firebase, ale zjistil jsem, že knihovna Arduino funguje velmi dobře.

Existuje příklad programu, který lze nalézt v knihovně ESP8266WiFi.h, který vám umožňuje připojit se k routeru pomocí SSID a hesla. To bylo použito k připojení desky k internetu, aby bylo možné odesílat data.

Přestože ukládání dat bylo snadné, stále existuje řada problémů s odesíláním oznámení push prostřednictvím požadavku HTTP POST. Našel jsem komentář k Githubu, který používal starší metodu, jak toho dosáhnout prostřednictvím cloudových zpráv Google a knihovny HTTP pro ESP8266. Tuto metodu lze vidět v kódu na mém Githubu.

Na Firebase jsem vytvořil projekt a použil API a registrační klíče v softwaru. Cloudové zasílání zpráv firebase bylo s aplikací použito k odesílání oznámení push uživateli. Když byla komunikace testována, data byla v databázi vidět, když byl spuštěn ESP8266.

Krok 4: Aplikace pro Android

Aplikace pro Android
Aplikace pro Android

Velmi základní aplikace pro Android byla navržena se dvěma aktivitami. První aktivita uživatele přihlásila nebo zaregistrovala pomocí rozhraní Firebase API. Prozkoumal jsem datový list a našel různé návody, jak používat Firebase s mobilní aplikací. Hlavní aktivita, která zobrazovala uživateli dat uživatele, posluchače událostí v reálném čase, takže nedošlo ke znatelnému zpoždění změn v uživatelském BPM. Oznámení push byla provedena pomocí cloudových zpráv Firebase, které byly zmíněny dříve. V datovém listu Firebase je mnoho užitečných informací o tom, jak to implementovat, a aplikaci lze testovat odesíláním oznámení z řídicího panelu na webu Firebase.

Veškerý kód aktivit a metody pro cloudové zasílání zpráv najdete v mém úložišti Github.

Krok 5: Závěr

S měřením BPM uživatele došlo k několika zásadním problémům. Hodnoty se velmi lišily a nebyly použitelné k určení zdravotního stavu uživatele. To se scvrklo na kód zpracování signálu, který byl implementován na ESP8266. Po dalším výzkumu jsem zjistil, že srdce má čtyři různé pulsy s různou periodou, takže nebylo divu, že software byl nepřesný. Způsobem boje proti tomu by bylo odebrat průměrně čtyři pulsy v poli a vypočítat periodu srdce přes tyto čtyři pulzy.

Zbytek systému byl funkční, ale toto je velmi experimentální zařízení, které jsem chtěl postavit, abych zjistil, zda je objekt možný. Starší kód, který byl použit k odesílání oznámení push, bude brzy nepoužitelný, takže pokud to čtete na konci roku 2018 nebo pozdě, bude třeba použít jinou metodu. K tomuto problému dochází pouze u ESP, takže pokud byste to chtěli implementovat na Arduino podporujícím WiFi, nebyl by žádný problém.

Pokud máte nějaké dotazy nebo problémy, neváhejte mi napsat na Instructables.

Doporučuje: