Obsah:

Monitor srdcového tepu IOT (ESP8266 a aplikácia pre Android): 5 krokov
Monitor srdcového tepu IOT (ESP8266 a aplikácia pre Android): 5 krokov

Video: Monitor srdcového tepu IOT (ESP8266 a aplikácia pre Android): 5 krokov

Video: Monitor srdcového tepu IOT (ESP8266 a aplikácia pre Android): 5 krokov
Video: Новый баллистический хронограф Arduino: ESP-01 WiFi, Arduino Nano и смартфон 2024, Júl
Anonim
Image
Image

V rámci svojho posledného ročného projektu som chcel navrhnúť zariadenie, ktoré by monitorovalo váš srdcový tep, ukladalo vaše údaje na server a upozorňovalo vás na to, keď bude váš srdcový tep abnormálny. Myšlienka tohto projektu vznikla, keď som sa pokúsil vytvoriť vhodnú aplikáciu, ktorá upozorní používateľa na problémy so srdcom, ale nevedel som prísť na spôsob, ako využiť informácie v reálnom čase. Projekt má štyri hlavné časti vrátane fyzického obvodu na meranie srdcového tepu, Wi-Fi modulu ESP8266 s kódom na spracovanie signálu, servera na uloženie kódu a aplikácie pre Android na zobrazenie srdcového tepu.

Video s podrobnosťami o fyzickom obvode je možné vidieť vyššie. Všetok kód projektu nájdete na mojom Github.

Krok 1: Okruh

Okruh
Okruh

Existujú dve hlavné metódy merania srdcového tepu, ale pre tento projekt som sa rozhodol použiť fotopletyzmografiu (PPG), ktorá používa zdroj infračerveného alebo červeného svetla, ktorý sa láme cez prvých niekoľko vrstiev kože. Fotosenzor sa používa na meranie zmeny intenzity svetla (keď krv preteká cievou). Signály PPG sú neuveriteľne hlučné, a tak som na odfiltrovanie požadovaných konkrétnych frekvencií použil pásmový filter. Ľudské srdce bije v frekvencii 1 až 1,6 Hz. Operačný zosilňovač, ktorý som použil, bol lm324, ktorý mal najlepší offset napätia zo všetkých operačných zosilňovačov, ktoré som mal k dispozícii. Ak rekonštruujete tento projekt, presný operačný zosilňovač by bol oveľa lepšou voľbou.

Bol použitý zisk iba dvoch, pretože maximálna tolerancia napätia na ESP8266 je 3,3 V a nechcel som poškodiť svoju dosku!

Postupujte podľa vyššie uvedeného obvodu a pokúste sa dosiahnuť, aby fungoval na doske na chlieb. Ak doma nemáte osciloskop, môžete zapojiť výstup do Arduina a vykresliť ho, ale uistite sa, že napätie nie je vyššie ako tolerancia arduina alebo mikrokontroléra.

Obvod bol testovaný na doske na chlieb a zmena výstupu bola pozorovaná, keď bol prst položený cez LED a foto tranzistor. Potom som sa rozhodol spájkovať dosku, ktorá nie je zobrazená na videu.

Krok 2: Kód na spracovanie signálu a komunikácia so serverom

Image
Image
Kód na spracovanie signálu a komunikácia so serverom
Kód na spracovanie signálu a komunikácia so serverom

Rozhodol som sa použiť Arduino IDE na ESP8266, pretože je to tak jednoduché. Keď bol signál vykreslený, bol stále veľmi hlučný, a tak som sa rozhodol vyčistiť ho filtrom FIR s kĺzavým priemerom so vzorkovým číslom desať. Na tento účel som upravil príklad programu Arduino s názvom „vyhladzovanie“. Trochu som experimentoval, aby som našiel spôsob merania frekvencie signálu. Pulzy mali rôznu dĺžku a amplitúdu kvôli srdcu so štyrmi rôznymi druhmi impulzov a charakteristike signálov PPG. Vybral som známu strednú hodnotu, ktorú signál vždy prešiel ako referenčný bod pre každý impulz. Na určenie, či je sklon signálu kladný alebo záporný, som použil krúžkový pufer. Kombinácia týchto dvoch mi umožnila vypočítať periódu medzi impulzmi, keď bol signál pozitívny a rovnal sa konkrétnej hodnote.

Tento softvér produkoval dosť nepresný BPM, ktorý sa v skutočnosti nedal použiť. S ďalšími iteráciami by mohol byť navrhnutý lepší program, ale kvôli časovým obmedzeniam to nebolo možné. Kód nájdete v nižšie uvedenom odkaze.

Softvér ESP8266

Krok 3: Server a dátová komunikácia

Server a dátová komunikácia
Server a dátová komunikácia

Na uloženie údajov som sa rozhodol použiť Firebase, pretože je to bezplatná služba a veľmi ľahko sa používa s mobilnými aplikáciami. S ESP8266 neexistuje žiadne oficiálne API pre Firebase, ale zistil som, že knižnica Arduino funguje veľmi dobre.

Existuje príklad programu, ktorý sa nachádza v knižnici ESP8266WiFi.h a ktorý vám umožňuje pripojiť sa k smerovaču pomocou SSID a hesla. Toto slúžilo na pripojenie dosky k internetu, aby bolo možné odosielať údaje.

Napriek tomu, že ukladanie údajov bolo jednoduché, stále existuje niekoľko problémov s odosielaním upozornení push prostredníctvom požiadavky HTTP POST. Našiel som komentár k Githubu, ktorý používal starší spôsob, ako to urobiť prostredníctvom cloudových správ Google a knižnice HTTP pre ESP8266. Túto metódu je možné vidieť v kóde na mojom Githube.

Na Firebase som vytvoril projekt a v softvéri som použil API a registračné kľúče. Cloudové správy na platforme firebase boli v aplikácii použité na odosielanie upozornení push používateľovi. Keď bola komunikácia testovaná, v databáze ESP8266 bolo možné vidieť údaje.

Krok 4: Aplikácia pre Android

Aplikácia pre Android
Aplikácia pre Android

Úplne základná aplikácia pre Android bola navrhnutá s dvoma aktivitami. Prvá aktivita prihlásila používateľa alebo ho zaregistrovala pomocou rozhrania Firebase API. Preskúmal som technický list a našiel som rôzne návody, ako používať Firebase s mobilnou aplikáciou. Hlavná aktivita, ktorá zobrazovala užívateľovi údajov používateľa, poslucháč udalostí v reálnom čase, takže nedochádzalo k výraznému oneskoreniu zmien v BPM používateľa. Upozornenia push boli vykonávané pomocou cloudových správ Firebase, ktoré boli uvedené vyššie. V technickom liste Firebase je veľa užitočných informácií o tom, ako to implementovať a aplikáciu je možné testovať na odosielanie upozornení z hlavného panela na webe Firebase.

Všetok kód aktivít a metódy pre cloudové správy nájdete v mojom úložisku Github.

Krok 5: Záver

Vyskytlo sa niekoľko zásadných problémov s meraním BPM používateľa. Hodnoty sa veľmi líšili a neboli použiteľné na stanovenie zdravia používateľa. To sa scvrklo na kód spracovania signálu, ktorý bol implementovaný do ESP8266. Po dodatočnom výskume som zistil, že srdce má štyri rôzne pulzy s rôznym obdobím, a preto nebolo divu, že softvér bol nepresný. Spôsobom boja proti tomu by bolo zobrať priemer štyroch impulzov v poli a vypočítať periódu srdca cez tieto štyri impulzy.

Zvyšok systému bol funkčný, ale toto je veľmi experimentálne zariadenie, ktoré som chcel postaviť, aby som zistil, či je objekt možný. Starší kód, ktorý bol použitý na odosielanie upozornení push, bude čoskoro nepoužiteľný, takže ak si to prečítate koncom roka 2018 alebo neskoro, bude potrebné použiť inú metódu. Tento problém sa vyskytuje iba pri ESP, takže ak by ste to chceli implementovať na Arduino s podporou WiFi, nebol by žiadny problém.

Ak máte akékoľvek otázky alebo problémy, neváhajte mi napísať na Instructables.

Odporúča: