Sisukord:
- 1. samm: vooluring
- 2. etapp: signaalitöötluskood ja serveri side
- Samm: server ja andmeside
- Samm: Androidi rakendus
- 5. samm: järeldus
Video: IOT pulsikell (ESP8266 ja Androidi rakendus): 5 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
Viimase aasta projekti raames tahtsin kavandada seadme, mis jälgiks teie pulssi, salvestaks teie andmed serverisse ja teavitaks teid teatega, kui teie pulss on ebanormaalne. Selle projekti idee tekkis siis, kui proovisin luua sobivat bitti rakendust, mis teavitab kasutajat südameprobleemidest, kuid ma ei suutnud välja mõelda, kuidas reaalajas teavet kasutada. Projektil on neli põhiosa sealhulgas füüsiline ahel südamelöökide mõõtmiseks, ESP8266 WiFi-moodul koos signaalitöötluskoodiga, server koodi salvestamiseks ja Androidi rakendus pulsi kuvamiseks.
Eespool on näha füüsilise vooluahela üksikasjalik video. Kogu projekti koodi leiate minu Githubist.
1. samm: vooluring
Südame löögisageduse mõõtmiseks on kaks peamist meetodit, kuid selle projekti jaoks otsustasin kasutada fotopletüsmograafiat (PPG), mis kasutab infrapuna- või punast valgusallikat, mis murdub läbi esimese paari nahakihi. Valgustugevuse muutuse mõõtmiseks (kui veri voolab läbi anuma) kasutatakse fotoandurit. PPG signaalid on uskumatult mürarikkad, nii et ma kasutasin ribalaiuse filtrit vajalike sageduste filtreerimiseks. Inimese süda lööb sagedusel 1 kuni 1,6 Hz. Kasutasin op-võimendit lm324, millel oli minu jaoks saadaval olevatest võimenditest parim pinge nihkega. Kui loote seda projekti uuesti, oleks täppisvõimendi palju parem valik.
Kasutati ainult kahevõimendust, sest ESP8266 maksimaalne pingetaluvus on 3,3 V ja ma ei tahtnud oma plaati kahjustada!
Järgige ülaltoodud skeemi ja proovige seda leivalaual tööle panna. Kui teil pole kodus ostsilloskoopi, saate ühendada väljundi Arduinoga ja joonistada selle, kuid veenduge, et pinge ei oleks suurem kui arduino või mikrokontrolleri taluvus.
Vooluahelat testiti leivaplaadil ja väljundi muutust täheldati, kui sõrm asetati üle LED -i ja fototransistori. Seejärel otsustasin tahvli kokku joota, mida videos ei näidatud.
2. etapp: signaalitöötluskood ja serveri side
Otsustasin ESP8266 -l kasutada Arduino IDE -d, kuna seda on nii lihtne kasutada. Kui signaal joonistati, oli see endiselt väga mürarikas, nii et otsustasin selle puhastada FIR-i liikuva keskmise filtriga, mille proovide arv on kümme. Muutsin selleks Arduino programmi näidet nimega "silumine". Ma katsetasin natuke, et leida viis signaali sageduse mõõtmiseks. Impulsid olid erineva pikkuse ja amplituudiga, kuna südames oli neli erinevat tüüpi impulsse ja PPG -signaalide omadused. Valisin teadaoleva keskmise väärtuse, mille signaal ületas alati iga impulsi võrdluspunktina. Kasutasin rõngaspuhvrit, et teha kindlaks, millal signaali kalle oli positiivne või negatiivne. Nende kahe kombinatsioon võimaldas mul arvutada impulsside vahelise perioodi, mil signaal oli positiivne ja võrdne konkreetse väärtusega.
Tarkvara tekitas üsna ebatäpse BPM -i, mida ei saanud tegelikult kasutada. Täiendavate iteratsioonide abil saaks välja töötada parema programmi, kuid ajapiirangute tõttu polnud see valik. Koodi leiate allolevalt lingilt.
ESP8266 tarkvara
Samm: server ja andmeside
Otsustasin andmete salvestamiseks kasutada Firebase'i, kuna see on tasuta teenus ja seda on mobiilirakendustega väga lihtne kasutada. ESP8266 -ga pole Firebase'i jaoks ametlikku API -d, kuid leidsin, et Arduino raamatukogu töötas väga hästi.
ESP8266WiFi.h raamatukogust võib leida näidisprogrammi, mis võimaldab teil SSID ja parooliga ruuteriga ühenduse luua. Seda kasutati tahvli ühendamiseks Internetiga, et saaks andmeid saata.
Kuigi andmete salvestamine oli hõlpsasti teostatav, on tõukemärguannete saatmisel HTTP POST -päringu kaudu endiselt mitmeid probleeme. Leidsin Githubist kommentaari, mis kasutas selleks pärandmeetodit Google'i pilvesõnumite ja ESP8266 HTTP -teegi kaudu. Seda meetodit saab näha minu Githubi koodis.
Firebase'is lõin projekti ja kasutasin tarkvara API -d ja registreerimisvõtmeid. Rakendusega kasutati Firebase'i pilvesõnumeid, et saata kasutajale tõukemärguandeid. Kommunikatsiooni testimisel võis ESP8266 töötamise ajal andmebaasis andmeid näha.
Samm: Androidi rakendus
Väga lihtne Androidi rakendus oli kavandatud kahe tegevusega. Esimene tegevus logis kasutaja sisse või registreeris ta Firebase API abil. Uurisin andmelehte ja leidsin erinevaid õpetusi, kuidas Firebase'i mobiilirakendusega kasutada. Põhitegevus, mis kuvas kasutaja andmekasutaja reaalajas sündmuste kuulaja, nii et kasutaja BPM -i muudatustes ei olnud märgatavat viivitust. Tõukemärguanded tehti Firebase'i pilvesõnumite abil, mida varem mainiti. Firebase'i andmelehel on palju kasulikku teavet selle rakendamise kohta ja rakendust saab testida, kui saadate teateid Firebase'i veebisaidi armatuurlaualt.
Kõik tegevuste kood ja pilvesõnumite saatmise meetodid leiate minu Githubi hoidlast.
5. samm: järeldus
Kasutaja BPM -i mõõtmisel esines mõningaid suuri probleeme. Väärtused olid väga erinevad ja neid ei saanud kasutada kasutaja tervise kindlakstegemiseks. See taandus signaalitöötluskoodile, mis rakendati ESP8266 -l. Pärast täiendavaid uuringuid avastasin, et südamel on neli erinevat impulssi erineva perioodiga, mistõttu polnud ime, et tarkvara oli ebatäpne. Selle vastu võitlemise viis oleks võtta massiivist keskmiselt neli impulssi ja arvutada nende nelja impulsi südameperiood.
Ülejäänud süsteem oli funktsionaalne, kuid see on väga eksperimentaalne seade, mille tahtsin ehitada, et näha, kas objekt on võimalik. Pärandkood, mida kasutati tõukemärguannete saatmiseks, on peagi kasutamiskõlbmatu, nii et kui loete seda 2018. aasta lõpus või hilja, oleks vaja teist meetodit. See probleem ilmneb ainult ESP -ga, nii et kui soovite seda WiFi -toega Arduino rakendada, poleks see probleem.
Kui teil on küsimusi või probleeme, palun saatke mulle Instructablesis sõnum.
Soovitan:
Südamelöögisensor Arduino abil (pulsikell): 3 sammu
Südamelöögisensor, mis kasutab Arduino (pulsikella): Südamelöögisensor on elektrooniline seade, mida kasutatakse pulsi, st südamelöögi kiiruse mõõtmiseks. Kehatemperatuuri, pulsi ja vererõhu jälgimine on põhilised asjad, mida me teeme, et hoida meid tervena. Südame löögisagedus võib olla üks
Androidi rakendus 1. osa: pritsmeekraan fragmentide abil/Kotlin: 5 sammu
Androidi rakendus 1. osa: pritsmeekraan fragmentide abil/Kotlin: Tere jälle, tõenäoliselt on teil mõni " tasuta " COVID19 tõttu kodus olemise aega ja saate tagasi vaadata teemasid, mida varem õppida tahtsite. Androidi rakenduste arendamine on minu jaoks kindlasti üks neist ja otsustasin paar nädalat tagasi anda
Käivitage APK Blynk või muu Androidi rakendus HMI -na Raspberry Pi -l: 7 sammu
Käivitage APK Blynk või muu Androidi rakendus HMI -na Raspberry Pi -l: Tere tegijad! See on minu esimene juhendatav … See on vaarika algaja käeulatuses. Ma veetsin palju aega õigete kombinatsioonide leidmiseks hea töökindluse ja kiiruse jaoks kasutuselevõtust. Olles leidnud vähe teavet selle rakendamiseks
Nutikas kodu Arduino MKR1000 ja M.I.T. Androidi rakendus: 4 sammu
Nutikas kodu Arduino MKR1000 ja M.I.T. Androidi rakendus: selles õpetuses kirjeldan, kuidas oma nutikat kodu vaid mõne komponendiga täiustada. Selle nutika kodu disaini süda on rakendusega juhitav Arduino MKR1000 tahvel, mis on loodud M.I.T. (Massachusettsi Instituut
Androidi/iOS -i rakendus teie OpenWrt -ruuteri kaugjuurdepääsuks: 11 sammu
Androidi/iOS -i rakendus teie OpenWrt -ruuteri kaugjuurdepääsuks: ostsin hiljuti uue ruuteri (Xiaomi Mi Router 3G). Ja loomulikult inspireeris see uus ja vinge riistvara mind selle projektiga tegelema;)