Talaan ng mga Nilalaman:

IOT Heart Rate Monitor (ESP8266 at Android App): 5 Hakbang
IOT Heart Rate Monitor (ESP8266 at Android App): 5 Hakbang

Video: IOT Heart Rate Monitor (ESP8266 at Android App): 5 Hakbang

Video: IOT Heart Rate Monitor (ESP8266 at Android App): 5 Hakbang
Video: Arduino Project: IOT Car Parking System using Nodemcu esp8266 wifi + Blynk (Tabs + led widgets) 2024, Hulyo
Anonim
Image
Image

Bilang bahagi ng aking proyekto sa panghuling taon nais kong mag-disenyo ng isang aparato na susubaybayan ang rate ng iyong puso, iimbak ang iyong data sa isang server at aabisuhan ka sa pamamagitan ng abiso kapag ang iyong rate ng puso ay hindi normal. Ang ideya sa likod ng proyektong ito ay dumating noong sinubukan kong bumuo ng isang fit-bit na app na aabisuhan ang isang gumagamit kapag nagkakaroon sila ng problema sa puso ngunit hindi ko malaman ang isang paraan ng paggamit ng real-time na impormasyon. Ang proyekto ay may apat na pangunahing bahagi kabilang ang pisikal na circuit para sa pagsukat ng tibok ng puso, isang module na Wi-Fi ng ESP8266 na may signal processing code, ang server para sa pagtatago ng code at isang Android app para sa pagpapakita ng rate ng puso.

Ang isang video na nagdedetalye ng pisikal na circuit ay maaaring makita sa itaas. Ang lahat ng mga code para sa proyekto ay maaaring matagpuan sa aking Github.

Hakbang 1: Ang Circuit

Ang Circuit
Ang Circuit

Mayroong dalawang pangunahing pamamaraan sa pagsukat ng isang tibok ng puso ngunit para sa proyektong ito nagpasya akong gumamit ng photoplethysmography (PPG) na gumagamit ng isang infrared o pulang ilaw na mapagkukunan na na-refract sa pamamagitan ng unang ilang mga layer ng balat. Ginagamit ang isang sensor ng larawan upang sukatin ang pagbabago ng intensity ng ilaw (kapag dumadaloy ang dugo sa isang daluyan). Ang mga signal ng PPG ay hindi kapani-paniwalang maingay kaya gumamit ako ng isang band pass filter upang salain ang mga tukoy na kinakailangang frequency. Ang isang puso ng tao ay pumapalo sa pagitan ng dalas ng 1 at 1.6 Hz. Ang ginamit kong op-amp ay ang lm324 na may pinakamahusay na boltahe-offset ng lahat ng mga op-amp na magagamit sa akin. Kung muling likha mo ang proyektong ito kung gayon ang isang tumpak na op-amp ay magiging isang mas mahusay na pagpipilian.

Ang isang nakakuha lamang ng dalawa ay ginamit dahil ang maximum tolerance ng boltahe sa ESP8266 ay 3.3v at hindi ko nais na mapinsala ang aking board!

Sundin ang circuit sa itaas at subukang gawin itong gumagana sa isang board ng tinapay. Kung wala kang isang oscilloscope sa bahay maaari mong i-plug ang output sa isang Arduino at i-plot ito ngunit tiyakin na ang boltahe ay hindi mas mataas kaysa sa arduino o tolerance ng microcontroller.

Ang circuit ay sinubukan sa isang board ng tinapay at ang isang pagbabago sa output ay sinusunod kapag ang isang daliri ay inilagay sa kabuuan ng LED at transistor ng larawan. Napagpasyahan kong maghinang ng sama-sama sa board na hindi ipinakita sa video.

Hakbang 2: Ang Code ng Pagpoproseso ng Signal at Mga Komunikasyon sa Server

Image
Image
Ang Code ng Pagpoproseso ng Signal at Mga Komunikasyon sa Server
Ang Code ng Pagpoproseso ng Signal at Mga Komunikasyon sa Server

Napagpasyahan kong gamitin ang Arduino IDE sa ESP8266 sapagkat napakadaling gamitin. Nang mailagay ang signal ay napakaingay pa rin kaya't napagpasyahan kong linisin ito gamit ang isang paglipat-average na filter na FIR na may halimbawang bilang ng sampu. Binago ko ang isang halimbawa ng programa ng Arduino na tinatawag na "pagpapakinis" upang gawin ito. Nag-eksperimento ako nang kaunti upang makahanap ng isang paraan ng pagsukat sa dalas ng signal. Ang mga pulso ay may iba't ibang haba at amplitude sanhi ng puso na mayroong apat na magkakaibang uri ng pulso at mga katangian ng mga senyas ng PPG. Pinili ko ang isang kilalang gitnang halaga na palaging tumatawid ang signal bilang isang punto ng sanggunian para sa bawat pulso. Gumamit ako ng isang ring buffer upang matukoy kung kailan ang positibo o negatibo ng slope ng signal. Pinayagan ng kombinasyon ng dalawang ito ang aking kalkulahin ang panahon sa pagitan ng mga pulso kapag ang signal ay positibo at katumbas ng isang tukoy na halaga.

Gumawa ang software ng isang hindi tumpak na BPM na hindi talaga magamit. Na may karagdagang mga pag-ulit ng isang mas mahusay na programa ay maaaring idisenyo ngunit dahil sa pagpigil ng oras na ito ay hindi isang pagpipilian. Ang code ay matatagpuan sa link sa ibaba.

Software ng ESP8266

Hakbang 3: Ang Server at Mga Komunikasyon sa Data

Ang Server at Mga Komunikasyon sa Data
Ang Server at Mga Komunikasyon sa Data

Napagpasyahan kong gamitin ang Firebase upang maiimbak ang data dahil ito ay isang libreng serbisyo at napakadaling gamitin sa mga mobile app. Walang opisyal na API para sa Firebase sa ESP8266 ngunit nahanap ko na gumana nang maayos ang aklatan ng Arduino.

Mayroong isang halimbawa ng programa na maaaring matagpuan sa library ng ESP8266WiFi.h na nagbibigay-daan sa iyo upang kumonekta sa isang router gamit ang SSID at ang Password. Ginamit ito upang ikonekta ang board sa internet upang maipadala ang data.

Bagaman ang pag-iimbak ng data ay madaling nagawa mayroon pa ring isang bilang ng mga isyu sa pagpapadala ng mga push notification sa pamamagitan ng isang kahilingan sa HTTP POST. Natagpuan ko ang isang puna sa Github na gumamit ng isang pamanaing pamamaraan ng paggawa nito sa pamamagitan ng Google cloud messaging at HTTP library para sa ESP8266. Ang pamamaraang ito ay maaaring makita sa code sa aking Github.

Sa Firebase lumikha ako ng isang proyekto at ginamit ang API at mga registration key sa software. Ang firebase cloud messaging ay ginamit kasama ang app upang makapagpadala ng mga push notification sa gumagamit. Kapag ang mga komunikasyon ay nasubok na data ay maaaring makita sa database habang tumatakbo ang ESP8266.

Hakbang 4: Ang Android App

Ang Android App
Ang Android App

Ang isang napaka-pangunahing Android app ay dinisenyo na may dalawang mga aktibidad. Ang unang aktibidad ay nag-sign in sa gumagamit o nagrehistro sa kanila gamit ang Firebase API. Sinaliksik ko ang datasheet at natagpuan ang iba't ibang mga tutorial sa kung paano gamitin ang Firebase sa isang mobile app. Ang pangunahing aktibidad na ipinakita ang gumagamit ng data ng gumagamit ng isang tagapakinig ng kaganapan sa real time kaya walang kapansin-pansing pagkaantala sa mga pagbabago sa BPM ng gumagamit. Ang mga push notification ay ginawa gamit ang Firebase cloud messaging na nabanggit dati. Mayroong maraming kapaki-pakinabang na impormasyon sa Firebase datasheet sa kung paano ipatupad ito at masubukan ang app na nagpapadala ng mga abiso mula sa dashboard sa website ng Firebase.

Ang lahat ng mga code para sa mga aktibidad at mga pamamaraan para sa pagmemensahe ng cloud ay matatagpuan sa aking Github Repository.

Hakbang 5: Konklusyon

Mayroong ilang mga pangunahing isyu sa pagsukat ng BPM ng gumagamit. Malaki ang pagkakaiba-iba ng mga halaga at hindi magagamit upang matukoy ang kalusugan ng isang gumagamit. Kumulo ito sa signal processing code na ipinatupad sa ESP8266. Pagkatapos ng karagdagang pagsasaliksik nalaman ko na ang puso ay may apat na magkakaibang pulso na may iba't ibang panahon kaya't hindi nakapagtataka na ang software ay hindi tumpak. Ang isang paraan ng paglaban nito ay ang pagkuha ng average ng apat na pulso sa isang array at kalkulahin ang panahon ng puso sa apat na pulso.

Ang natitirang system ay gumagana ngunit ito ay isang napaka-eksperimentong aparato na nais kong buuin upang makita kung posible ang bagay. Ang legacy code na ginamit upang magpadala ng mga abiso sa push ay malapit nang hindi magamit kaya kung binabasa mo ito sa huli na 2018 o huli isang kakaibang pamamaraan ang kinakailangan ng pukyutan. Ang isyung ito ay nangyayari lamang sa ESP bagaman kaya kung nais mong ipatupad ito sa isang may kakayahang WiFi na Arduino wala itong problema.

Kung mayroon kang anumang mga katanungan o isyu mangyaring huwag mag-atubiling ipadala sa akin ang mensahe sa Mga Instructable.

Inirerekumendang: