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, Juli
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žitelju i obavještavati vas putem obavijesti kada vam je otkucaj srca nenormalan. Ideja iza ovog projekta došla je kada sam pokušao izgraditi fit-bit aplikaciju koja obavještava korisnika kada ima problema sa srcem, ali nisam mogao pronaći način korištenja informacija u stvarnom vremenu. Projekt ima četiri glavna dijela uključujući fizičko kolo za mjerenje otkucaja srca, ESP8266 Wi-Fi modul s kodom za obradu signala, server za pohranu koda i aplikaciju za Android za prikaz otkucaja srca.

Video zapis s detaljima fizičkog kruga može se vidjeti gore. Sav kod za projekt možete pronaći na mom Githubu.

Korak 1: Krug

The Circuit
The Circuit

Postoje dvije glavne metode mjerenja otkucaja srca, ali za ovaj projekt odlučio sam upotrijebiti 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 pojasni 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 bi bilo mnogo 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 kod kuće nemate osciloskop, 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. Tada 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 upotrebu. Kad je signal iscrtan, i dalje je bio vrlo bučan pa sam odlučio očistiti ga FIR filterom pokretnog 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 dužine 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 bafer da odredim kada je nagib signala pozitivan ili negativan. Kombinacija ova dva načina omogućila mi je da izračunam period 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. Kod se nalazi na donjoj poveznici.

ESP8266 softver

Korak 3: Poslužitelj i komunikacija podacima

Server i komunikacija podacima
Server i komunikacija podacima

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 sa ESP8266, ali otkrio sam da Arduino biblioteka radi vrlo dobro.

Postoji primjer programa koji se može pronaći u biblioteci ESP8266WiFi.h koji vam omogućava da se povežete na usmjerivač sa SSID -om i lozinkom. Ovo se koristilo za povezivanje ploče s internetom kako bi se mogli slati podaci.

Iako je pohranjivanje podataka bilo jednostavno, i dalje postoji niz problema sa 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 stvorio projekt i koristio API i registracijske ključeve u softveru. Firebase poruka u oblaku korištena je s aplikacijom za slanje push obavijesti korisniku. Kada su komunikacije testirane, podaci su se mogli vidjeti u bazi podataka dok je ESP8266 bio pokrenut.

Korak 4: Android aplikacija

Android aplikacija
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 koristeći Firebase razmjenu poruka u oblaku koja je ranije spomenuta. Na Firebase tablici ima mnogo korisnih informacija o tome kako to primijeniti, 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 pri mjerenju 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 periodom pa nije bilo čudo što je softver bio netočan. Način borbe protiv ovoga bio bi uzimanje prosjeka četiri impulsa u nizu i izračunavanje perioda srca za ta četiri impulsa.

Ostatak sistema je bio funkcionalan, ali ovo je vrlo eksperimentalan uređaj koji sam želio izgraditi da vidim je li objekt moguć. Naslijeđeni kôd koji je korišten 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čuje se: