Turinys:
- 1 žingsnis: grandinė
- 2 veiksmas: signalų apdorojimo kodas ir serverio ryšiai
- 3 žingsnis: serveris ir duomenų perdavimas
- 4 žingsnis: „Android“programa
- 5 žingsnis: Išvada
Video: IOT širdies ritmo monitorius (ESP8266 ir „Android“programa): 5 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
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ė
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
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
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
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:
Širdies plakimo jutiklis naudojant „Arduino“(širdies ritmo monitorių): 3 žingsniai
Širdies ritmo jutiklis naudojant „Arduino“(širdies ritmo monitorių): Širdies plakimo jutiklis yra elektroninis prietaisas, naudojamas matuoti širdies ritmą, ty širdies plakimo greitį. Kūno temperatūros, širdies ritmo ir kraujospūdžio stebėjimas yra pagrindiniai dalykai, kuriuos darome, kad būtume sveiki. Širdies ritmas gali būti vienas
Pasidaryk pats širdies ritmo monitorius (registratorius): 4 žingsniai
„Pasidaryk pats“širdies ritmo monitorius (registratorius): Šiame projekte aš jums parodysiu, kaip komercinis išmanusis laikrodis matuoja ir stebi jūsų širdies ritmą, o vėliau parodysiu, kaip sukurti „pasidaryk pats“grandinę, kuri iš esmės gali padaryti tą patį, be to, ji taip pat gali saugoti širdies ritmo duomenis
Širdies ritmo matavimas yra piršto galiukas: fotopletizografijos metodas širdies ritmui nustatyti: 7 žingsniai
Širdies ritmo matavimas yra piršto galiukas: fotopletizmografija Širdies ritmo nustatymo metodas: fotopletmografija (PPG) yra paprasta ir nebrangi optinė technika, kuri dažnai naudojama kraujo tūrio pokyčiams nustatyti audinių mikrovaskulinėje lovoje. Dažniausiai jis naudojamas neinvaziniu būdu matuojant odos paviršių, paprastai
„Arduino“širdies ritmo monitorius: 5 žingsniai
„Arduino“širdies ritmo monitorius: Sveiki visi, aš sukūriau šį rankinį „Arduino“valdomą širdies ritmo monitorių
Širdies ritmo monitorius AD8232, Arduino, apdorojimas: 4 žingsniai
Širdies ritmo monitorius AD8232, Arduino, apdorojimas: Analoginiai prietaisai AD8232 yra visiškai analoginis priekinis galas, sukurtas gauti milivolto lygio EKG (ElectroCardioGram) signalus. Nors prijungti AD8232 ir pamatyti gautą EKG signalą osciloskopu yra paprasta, tačiau iššūkis