Բովանդակություն:

IOT Heart Rate Monitor (ESP8266 և Android հավելված) ՝ 5 քայլ
IOT Heart Rate Monitor (ESP8266 և Android հավելված) ՝ 5 քայլ

Video: IOT Heart Rate Monitor (ESP8266 և Android հավելված) ՝ 5 քայլ

Video: IOT Heart Rate Monitor (ESP8266 և Android հավելված) ՝ 5 քայլ
Video: TICWATCH PRO 5 Review: The BEST Wear OS Watch Yet?! // A Complete Guide 2024, Հուլիսի
Anonim
Image
Image

Որպես իմ վերջին տարվա ծրագրի մի մաս, ես ուզում էի նախագծել մի սարք, որը կհետևեր ձեր սրտի աշխատանքը, կպահեր ձեր տվյալները սերվերում և ձեզ կտեղեկացներ ծանուցման միջոցով, երբ ձեր սրտի բաբախյունը աննորմալ էր: Այս նախագծի գաղափարը ծագեց, երբ ես փորձեցի կառուցել հարմարեցված ծրագիր, որը կտեղեկացնի օգտվողին, երբ նրանք սրտի խնդիր ունեն, բայց ես չկարողացա գտնել իրական ժամանակի տեղեկատվության օգտագործման եղանակը: Նախագիծը չորս հիմնական մաս ունի ներառյալ սրտի բաբախման չափման ֆիզիկական միացում, ESP8266 Wi-Fi մոդուլ ՝ ազդանշանի մշակման կոդով, ծածկագիրը պահելու սերվեր և Android ծրագիր ՝ սրտի բաբախյունը ցուցադրելու համար:

Ֆիզիկական շրջանի մասին մանրամասն տեսանյութ կարող եք տեսնել վերևում: Նախագծի ամբողջ ծածկագիրը կարելի է գտնել իմ Github- ում:

Քայլ 1: Շղթան

The Circuit
The Circuit

Սրտի բաբախյունը չափելու երկու հիմնական մեթոդ կա, բայց այս նախագծի համար ես որոշեցի օգտագործել ֆոտոպոլթիսմոգրաֆիա (PPG), որն օգտագործում է ինֆրակարմիր կամ կարմիր լույսի աղբյուր, որը բեկվում է մաշկի առաջին մի քանի շերտերի միջոցով: Լուսանկարչությունը օգտագործվում է լույսի ինտենսիվության փոփոխությունը չափելու համար (երբ արյունը հոսում է անոթի միջով): PPG ազդանշաններն աներևակայելի աղմկոտ են, այնպես որ ես օգտագործեցի ժապավենի փոխանցման զտիչ `պահանջվող հատուկ հաճախականությունները զտելու համար: Մարդու սիրտը բաբախում է 1 -ից 1.6 Հց հաճախականությամբ: Իմ օգտագործած օպերատորը lm324- ն էր, որն ուներ ինձ հասանելի բոլոր op-amps- երից լավագույն լարման անջատումը: Եթե դուք վերստեղծում եք այս նախագիծը, ապա ճշգրիտ op-amp- ը շատ ավելի լավ ընտրություն կլինի:

Օգտագործվեց ընդամենը երկուսը, քանի որ ESP8266- ի լարման առավելագույն թույլատրելիությունը 3.3 վ է, և ես չէի ուզում վնասել իմ տախտակը:

Հետևեք վերը նշված սխեմային և փորձեք այն ստիպել աշխատել հացի տախտակի վրա: Եթե տանը չունեք օսլիլոսկոպ, կարող եք ելքը միացնել Arduino- ին և գծել այն, բայց համոզվեք, որ լարումը ավելի բարձր չէ, քան arduino- ի կամ միկրոկոնտրոլերի հանդուրժողականությունը:

Շղթան փորձարկվեց հացի տախտակի վրա, և ելքի փոփոխություն նկատվեց, երբ մատը տեղադրվեց LED- ի և լուսանկարչական տրանզիստորի վրայով: Հետո որոշեցի միասին կպցնել տախտակը, որը տեսանելի չէր տեսանյութում:

Քայլ 2. Ազդանշանի մշակման ծածկագիրը և սերվերային հաղորդակցությունները

Image
Image
Ազդանշանի մշակման ծածկագիրը և սերվերային հաղորդակցությունները
Ազդանշանի մշակման ծածկագիրը և սերվերային հաղորդակցությունները

Ես որոշեցի օգտագործել Arduino IDE- ն ESP8266- ում, քանի որ այն շատ հեշտ է օգտագործել: Երբ ազդանշանը գծված էր, այն դեռ շատ աղմկոտ էր, ուստի որոշեցի այն մաքրել FIR շարժական միջին զտիչով `տասը նմուշի օրինակով: Ես դրա համար փոփոխեցի Arduino- ի օրինակելի ծրագիրը, որը կոչվում է «հարթեցում»: Ես մի փոքր փորձ արեցի, որպեսզի գտնեմ ազդանշանի հաճախականությունը չափելու միջոց: Իմպուլսները տարբեր երկարությամբ և ամպլիտուդով էին պայմանավորված սրտի չորս տարբեր տեսակի զարկերակների և PPG ազդանշանների բնութագրերով: Ես ընտրեցի հայտնի միջին արժեք, որը ազդանշանը միշտ հատում էր որպես յուրաքանչյուր զարկերակի հղման կետ: Ես օղակաձեւ բուֆեր օգտագործեցի որոշելու համար, թե երբ է ազդանշանի լանջը դրական կամ բացասական: Այս երկուսի համադրությունը թույլ տվեց ինձ հաշվարկել իմպուլսների միջև ընկած ժամանակահատվածը, երբ ազդանշանը դրական էր և հավասար էր որոշակի արժեքի:

Theրագրակազմը արտադրեց բավականին ոչ ճշգրիտ BPM, որն իրականում հնարավոր չէր օգտագործել: Լրացուցիչ կրկնությունների դեպքում ավելի լավ ծրագիր կարող էր մշակվել, բայց ժամանակի սղության պատճառով դա տարբերակ չէր: Կոդին կարող եք ծանոթանալ ստորև բերված հղումով:

ESP8266 Softwareրագրակազմ

Քայլ 3: Սերվեր և տվյալների հաղորդակցություն

Սերվեր և տվյալների հաղորդակցություն
Սերվեր և տվյալների հաղորդակցություն

Ես որոշեցի օգտագործել Firebase- ը ՝ տվյալները պահելու համար, քանի որ դա անվճար ծառայություն է և շատ հեշտ է օգտագործել բջջային հավելվածների հետ: ESP8266- ի հետ Firebase- ի պաշտոնական API չկա, բայց ես գտա, որ Arduino գրադարանը շատ լավ էր աշխատում:

Կա օրինակելի ծրագիր, որը կարելի է գտնել ESP8266WiFi.h գրադարանում, որը թույլ է տալիս SSID- ով և գաղտնաբառով միանալ երթուղիչին: Սա օգտագործվում էր տախտակը ինտերնետին միացնելու համար, որպեսզի տվյալները ուղարկվեին:

Չնայած տվյալները հեշտությամբ պահելը, դեռևս կան մի շարք խնդիրներ ՝ HTTP POST հարցման միջոցով push ծանուցումներ ուղարկելու հետ: Ես գտա մեկնաբանություն Github- ի վերաբերյալ, որն օգտագործում էր Google Cloud հաղորդագրությունների և ESP8266- ի HTTP գրադարանի միջոցով դա անելու ժառանգական մեթոդ: Այս մեթոդը կարելի է տեսնել իմ Github- ի ծածկագրում:

Firebase- ում ես ստեղծեցի նախագիծ և օգտագործեցի API- ն և գրանցման բանալիները ծրագրակազմում: Firebase ամպային հաղորդագրությունները օգտագործվել են հավելվածի հետ `օգտագործողին push ծանուցումներ ուղարկելու համար: Երբ կապերը փորձարկվեցին, տվյալները կարող էին դիտվել տվյալների բազայում, մինչ ESP8266- ը աշխատում էր:

Քայլ 4: Android հավելված

Android հավելված
Android հավելված

Android- ի շատ հիմնական ծրագիր է մշակվել երկու գործողությամբ: Առաջին գործողությունը գրանցեց օգտվողին կամ գրանցեց դրանք Firebase API- ի միջոցով: Ես ուսումնասիրեցի տվյալների թերթիկը և գտա տարբեր ձեռնարկներ, թե ինչպես օգտագործել Firebase- ը բջջային հավելվածով: Հիմնական գործունեությունը, որը օգտագործողի տվյալների օգտագործողին ցուցադրեց իրական ժամանակի իրադարձությունների ունկնդիր, այնպես որ օգտագործողի BPM- ի փոփոխությունների նկատելի ուշացում չկար: Հրել ծանուցումները կատարվել են Firebase ամպային հաղորդագրությունների միջոցով, որոնք նշվել էին նախկինում: Firebase- ի տվյալների թերթիկի վրա կան շատ օգտակար տեղեկություններ, թե ինչպես դա իրականացնել, և ծրագիրը կարող է փորձարկվել ՝ Firebase կայքում վահանակից ծանուցումներ ուղարկելու համար:

Գործունեության ամբողջ ծածկագիրը և ամպային հաղորդագրությունների փոխանցման մեթոդները կարելի է գտնել իմ Github պահեստում:

Քայլ 5: Եզրակացություն

Օգտագործողի BPM- ի չափման հետ կապված կար մի քանի հիմնական խնդիր: Արժեքները մեծապես տարբերվում էին և օգտագործելի չէին օգտագործողի առողջությունը որոշելու համար: Սա հանգեցրեց ազդանշանի մշակման կոդի, որն իրականացվել էր ESP8266- ում: Լրացուցիչ հետազոտություններից հետո ես պարզեցի, որ սիրտը ունի չորս տարբեր իմպուլսներ `տարբեր ժամանակահատվածներով, ուստի զարմանալի չէ, որ ծրագրակազմը ճշգրիտ չէ: Դրա դեմ պայքարի միջոց կլինի միջինը չորս զարկերակի զանգվածը վերցնելը և հաշվարկել սրտի ժամանակահատվածը այդ չորս իմպուլսի նկատմամբ:

Մնացած համակարգը ֆունկցիոնալ էր, բայց սա շատ փորձարարական սարք է, որը ես ուզում էի կառուցել ՝ տեսնելու, թե արդյոք օբյեկտը հնարավոր է: Pushառանգական ծածկագիրը, որն օգտագործվել է push ծանուցումներ ուղարկելու համար, շուտով անօգտագործելի կլինի, այնպես որ, եթե դա կարդում եք 2018 -ի վերջին կամ ուշ, այլ մեթոդ է պահանջվում: Այս խնդիրը միայն ESP- ի դեպքում է, չնայած այնպես որ, եթե ցանկանայիք դա իրականացնել WiFi- ով աշխատող Arduino- ով, խնդիր չէր լինի:

Եթե ունեք որևէ հարց կամ խնդիր, խնդրում ենք ազատ զգալ ինձ ուղարկել Instructables- ին:

Խորհուրդ ենք տալիս: