Სარჩევი:

IOT გულისცემის მონიტორი (ESP8266 და Android აპლიკაცია): 5 ნაბიჯი
IOT გულისცემის მონიტორი (ESP8266 და Android აპლიკაცია): 5 ნაბიჯი

ვიდეო: IOT გულისცემის მონიტორი (ESP8266 და Android აპლიკაცია): 5 ნაბიჯი

ვიდეო: IOT გულისცემის მონიტორი (ESP8266 და Android აპლიკაცია): 5 ნაბიჯი
ვიდეო: ეკგ მონიტორი 4/ გულის აგონური რითმი (მომაკვდავი გულის რითმი) / სიკვდილის წინა პერიოდი / ემერჯენსი 2024, ივლისი
Anonim
Image
Image

ჩემი ბოლო წლის პროექტის ფარგლებში მინდოდა შემექმნა მოწყობილობა, რომელიც მონიტორინგს გაუწევს თქვენს გულისცემას, შეინახავს თქვენს მონაცემებს სერვერზე და შეგატყობინებთ შეტყობინების საშუალებით, როდესაც თქვენი გულისცემა არანორმალურია. ამ პროექტის იდეა მაშინ გაჩნდა, როდესაც შევეცადე აეშენებინა მორგებული ბიტიანი აპლიკაცია, რომელიც აცნობებდა მომხმარებელს გულის პრობლემების დროს, მაგრამ რეალურ დროში ინფორმაციის გამოყენების გზას ვერ ვხვდებოდი. პროექტს აქვს ოთხი ძირითადი ნაწილი გულისცემის გაზომვის ფიზიკური წრე, ESP8266 Wi-Fi მოდული სიგნალის დამუშავების კოდით, სერვერი კოდის შესანახად და Android აპლიკაცია გულისცემის ჩვენებისათვის.

ვიდეო, სადაც აღწერილია ფიზიკური წრე, შეგიძლიათ ნახოთ ზემოთ. პროექტის ყველა კოდი შეგიძლიათ იხილოთ ჩემს Github– ზე.

ნაბიჯი 1: წრე

წრე
წრე

გულისცემის გაზომვის ორი ძირითადი მეთოდი არსებობს, მაგრამ ამ პროექტისთვის მე გადავწყვიტე გამოვიყენო ფოტოპლეტიზმოგრაფია (PPG), რომელიც იყენებს ინფრაწითელ ან წითელ სინათლის წყაროს, რომელიც ირეკლება კანის პირველი რამდენიმე ფენის მეშვეობით. ფოტო სენსორი გამოიყენება სინათლის ინტენსივობის ცვლილების გასაზომად (როდესაც სისხლი მიედინება ჭურჭელში). PPG სიგნალები წარმოუდგენლად ხმაურიანია, ამიტომ მე გამოვიყენე band pass filter, რათა გავფილტროთ საჭირო კონკრეტული სიხშირეები. ადამიანის გული სცემს 1 -დან 1.6 Hz სიხშირეზე. ოპ-გამაძლიერებელი, რომელიც მე გამოვიყენე, იყო lm324, რომელსაც ჰქონდა ძაბვის ყველაზე ოფსეტური ყველა იმ ამპ-დან, რაც ჩემთვის ხელმისაწვდომი იყო. თუ თქვენ ხელახლა შექმნით ამ პროექტს, მაშინ ზუსტი ოპ-გამაძლიერებელი ბევრად უკეთესი არჩევანი იქნება.

მხოლოდ ორი მოგება იქნა გამოყენებული, რადგან ESP8266– ზე მაქსიმალური ძაბვის ტოლერანტობა არის 3.3 ვ და მე არ მინდოდა ჩემი დაფის დაზიანება!

მიჰყევით ზემოთ სქემას და ეცადეთ ის პურის დაფაზე იმუშაოს. თუ თქვენ არ გაქვთ ოსცილოსკოპი სახლში, შეგიძლიათ შეაერთოთ გამომავალი არდუინოში და შეადგინოთ იგი, მაგრამ დარწმუნდით, რომ ძაბვა არ აღემატება არდუინოს ან მიკროკონტროლერის ტოლერანტობას.

წრე შემოწმდა პურის დაფაზე და გამომავალი ცვლილება დაფიქსირდა, როდესაც თითი მოათავსეს LED და ფოტო ტრანზისტორზე. შემდეგ მე გადავწყვიტე დაფის შეკვრა, რაც ვიდეოში არ იყო ნაჩვენები.

ნაბიჯი 2: სიგნალის დამუშავების კოდი და სერვერის კომუნიკაციები

Image
Image
სიგნალის დამუშავების კოდი და სერვერის კომუნიკაციები
სიგნალის დამუშავების კოდი და სერვერის კომუნიკაციები

მე გადავწყვიტე გამოვიყენო Arduino IDE ESP8266– ზე, რადგან მისი გამოყენება ძალიან ადვილია. სიგნალის შედგენისას ის ჯერ კიდევ ძალიან ხმაურიანი იყო, ამიტომ გადავწყვიტე გამეწმინდა ის FIR მოძრავი საშუალო ფილტრით, ათის ნიმუშით. მე შევცვალე Arduino პროგრამის მაგალითი სახელწოდებით "smoothing". მე ცოტა ექსპერიმენტი გავაკეთე, რათა გამომეძიებინა სიგნალის სიხშირის გაზომვის საშუალება. იმპულსები იყო განსხვავებული სიგრძისა და ამპლიტუდის გამო, რადგან გულს გააჩნდა ოთხი განსხვავებული ტიპის პულსი და PPG სიგნალების მახასიათებლები. მე ავირჩიე ცნობილი საშუალო მნიშვნელობა, რომელსაც სიგნალი ყოველთვის კვეთდა, როგორც მინიშნება თითოეული პულსისთვის. მე გამოვიყენე ბეჭედი ბუფერი იმის დასადგენად, როდის იყო სიგნალის დახრილობა დადებითი ან უარყოფითი. ამ ორის კომბინაციამ მომცა საშუალება გამოვთვალო იმპულსებს შორის პერიოდი, როდესაც სიგნალი დადებითი იყო და უდრიდა კონკრეტულ მნიშვნელობას.

პროგრამულმა უზრუნველყოფამ წარმოადგინა საკმაოდ არაზუსტი BPM, რომლის გამოყენებაც რეალურად შეუძლებელია. დამატებითი გამეორებით შეიძლება შეიქმნას უკეთესი პროგრამა, მაგრამ დროის შეზღუდვების გამო ეს არ იყო ვარიანტი. კოდი შეგიძლიათ იხილოთ ქვემოთ მოცემულ ბმულზე.

ESP8266 პროგრამული უზრუნველყოფა

ნაბიჯი 3: სერვერი და მონაცემთა კომუნიკაცია

სერვერი და მონაცემთა კომუნიკაცია
სერვერი და მონაცემთა კომუნიკაცია

მე გადავწყვიტე გამოვიყენო Firebase მონაცემების შესანახად, რადგან ეს არის უფასო სერვისი და ძალიან ადვილი გამოსაყენებელია მობილური აპლიკაციებისთვის. ESP8266– ით Firebase– ის ოფიციალური API არ არსებობს, მაგრამ აღმოვაჩინე, რომ Arduino ბიბლიოთეკა ძალიან კარგად მუშაობდა.

არსებობს მაგალითი პროგრამა, რომელიც შეგიძლიათ იხილოთ ESP8266WiFi.h ბიბლიოთეკაში, რომელიც საშუალებას გაძლევთ დაუკავშირდეთ როუტერს SSID– ით და პაროლით. ეს გამოიყენებოდა დაფის ინტერნეტთან დასაკავშირებლად, რათა შესაძლებელი იყოს მონაცემების გაგზავნა.

მიუხედავად იმისა, რომ მონაცემების შენახვა მარტივად ხდებოდა, ჯერ კიდევ არსებობს რიგი საკითხები push შეტყობინებების გაგზავნასთან HTTP POST მოთხოვნის საშუალებით. მე ვიპოვე კომენტარი Github– ზე, რომელმაც გამოიყენა ამის მეთოდი Google ღრუბლოვანი შეტყობინებების საშუალებით და HTTP ბიბლიოთეკა ESP8266– ისთვის. ეს მეთოდი ჩანს ჩემს Github– ის კოდში.

Firebase– ზე შევქმენი პროექტი და გამოვიყენე API და რეგისტრაციის გასაღებები პროგრამულ უზრუნველყოფაში. Firebase ღრუბლოვანი შეტყობინებები გამოიყენებოდა აპთან ერთად მომხმარებლისთვის push შეტყობინებების გაგზავნის მიზნით. როდესაც კომუნიკაციები იქნა შემოწმებული მონაცემები შეიძლება ნახოთ მონაცემთა ბაზაში ESP8266 გაშვებისას.

ნაბიჯი 4: Android აპლიკაცია

Android აპლიკაცია
Android აპლიკაცია

ძალიან ძირითადი Android აპლიკაცია შეიქმნა ორი აქტივობით. პირველი აქტივობა შედიოდა მომხმარებელში ან რეგისტრირებდა მათ Firebase API გამოყენებით. მე გამოვიკვლიე მონაცემთა ცხრილი და ვიპოვე სხვადასხვა გაკვეთილები, თუ როგორ გამოვიყენო Firebase მობილური აპლიკაციით. ძირითადი საქმიანობა, რომელიც აჩვენებს მომხმარებლის მონაცემების მომხმარებელს რეალურ დროში მოვლენის მსმენელს, ასე რომ არ შეინიშნება შესამჩნევი შეფერხება მომხმარებლის BPM ცვლილებებში. ბიძგი შეტყობინებები გაკეთდა Firebase ღრუბლოვანი შეტყობინებების გამოყენებით, რომელიც ზემოთ იყო ნახსენები. Firebase– ის მონაცემთა ცხრილში არის ბევრი სასარგებლო ინფორმაცია იმის შესახებ, თუ როგორ უნდა განახორციელოთ ეს და აპლიკაციის შემოწმება შესაძლებელია Firebase ვებსაიტზე დაფის შეტყობინებების გაგზავნით.

საქმიანობის ყველა კოდი და ღრუბლოვანი შეტყობინებების მეთოდი შეგიძლიათ იხილოთ ჩემს Github საცავში.

ნაბიჯი 5: დასკვნა

იყო რამდენიმე ძირითადი საკითხი მომხმარებლის BPM- ის გაზომვასთან დაკავშირებით. ღირებულებები მნიშვნელოვნად განსხვავდებოდა და არ იყო გამოსაყენებელი მომხმარებლის ჯანმრთელობის დასადგენად. ეს შემცირდა სიგნალის დამუშავების კოდამდე, რომელიც განხორციელდა ESP8266– ზე. დამატებითი კვლევის შემდეგ აღმოვაჩინე, რომ გულს აქვს ოთხი განსხვავებული პულსი სხვადასხვა პერიოდის განმავლობაში, ამიტომ გასაკვირი არ არის, რომ პროგრამული უზრუნველყოფა იყო არაზუსტი. ამის წინააღმდეგ ბრძოლის საშუალება იქნება მიიღოს მასივში საშუალოდ ოთხი პულსი და გამოვთვალოთ გულის პერიოდი ამ ოთხ იმპულსზე.

დანარჩენი სისტემა ფუნქციონირებდა, მაგრამ ეს არის ძალიან ექსპერიმენტული მოწყობილობა, რომლის აშენებაც მინდოდა იმის დასადგენად, შესაძლებელია თუ არა ობიექტი. ძველი კოდი, რომელიც გამოყენებული იყო push შეტყობინებების გასაგზავნად, მალე გამოუსადეგარი იქნება, ასე რომ, თუ ამას კითხულობთ 2018 წლის ბოლოს ან გვიან, სხვა მეთოდი იქნება საჭირო. ეს პრობლემა წარმოიქმნება მხოლოდ ESP– სთან ერთად, ასე რომ, თუ თქვენ გინდოდათ ამის განხორციელება WiFi– ს მქონე Arduino– ზე, პრობლემა არ იქნებოდა.

თუ თქვენ გაქვთ რაიმე შეკითხვა ან პრობლემა, გთხოვთ მოგერიდოთ მომწერეთ Instructables– ში.

გირჩევთ: