Sadržaj:

IOT monitor otkucaja srca (ESP8266 i aplikacija za Android): 5 koraka
IOT monitor otkucaja srca (ESP8266 i aplikacija za Android): 5 koraka

Video: IOT monitor otkucaja srca (ESP8266 i aplikacija za Android): 5 koraka

Video: IOT monitor otkucaja srca (ESP8266 i aplikacija za Android): 5 koraka
Video: IoT based Heart Rate Monitoring System using Arduino #shorts #shortvideo #iotprojects #iotdunia #iot 2024, Studeni
Anonim
Image
Image

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

Krug
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

Image
Image
Kôd za obradu signala i komunikacija poslužitelja
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

Poslužitelj i podatkovna komunikacija
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

Aplikacija za Android
Aplikacija za Android

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: