Sisukord:

IOT pulsikell (ESP8266 ja Androidi rakendus): 5 sammu
IOT pulsikell (ESP8266 ja Androidi rakendus): 5 sammu

Video: IOT pulsikell (ESP8266 ja Androidi rakendus): 5 sammu

Video: IOT pulsikell (ESP8266 ja Androidi rakendus): 5 sammu
Video: Контроллер температуры мобильного телефона с модулем WIFI DT 06 | Программирование LDmicro-Roboremo 2024, November
Anonim
Image
Image

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

Ringkond
Ringkond

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

Image
Image
Signaalitöötluskood ja serveriside
Signaalitöötluskood ja serveriside

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

Server ja andmeside
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

Androidi rakendus
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: