Innehållsförteckning:
- Steg 1: Kretsen
- Steg 2: Signalbehandlingskoden och serverkommunikation
- Steg 3: Server- och datakommunikationen
- Steg 4: Android -appen
- Steg 5: Slutsats
Video: IOT pulsmätare (ESP8266 och Android App): 5 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
Som en del av mitt sista års projekt ville jag designa en enhet som skulle övervaka din puls, lagra dina data på en server och meddela dig via meddelande när din puls var onormal. Idén bakom detta projekt kom när jag försökte bygga en fit-bit-app som meddelar en användare när de har ett hjärtproblem men jag kunde inte komma på ett sätt att använda information i realtid. Projektet har fyra huvuddelar inklusive den fysiska kretsen för att mäta hjärtslaget, en ESP8266 Wi-Fi-modul med signalbehandlingskod, servern för att lagra koden och en Android-app för att visa pulsen.
En video som beskriver den fysiska kretsen kan ses ovan. All kod för projektet finns på min Github.
Steg 1: Kretsen
Det finns två huvudmetoder för att mäta ett hjärtslag men för detta projekt bestämde jag mig för att använda fotoplethysmografi (PPG) som använder en infraröd eller röd ljuskälla som bryts genom de första hudlagren. En fotosensor används för att mäta förändringen i ljusintensitet (när blod strömmar genom ett kärl). PPG -signaler är otroligt bullriga så jag använde ett bandpassfilter för att filtrera bort de specifika frekvenser som krävs. Ett mänskligt hjärta slår mellan 1 och 1,6 Hz frekvens. Op-amparen jag använde var lm324 som hade den bästa spänningsförskjutningen av alla op-ampere som var tillgängliga för mig. Om du återskapar detta projekt är en precisionsförstärkare ett mycket bättre val.
En förstärkning på endast två användes eftersom den maximala spänningstoleransen på ESP8266 är 3,3v och jag ville inte skada mitt kort!
Följ kretsen ovan och försök att få den att fungera på ett brödbräda. Om du inte har ett oscilloskop hemma kan du ansluta utgången till en Arduino och plotta den men se till att spänningen inte är högre än arduino- eller mikrokontrollerns tolerans.
Kretsen testades på ett brödbräda och en förändring i utmatningen observerades när ett finger placerades över lysdioden och fototransistorn. Jag bestämde mig sedan för att löda ihop brädan som inte visades i videon.
Steg 2: Signalbehandlingskoden och serverkommunikation
Jag bestämde mig för att använda Arduino IDE på ESP8266 eftersom det är så lätt att använda. När signalen plottades var det fortfarande mycket bullrigt så jag bestämde mig för att städa upp det med ett FIR-rörligt medelvärdesfilter med ett provtal på tio. Jag modifierade ett exempel Arduino -program som heter "utjämning" för att göra detta. Jag experimenterade lite för att hitta ett sätt att mäta signalens frekvens. Pulserna var av varierande längd och amplitud på grund av att hjärtat hade fyra olika typer av pulser och egenskaperna hos PPG -signaler. Jag valde ett känt mellanvärde som signalen alltid korsade som referenspunkt för varje puls. Jag använde en ringbuffert för att avgöra när signalens lutning var positiv eller negativ. Kombinationen av dessa två gjorde det möjligt för mig att beräkna perioden mellan pulserna när signalen var positiv och var lika med ett specifikt värde.
Programvaran producerade en ganska felaktig BPM som faktiskt inte kunde användas. Med ytterligare iterationer kan ett bättre program utformas men på grund av tidsbrist var detta inget alternativ. Koden finns i länken nedan.
ESP8266 programvara
Steg 3: Server- och datakommunikationen
Jag bestämde mig för att använda Firebase för att lagra data eftersom det är en gratis tjänst och är mycket lätt att använda med mobilappar. Det finns inget officiellt API för Firebase med ESP8266 men jag tyckte att Arduino -biblioteket fungerade mycket bra.
Det finns ett exempelprogram som finns på ESP8266WiFi.h -biblioteket som låter dig ansluta till en router med SSID och lösenord. Detta användes för att ansluta kortet till internet så att data kunde skickas.
Även om det enkelt gick att lagra data finns det fortfarande ett antal problem med att skicka push -meddelanden via en HTTP POST -begäran. Jag hittade en kommentar på Github som använde en äldre metod för att göra detta via Googles molnmeddelanden och HTTP -biblioteket för ESP8266. Denna metod kan ses i koden på min Github.
På Firebase skapade jag ett projekt och använde API och registreringsnycklar i programvaran. Firebase molnmeddelanden användes med appen för att skicka push -aviseringar till användaren. När kommunikationen testades kunde data ses i databasen medan ESP8266 kördes.
Steg 4: Android -appen
En mycket grundläggande Android -app designades med två aktiviteter. Den första aktiviteten loggade in användaren eller registrerade dem med Firebase API. Jag undersökte databladet och hittade olika självstudier om hur du använder Firebase med en mobilapp. Den huvudsakliga aktiviteten som visade användarens dataanvändare är en realtidshändarlyssnare så det var ingen märkbar fördröjning i ändringarna av användarens BPM. Push -aviseringarna gjordes med hjälp av Firebase molnmeddelanden som nämndes tidigare. Det finns mycket användbar information om Firebase -databladet om hur man implementerar detta och appen kan testas genom att skicka meddelanden från instrumentpanelen på Firebase -webbplatsen.
All kod för aktiviteterna och metoderna för molnmeddelanden finns i mitt Github -arkiv.
Steg 5: Slutsats
Det fanns några stora problem med att mäta användarens BPM. Värdena varierade mycket och var inte användbara för att bestämma användarens hälsa. Detta kom ner till signalbehandlingskoden som implementerades på ESP8266. Efter ytterligare forskning fick jag reda på att ett hjärta har fyra olika pulser med varierande period så det var inte konstigt att programvaran var felaktig. Ett sätt att bekämpa detta skulle vara att ta ett genomsnitt av de fyra pulserna i en array och beräkna hjärtats period över de fyra pulserna.
Resten av systemet fungerade men det här är en mycket experimentell enhet som jag ville bygga för att se om objektet var möjligt. Den gamla koden som användes för att skicka push -meddelanden kommer snart att vara oanvändbar, så om du läser detta i slutet av 2018 eller sent skulle en annan metod behövas. Detta problem uppstår dock bara med ESP, så om du ville implementera detta på en WiFi -kompatibel Arduino skulle det inte vara några problem.
Om du har några frågor eller problem är du välkommen att meddela mig på Instructables.
Rekommenderad:
Zwift Ambulight och pulsmätare Smartbulb lampa: 4 steg
Zwift Ambilight och Heart Rate Zone Smartbulb Lamp: Här bygger vi en liten STOR förbättring för Zwift.Du har i slutet en ambilight för mer ridkul i mörkret.Och du har en lampa (Yeelight) för dina pulszoner. Jag använder här 2 Raspberry PI, om du bara vill ha Yeelight behöver du bara 1 PI om
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: 5 steg (med bilder)
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: Styrning av 8 reläväxlar med nodemcu och IR -mottagare via wifi och IR -fjärrkontroll och Android -app. Fjärrkontrollen fungerar oberoende av wifi -anslutning. HÄR ÄR EN UPPDATERAD VERSIONKLICK HÄR
EKG och pulsmätare: 6 steg
EKG och pulsmätare: Elektrokardiogram, även kallat EKG, är ett test som upptäcker och registrerar människors hjärtats elektriska aktivitet. Den detekterar hjärtfrekvensen och styrkan och tidpunkten för de elektriska impulserna som passerar genom varje del av ett hjärta, vilket kan identifiera
Enkel EKG -inspelningskrets och LabVIEW pulsmätare: 5 steg
Enkel EKG -registreringskrets och LabVIEW pulsmätare: " Detta är inte en medicinsk enhet. Detta är endast för utbildningsändamål med hjälp av simulerade signaler. Om du använder denna krets för riktiga EKG-mätningar, se till att kretsen och krets-till-instrumentanslutningarna använder korrekt isolering
Enkelt EKG och pulsmätare: 10 steg
Enkelt EKG och hjärtfrekvensdetektor: ANMÄRKNING: Detta är inte en medicinsk utrustning. Detta är endast för utbildningsändamål med hjälp av simulerade signaler. Om du använder denna krets för riktiga EKG-mätningar, se till att kretsen och krets-till-instrumentanslutningarna använder korrekt isolering