Turinys:

IOT širdies ritmo monitorius (ESP8266 ir „Android“programa): 5 žingsniai
IOT širdies ritmo monitorius (ESP8266 ir „Android“programa): 5 žingsniai

Video: IOT širdies ritmo monitorius (ESP8266 ir „Android“programa): 5 žingsniai

Video: IOT širdies ritmo monitorius (ESP8266 ir „Android“programa): 5 žingsniai
Video: The heart pulse sensor with Arduino 2024, Lapkritis
Anonim
Image
Image

Vykdydamas paskutinių metų projektą norėjau sukurti įrenginį, kuris stebėtų jūsų širdies ritmą, saugotų jūsų duomenis serveryje ir praneštų jums, kai jūsų širdies ritmas yra nenormalus. Šio projekto idėja kilo tada, kai bandžiau sukurti pritaikytą bitų programą, kuri praneštų vartotojui, kai jie turi širdies problemų, bet negalėjau išsiaiškinti realaus laiko informacijos naudojimo būdo. Projektą sudaro keturios pagrindinės dalys įskaitant fizinę širdies plakimo matavimo grandinę, ESP8266 „Wi-Fi“modulį su signalo apdorojimo kodu, serverį, skirtą kodui išsaugoti, ir „Android“programą širdies ritmui rodyti.

Vaizdo įrašas, kuriame išsamiai aprašyta fizinė grandinė, matomas aukščiau. Visą projekto kodą galite rasti mano „Github“.

1 žingsnis: grandinė

Circuit
Circuit

Yra du pagrindiniai širdies plakimo matavimo metodai, tačiau šiam projektui nusprendžiau naudoti fotopletismografiją (PPG), kurioje naudojamas infraraudonųjų arba raudonosios šviesos šaltinis, kuris lūžta per pirmuosius odos sluoksnius. Šviesos intensyvumo kitimui matuoti (kai kraujas teka per indą) naudojamas foto jutiklis. PPG signalai yra neįtikėtinai triukšmingi, todėl norėdamas išfiltruoti tam tikrus reikalingus dažnius, naudoju dažnių juostos filtrą. Žmogaus širdis plaka nuo 1 iki 1,6 Hz dažniu. Naudojamas „op-amp“buvo „lm324“, kurio įtampos poslinkis buvo geriausias iš visų man prieinamų stiprintuvų. Jei atkuriate šį projektą, tikslus op-amp būtų daug geresnis pasirinkimas.

Buvo naudojamas tik dviejų stiprinimas, nes maksimali ESP8266 įtampos tolerancija yra 3,3 V ir aš nenorėjau sugadinti savo plokštės!

Vykdykite aukščiau pateiktą schemą ir pabandykite, kad ji veiktų duonos lentoje. Jei namuose neturite osciloskopo, galite prijungti išvestį prie „Arduino“ir nubraižyti, tačiau įsitikinkite, kad įtampa nėra didesnė už arduino ar mikrovaldiklio toleranciją.

Grandinė buvo išbandyta ant duonos lentos ir buvo pastebėtas išvesties pokytis, kai pirštas buvo uždėtas per šviesos diodą ir foto tranzistorių. Tada nusprendžiau sulituoti lentą, kuri nebuvo parodyta vaizdo įraše.

2 veiksmas: signalų apdorojimo kodas ir serverio ryšiai

Image
Image
Signalo apdorojimo kodas ir serverio ryšiai
Signalo apdorojimo kodas ir serverio ryšiai

Aš nusprendžiau naudoti „Arduino IDE“ESP8266, nes juo taip paprasta naudotis. Kai signalas buvo nubraižytas, jis vis dar buvo labai triukšmingas, todėl nusprendžiau jį išvalyti FIR slankiojo vidurkio filtru, kurio mėginio skaičius yra dešimt. Norėdami tai padaryti, pakeičiau „Arduino“programos pavyzdį, vadinamą „išlyginimu“. Šiek tiek paeksperimentavau, norėdamas rasti signalo dažnio matavimo būdą. Impulsai buvo įvairaus ilgio ir amplitudės, nes širdis turėjo keturis skirtingus impulsų tipus ir PPG signalų charakteristikas. Aš pasirinkau žinomą vidurinę vertę, kurią signalas visada kirto kaip atskaitos tašką kiekvienam impulsui. Aš naudoju žiedinį buferį, kad nustatyčiau, kada signalo nuolydis buvo teigiamas ar neigiamas. Šių dviejų derinys leido apskaičiuoti laikotarpį tarp impulsų, kai signalas buvo teigiamas ir lygus konkrečiai vertei.

Programinė įranga pagamino gana netikslų BPM, kurio iš tikrųjų nebuvo galima naudoti. Su papildomomis iteracijomis būtų galima sukurti geresnę programą, tačiau dėl laiko apribojimų tai nebuvo pasirinkimas. Kodą rasite žemiau esančioje nuorodoje.

Programinė įranga ESP8266

3 žingsnis: serveris ir duomenų perdavimas

Serveris ir duomenų perdavimas
Serveris ir duomenų perdavimas

Aš nusprendžiau naudoti „Firebase“duomenims saugoti, nes tai nemokama paslauga, kurią labai lengva naudoti su programomis mobiliesiems. Nėra oficialios „Firebase“API su ESP8266, tačiau pastebėjau, kad „Arduino“biblioteka veikė labai gerai.

Yra pavyzdinė programa, kurią galima rasti bibliotekoje ESP8266WiFi.h, kuri leidžia prisijungti prie maršrutizatoriaus naudojant SSID ir slaptažodį. Jis buvo naudojamas prijungti plokštę prie interneto, kad būtų galima siųsti duomenis.

Nors duomenų saugojimas buvo lengvai atliktas, vis dar kyla nemažai problemų, susijusių su tiesioginių pranešimų siuntimu naudojant HTTP POST užklausą. Radau komentarą apie „Github“, kuris naudojo seną metodą tai padaryti per „Google“pranešimus iš debesies ir HTTP biblioteką, skirtą ESP8266. Šį metodą galima pamatyti mano „Github“kode.

„Firebase“sukūriau projektą ir programinėje įrangoje panaudojau API ir registracijos raktus. „Firebase“pranešimai iš debesies buvo naudojami su programa, kad vartotojui būtų siunčiami tiesioginiai pranešimai. Kai buvo bandomas ryšys, duomenys buvo matomi duomenų bazėje, kai ESP8266 veikė.

4 žingsnis: „Android“programa

„Android“programa
„Android“programa

Buvo sukurta labai paprasta „Android“programa su dviem veiklomis. Pirmoji veikla prisijungė prie vartotojo arba užregistravo jį naudodami „Firebase“API. Aš ištyriau duomenų lapą ir radau įvairių pamokų, kaip naudoti „Firebase“su programa mobiliesiems. Pagrindinė veikla, kurios metu vartotojo duomenų vartotojas buvo rodomas įvykių klausytoju realiuoju laiku, todėl nebuvo pastebimai vėluota keisti vartotojo BPM. Tiesioginiai pranešimai buvo padaryti naudojant „Firebase“pranešimus iš debesies, kurie buvo minėti anksčiau. „Firebase“duomenų lape yra daug naudingos informacijos, kaip tai įgyvendinti, o programą galima išbandyti - pranešimų siuntimas iš „Firebase“svetainės informacijos suvestinės.

Visą veiklos kodą ir pranešimų siuntimo debesyje metodus galite rasti mano „Github“saugykloje.

5 žingsnis: Išvada

Matuojant vartotojo BPM kilo keletas didelių problemų. Vertės labai skyrėsi ir nebuvo naudojamos vartotojo sveikatai nustatyti. Tai nulėmė signalų apdorojimo kodą, kuris buvo įdiegtas ESP8266. Atlikęs papildomus tyrimus sužinojau, kad širdis turi keturis skirtingus impulsus, kurių laikotarpis skiriasi, todėl nenuostabu, kad programinė įranga buvo netiksli. Kova su tuo būtų vidutiniškai paimti iš keturių masyvo impulsų ir apskaičiuoti širdies laikotarpį per tuos keturis impulsus.

Likusi sistemos dalis buvo funkcionali, tačiau tai yra labai eksperimentinis įrenginys, kurį norėjau sukurti, kad pamatyčiau, ar objektas yra įmanomas. Senas kodas, kuris buvo naudojamas tiesioginiams pranešimams siųsti, netrukus bus netinkamas naudoti, taigi, jei skaitote tai 2018 m. Pabaigoje arba vėlai, reikės kitokio metodo. Ši problema kyla tik naudojant ESP, taigi, jei norėtumėte tai įdiegti „Arduino“palaikančiame „WiFi“, tai nebūtų problema.

Jei turite klausimų ar problemų, nedvejodami praneškite man „Instructables“.

Rekomenduojamas: