Sisällysluettelo:

IOT -sykemittari (ESP8266 ja Android -sovellus): 5 vaihetta
IOT -sykemittari (ESP8266 ja Android -sovellus): 5 vaihetta

Video: IOT -sykemittari (ESP8266 ja Android -sovellus): 5 vaihetta

Video: IOT -sykemittari (ESP8266 ja Android -sovellus): 5 vaihetta
Video: Джентльмены удачи (FullHD, комедия, реж. Александр Серый, 1971 г.) 2024, Marraskuu
Anonim
Image
Image

Osana viimeisen vuoden projektiani halusin suunnitella laitteen, joka valvoisi sykettäsi, tallentaisi tiedot palvelimelle ja ilmoittaisi sinulle ilmoituksella, kun sykkeesi oli epänormaali. Projektin idea syntyi, kun yritin rakentaa sopivan bittisovelluksen, joka ilmoittaa käyttäjälle, jos hänellä on sydänongelma, mutta en voinut keksiä tapaa käyttää reaaliaikaista tietoa. Sisältää fyysisen piirin sykkeen mittaamiseen, ESP8266 Wi-Fi -moduulin, jossa on signaalinkäsittelykoodi, palvelimen koodin tallentamiseen ja Android-sovelluksen sykkeen näyttämiseen.

Fyysisen piirin yksityiskohtainen video näkyy yllä. Kaikki projektin koodit löytyvät Githubistani.

Vaihe 1: Piiri

Piiri
Piiri

Sydämenlyönnin mittaamiseen on kaksi päämenetelmää, mutta tässä projektissa päätin käyttää fotopletytysmografiaa (PPG), joka käyttää infrapuna- tai punaista valonlähdettä, joka murtuu ihon ensimmäisten kerrosten läpi. Valosensoria käytetään mittaamaan valon voimakkuuden muutosta (kun veri virtaa astian läpi). PPG -signaalit ovat uskomattoman meluisia, joten suodatin tarvittavat taajuudet kaistanpäästösuodattimella. Ihmisen sydän lyö taajuudella 1-1,6 Hz. Käyttämäni op-vahvistin oli lm324, jolla oli paras jännitepoikkeama kaikista käytettävissä olevista op-vahvistimista. Jos luot tämän projektin uudelleen, tarkkuusop-vahvistin olisi paljon parempi valinta.

Vahvistusta käytettiin vain kaksi, koska ESP8266: n suurin jännitetoleranssi on 3,3 V, enkä halunnut vahingoittaa levyäni!

Noudata yllä olevaa piiriä ja yritä saada se toimimaan leipätaululla. Jos sinulla ei ole oskilloskooppia kotona, voit kytkeä lähdön Arduinoon ja piirtää sen, mutta varmista, että jännite ei ole korkeampi kuin arduino- tai mikrokontrollerin toleranssi.

Piiri testattiin leipätaululla ja ulostulon muutos havaittiin, kun sormi asetettiin LEDin ja valotransistorin yli. Päätin sitten juottaa levyn yhteen, jota ei näytetty videossa.

Vaihe 2: Signaalin käsittelykoodi ja palvelinviestintä

Image
Image
Signaalin käsittelykoodi ja palvelinviestintä
Signaalin käsittelykoodi ja palvelinviestintä

Päätin käyttää Arduino IDE: tä ESP8266: ssa, koska se on niin helppokäyttöinen. Kun signaali piirrettiin, se oli edelleen erittäin meluisa, joten päätin puhdistaa sen FIR-liukuvan keskiarvon suodattimella, jonka näyte oli kymmenen. Muokkasin tähän esimerkin Arduino -ohjelmaa nimeltä "tasoitus". Kokeilin hieman löytääkseni tavan mitata signaalin taajuus. Pulssit olivat eri pituisia ja amplitudisia, koska sydämessä oli neljä erilaista pulssia ja PPG -signaalien ominaisuudet. Valitsin tunnetun keskiarvon, jonka signaali ylitti aina kullekin pulssille. Käytin rengaspuskuria määrittämään, milloin signaalin kaltevuus oli positiivinen tai negatiivinen. Näiden kahden yhdistelmän avulla voitiin laskea pulssien välinen aika, jolloin signaali oli positiivinen ja yhtä suuri kuin tietty arvo.

Ohjelmisto tuotti melko epätarkan BPM: n, jota ei todellakaan voitu käyttää. Lisä iteraatioilla voitaisiin suunnitella parempi ohjelma, mutta ajanrajoitusten vuoksi tämä ei ollut vaihtoehto. Koodi löytyy alla olevasta linkistä.

Ohjelmisto ESP8266

Vaihe 3: Palvelin- ja tietoliikenne

Palvelin ja tietoliikenne
Palvelin ja tietoliikenne

Päätin käyttää Firebasea tietojen tallentamiseen, koska se on ilmainen palvelu ja sitä on erittäin helppo käyttää mobiilisovellusten kanssa. ESP8266: lla ei ole virallista Firebase -sovellusliittymää, mutta huomasin, että Arduino -kirjasto toimi erittäin hyvin.

ESP8266WiFi.h -kirjastosta löytyy esimerkkiohjelma, jonka avulla voit muodostaa yhteyden reitittimeen SSID: n ja salasanan avulla. Tätä käytettiin kortin yhdistämiseen Internetiin, jotta tiedot voitaisiin lähettää.

Vaikka tietojen tallentaminen oli helppoa, on edelleen useita ongelmia push -ilmoitusten lähettämisessä HTTP POST -pyynnön kautta. Löysin kommentin Githubista, joka käytti vanhaa tapaa tehdä tämä Googlen pilviviestien ja ESP8266: n HTTP -kirjaston kautta. Tämä menetelmä näkyy Githubin koodissa.

Firebasessa loin projektin ja käytin ohjelmiston sovellusliittymää ja rekisteröintiavaimia. Firebase -pilviviestejä käytettiin sovelluksen kanssa push -ilmoitusten lähettämiseen käyttäjälle. Kun tietoliikennettä testattiin, tiedot saatiin nähdä tietokannassa ESP8266: n ollessa käynnissä.

Vaihe 4: Android -sovellus

Android -sovellus
Android -sovellus

Hyvin yksinkertainen Android -sovellus on suunniteltu kahdella toiminnolla. Ensimmäinen toiminto kirjautui käyttäjän sisään tai rekisteröi hänet Firebase -sovellusliittymän avulla. Tutkin tietolomaketta ja löysin erilaisia opetusohjelmia Firebasen käyttämisestä mobiilisovelluksen kanssa. Pääaktiviteetti, joka näytti käyttäjän datakäyttäjän reaaliaikaisessa tapahtumakuuntelijassa, joten käyttäjän BPM: n muutoksissa ei havaittu havaittavaa viivettä. Push -ilmoitukset tehtiin aiemmin mainitun Firebase -pilviviestien avulla. Firebase -tietolomakkeessa on paljon hyödyllistä tietoa tämän toteuttamisesta, ja sovellus voidaan testata lähettämällä ilmoituksia Firebasen verkkosivuston koontinäytöstä.

Kaikki aktiviteettien koodit ja pilviviestien menetelmät löytyvät Github -arkistostani.

Vaihe 5: Johtopäätös

Käyttäjän BPM: n mittaamisessa oli joitain suuria ongelmia. Arvot vaihtelivat suuresti eivätkä ne olleet käyttökelpoisia käyttäjän terveyden määrittämiseen. Tämä johtui signaalin käsittelykoodista, joka toteutettiin ESP8266: ssa. Lisätutkimusten jälkeen huomasin, että sydämellä on neljä erilaista pulssia vaihtelevalla ajanjaksolla, joten ei ollut ihme, että ohjelmisto oli epätarkka. Tapa torjua tätä olisi ottaa keskimäärin neljä pulssia ryhmässä ja laskea sydämen jakso näiden neljän pulssin ajalta.

Muu järjestelmä oli toimiva, mutta tämä on hyvin kokeellinen laite, jonka halusin rakentaa nähdäkseni, onko objekti mahdollista. Push -ilmoitusten lähettämiseen käytetty vanha koodi on pian käyttökelvoton, joten jos luet tätä vuoden 2018 lopussa tai myöhään, tarvitaan erilainen menetelmä. Tämä ongelma ilmenee kuitenkin vain ESP: n kanssa, joten jos haluat käyttää tätä WiFi -yhteensopivassa Arduinossa, se ei ole ongelma.

Jos sinulla on kysyttävää tai ongelmia, lähetä minulle viesti Instructablesista.

Suositeltava: