Съдържание:

IOT монитор за сърдечен ритъм (ESP8266 и приложение за Android): 5 стъпки
IOT монитор за сърдечен ритъм (ESP8266 и приложение за Android): 5 стъпки

Видео: IOT монитор за сърдечен ритъм (ESP8266 и приложение за Android): 5 стъпки

Видео: IOT монитор за сърдечен ритъм (ESP8266 и приложение за Android): 5 стъпки
Видео: MAX30100 - sensor for pulse oximetry 2024, Юли
Anonim
Image
Image

Като част от моя проект за последната година исках да проектирам устройство, което да следи сърдечната Ви честота, да съхранява вашите данни на сървър и да ви уведомява чрез известие, когато сърдечната Ви честота е ненормална. Идеята зад този проект дойде, когато се опитах да създам подходящо битово приложение, което да уведомява потребителя, когато има сърдечен проблем, но не можах да намеря начин да използвам информация в реално време. Проектът има четири основни части включително физическата верига за измерване на сърдечния ритъм, ESP8266 Wi-Fi модул с код за обработка на сигнал, сървърът за съхраняване на кода и приложение за Android за показване на сърдечната честота.

Видеоклип с подробности за физическата верига може да се види по -горе. Целият код за проекта може да бъде намерен на моя Github.

Стъпка 1: Веригата

Веригата
Веригата

Има два основни метода за измерване на сърдечния ритъм, но за този проект реших да използвам фотоплетизмография (PPG), която използва инфрачервен или червен източник на светлина, който се пречупва през първите няколко слоя кожа. Фотосензор се използва за измерване на промяната в интензитета на светлината (когато кръвта тече през съд). PPG сигналите са изключително шумни, затова използвах лентов филтър, за да филтрирам необходимите честоти. Човешкото сърце бие между 1 и 1,6 Hz честота. Оп-усилвателят, който използвах, беше lm324, който имаше най-доброто компенсиране на напрежението от всички оп-усилватели, които ми бяха достъпни. Ако пресъздавате този проект, прецизният операционен усилвател би бил много по-добър избор.

Използвана е печалба само от две, защото максималният толеранс на напрежение на ESP8266 е 3.3v и не исках да повредя дъската си!

Следвайте схемата по -горе и се опитайте да я накарате да работи на дъска за хляб. Ако нямате осцилоскоп у дома, можете да включите изхода в Arduino и да го начертаете, но се уверете, че напрежението не е по -високо от допустимото от arduino или микроконтролера.

Веригата е тествана върху дъска за хляб и се наблюдава промяна в изхода, когато пръстът е поставен върху светодиода и фототранзистора. След това реших да споя платката заедно, което не беше показано във видеото.

Стъпка 2: Кодът за обработка на сигнала и комуникациите със сървъра

Image
Image
Кодът за обработка на сигнала и комуникациите със сървъра
Кодът за обработка на сигнала и комуникациите със сървъра

Реших да използвам Arduino IDE на ESP8266, защото е толкова лесен за използване. Когато сигналът беше начертан, той все още беше много шумен, затова реших да го почистя с FIR филтър с плъзгаща се средна стойност с проба от десет. Модифицирах примерна програма Arduino, наречена „изглаждане“, за да направя това. Експериментирах малко, за да намеря начин за измерване на честотата на сигнала. Импулсите са с различна дължина и амплитуда поради това, че сърцето има четири различни типа импулси и характеристиките на PPG сигналите. Избрах известна средна стойност, която сигналът винаги е пресичал като отправна точка за всеки импулс. Използвах пръстен буфер, за да определя кога наклонът на сигнала е положителен или отрицателен. Комбинацията от тези две ми позволи да изчисля периода между импулсите, когато сигналът е положителен и е равен на определена стойност.

Софтуерът създаде доста неточен BPM, който всъщност не можеше да се използва. С допълнителни итерации може да се проектира по -добра програма, но поради ограничения във времето това не беше опция. Кодът може да бъде намерен в линка по -долу.

Софтуер ESP8266

Стъпка 3: Сървърът и комуникациите с данни

Сървърът и комуникациите с данни
Сървърът и комуникациите с данни

Реших да използвам Firebase за съхранение на данните, тъй като това е безплатна услуга и е много лесна за използване с мобилни приложения. Няма официален API за Firebase с ESP8266, но открих, че библиотеката Arduino работи много добре.

В библиотеката ESP8266WiFi.h има примерна програма, която ви позволява да се свържете с рутер със SSID и паролата. Това беше използвано за свързване на платката с интернет, за да могат да се изпращат данни.

Въпреки че съхранението на данни беше лесно, все още има редица проблеми с изпращането на push известия чрез HTTP POST заявка. Намерих коментар за Github, който използва наследствен метод за това чрез облачни съобщения на Google и библиотеката HTTP за ESP8266. Този метод може да се види в кода на моя Github.

Във Firebase създадох проект и използвах API и ключовете за регистрация в софтуера. Облачните съобщения на firebase бяха използвани с приложението, за да изпращат push известия до потребителя. Когато комуникациите бяха тествани, данните можеха да се видят в базата данни, докато ESP8266 работи.

Стъпка 4: Приложението за Android

Приложението за Android
Приложението за Android

Много основно приложение за Android е проектирано с две дейности. Първата активност влезе в профила на потребителя или го регистрира с помощта на API на Firebase. Изследвах листа с данни и намерих различни уроци за това как да използвам Firebase с мобилно приложение. Основната дейност, която показва на потребителя данни на потребителя в реално време слушател на събития, така че няма забележимо забавяне в промените в BPM на потребителя. Известията бяха направени с помощта на облачни съобщения на Firebase, които бяха споменати по -рано. В таблицата с данни на Firebase има много полезна информация за това как да се приложи това и приложението може да бъде тествано чрез изпращане на известия от таблото за управление на уебсайта на Firebase.

Целият код за дейностите и методите за съобщения в облака може да се намери в моето хранилище на Github.

Стъпка 5: Заключение

Имаше някои основни проблеми с измерването на BPM на потребителя. Стойностите варират значително и не могат да се използват за определяне на здравето на потребителя. Това се свежда до кода за обработка на сигнала, внедрен в ESP8266. След допълнителни изследвания установих, че сърцето има четири различни импулса с различен период, така че не е чудно, че софтуерът е неточен. Начин за борба с това би било да се вземат средно от четирите импулса в масив и да се изчисли периодът на сърцето през тези четири импулса.

Останалата част от системата беше функционална, но това е много експериментално устройство, което исках да изградя, за да видя дали обектът е възможен. Наследеният код, използван за изпращане на push известия, скоро ще бъде неизползваем, така че ако четете това в края на 2018 г. или късно, ще се изисква друг метод. Този проблем възниква само при ESP, така че ако искате да приложите това на Arduino с WiFi, няма да е проблем.

Ако имате въпроси или проблеми, не се колебайте да ми пишете на Instructables.

Препоръчано: