Sadržaj:
- Korak 1: Krug
- Korak 2: Kôd za obradu signala i komunikacija poslužitelja
- Korak 3: Poslužitelj i podatkovna komunikacija
- Korak 4: Android aplikacija
- Korak 5: Zaključak
Video: IOT monitor otkucaja srca (ESP8266 i aplikacija za Android): 5 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:37
Kao dio mog završnog projekta, htio sam dizajnirati uređaj koji će pratiti vaš broj otkucaja srca, pohranjivati vaše podatke na poslužitelj i obavještavati vas putem obavijesti kada je vaš otkucaj srca nenormalan. Ideja o ovom projektu nastala je kada sam pokušao izgraditi fit-bit aplikaciju koja obavještava korisnika kada ima problema sa srcem, ali nisam mogao smisliti način korištenja informacija u stvarnom vremenu. Projekt ima četiri glavna dijela uključujući fizički krug za mjerenje otkucaja srca, ESP8266 Wi-Fi modul s kodom za obradu signala, poslužitelj za pohranu koda i aplikaciju za Android za prikaz otkucaja srca.
Videozapis s pojedinostima o fizičkom krugu može se vidjeti gore. Sav kod za projekt možete pronaći na mom Githubu.
Korak 1: Krug
Postoje dvije glavne metode mjerenja otkucaja srca, ali za ovaj projekt odlučio sam koristiti fotopletizmografiju (PPG) koja koristi infracrveni ili crveni izvor svjetlosti koji se lomi kroz prvih nekoliko slojeva kože. Foto senzor se koristi za mjerenje promjene intenziteta svjetlosti (kada krv teče kroz posudu). PPG signali su nevjerojatno bučni pa sam upotrijebio band pass filter za filtriranje potrebnih frekvencija. Ljudsko srce kuca između 1 i 1,6 Hz. Op-pojačalo koje sam koristio bio je lm324 koji je imao najbolji pomak napona od svih op-pojačala koja su mi bila dostupna. Ako ponovno stvarate ovaj projekt, precizno op-amp bilo bi puno bolji izbor.
Korišten je dobitak od samo dva jer je maksimalna tolerancija napona na ESP8266 3,3 V i nisam želio oštetiti svoju ploču!
Slijedite gornji krug i pokušajte ga pokrenuti na ploči za kruh. Ako nemate osciloskop kod kuće, možete priključiti izlaz na Arduino i iscrtati ga, ali pazite da napon ne bude veći od tolerancije arduina ili mikrokontrolera.
Krug je testiran na ploči za kruh i primijećena je promjena u izlazu kada je prst stavljen preko LED diode i foto tranzistora. Zatim sam odlučio lemiti ploču zajedno što nije prikazano u videu.
Korak 2: Kôd za obradu signala i komunikacija poslužitelja
Odlučio sam koristiti Arduino IDE na ESP8266 jer je tako jednostavan za korištenje. Kad je signal iscrtan, i dalje je bio vrlo bučan pa sam ga odlučio očistiti FIR filterom pomičnog prosjeka s uzorkom od deset. Za to sam izmijenio primjer Arduino programa pod nazivom "smoothing". Malo sam eksperimentirao kako bih pronašao način mjerenja frekvencije signala. Impulsi su bili različite duljine i amplitude zbog toga što srce ima četiri različite vrste impulsa i karakteristika PPG signala. Odabrao sam poznatu srednju vrijednost koju je signal uvijek prelazio kao referentnu točku za svaki impuls. Koristio sam prstenasti međuspremnik da odredim kada je nagib signala pozitivan ili negativan. Kombinacija ova dva načina omogućila mi je da izračunam razdoblje između impulsa kada je signal pozitivan i jednak određenoj vrijednosti.
Softver je proizveo prilično netočan BPM koji se zapravo nije mogao koristiti. Uz dodatne iteracije mogao bi se osmisliti bolji program, ali zbog vremenskih ograničenja to nije bila opcija. Kôd se nalazi na donjoj poveznici.
ESP8266 softver
Korak 3: Poslužitelj i podatkovna komunikacija
Odlučio sam koristiti Firebase za pohranu podataka jer je to besplatna usluga i vrlo je laka za korištenje s mobilnim aplikacijama. Ne postoji službeni API za Firebase s ESP8266, ali otkrio sam da je Arduino knjižnica radila vrlo dobro.
Primjer programa koji se može pronaći u knjižnici ESP8266WiFi.h omogućuje vam povezivanje s usmjerivačem sa SSID -om i lozinkom. To se koristilo za povezivanje ploče s internetom kako bi se mogli slati podaci.
Iako je pohranjivanje podataka bilo jednostavno, još uvijek postoji niz problema s slanjem push obavijesti putem HTTP POST zahtjeva. Našao sam komentar na Githubu koji je koristio naslijeđenu metodu za to putem Googleovih poruka u oblaku i HTTP biblioteke za ESP8266. Ova metoda se može vidjeti u kodu na mom Githubu.
Na Firebaseu sam izradio projekt i koristio API i registracijske ključeve u softveru. Firebase poruka u oblaku korištena je s aplikacijom za slanje push obavijesti korisniku. Prilikom testiranja komunikacije podaci su se mogli vidjeti u bazi podataka dok je ESP8266 bio pokrenut.
Korak 4: Android aplikacija
Vrlo osnovna Android aplikacija dizajnirana je s dvije aktivnosti. Prva aktivnost je prijavila korisnika ili ga registrirala pomoću Firebase API -ja. Istražio sam podatkovnu tablicu i pronašao razne vodiče o tome kako koristiti Firebase s mobilnom aplikacijom. Glavna aktivnost koja prikazuje korisnikove podatke korisnika u stvarnom vremenu slušatelja događaja tako da nije bilo zamjetljivog kašnjenja u promjenama korisničkog BPM -a. Push obavijesti obavljene su pomoću Firebase cloud poruka koje su prethodno spomenute. Na Firebase podatkovnom listu nalazi se mnogo korisnih informacija o tome kako to implementirati, a aplikacija se može testirati slanjem obavijesti s nadzorne ploče na web stranici Firebase.
Sav kôd za aktivnosti i metode za slanje poruka u oblaku možete pronaći u mom Github spremištu.
Korak 5: Zaključak
Bilo je nekih velikih problema s mjerenjem BPM -a korisnika. Vrijednosti su se uvelike razlikovale i nisu bile upotrebljive za određivanje zdravlja korisnika. To se svelo na kôd za obradu signala koji je implementiran na ESP8266. Nakon dodatnih istraživanja otkrio sam da srce ima četiri različita pulsa s različitim razdobljem pa nije bilo čudo što je softver bio netočan. Način borbe protiv toga bio bi uzimanje prosjeka četiri impulsa u nizu i izračunavanje razdoblja rada srca za ta četiri impulsa.
Ostatak sustava bio je funkcionalan, ali ovo je vrlo eksperimentalni uređaj koji sam želio izgraditi da vidim je li objekt moguć. Naslijeđeni kôd koji se koristio za slanje push obavijesti uskoro će biti neupotrebljiv pa ako ovo čitate krajem 2018. ili kasno, bila bi potrebna druga metoda. Ovaj se problem javlja samo s ESP -om, pa ako želite to implementirati na Arduinu koji podržava WiFi, ne bi bio problem.
Ako imate bilo kakvih pitanja ili problema, slobodno mi pošaljite poruku na Instructables.
Preporučeni:
Senzor otkucaja srca pomoću Arduina (monitor otkucaja srca): 3 koraka
Senzor otkucaja srca pomoću Arduina (monitor otkucaja srca): Senzor otkucaja srca je elektronički uređaj koji se koristi za mjerenje brzine otkucaja srca, odnosno brzine otkucaja srca. Praćenje tjelesne temperature, brzine otkucaja srca i krvnog tlaka osnovne su stvari koje radimo kako bismo bili zdravi. Srčani rad može se pratiti
Uradi sam monitor otkucaja srca (zapisnik): 4 koraka
DIY Monitor Heart Rate (Logger): U ovom projektu ću vam pokazati kako komercijalni pametni sat mjeri i prati vaš broj otkucaja srca, a nakon toga ću vam pokazati kako stvoriti DIY sklop koji u osnovi može učiniti isto uz dodatak da također može pohranite podatke o pulsu
Mjerenje otkucaja srca na vrhu je vašeg prsta: Fotopletizmografski pristup određivanju otkucaja srca: 7 koraka
Mjerenje otkucaja srca na vrhu je vašeg prsta: Fotopletizmografski pristup određivanju otkucaja srca: Fotopletizmograf (PPG) je jednostavna i jeftina optička tehnika koja se često koristi za otkrivanje promjena u volumenu krvi u mikrovaskularnom sloju tkiva. Uglavnom se koristi neinvazivno za mjerenje na površini kože, tipično
Arduino monitor otkucaja srca: 5 koraka
Arduino monitor otkucaja srca: Bok svima, napravio sam ovaj ručni Arduino monitor za mjerenje otkucaja srca
Monitor otkucaja srca AD8232, Arduino, obrada: 4 koraka
Monitor otkucaja srca AD8232, Arduino, obrada: Analogni uređaji AD8232 potpuni su analogni prednji kraj dizajnirani za prikupljanje EKG (ElectroCardioGram) signala na razini miliVolta. Iako je jednostavno spojiti AD8232 i vidjeti rezultirajući EKG signal na osciloskopu, izazov za