Оглавление:

Монитор сердечного ритма IOT (ESP8266 и приложение для Android): 5 шагов
Монитор сердечного ритма IOT (ESP8266 и приложение для Android): 5 шагов

Видео: Монитор сердечного ритма IOT (ESP8266 и приложение для Android): 5 шагов

Видео: Монитор сердечного ритма IOT (ESP8266 и приложение для Android): 5 шагов
Видео: Программирование ESP-01 (ESP8266) с помощью программатора FTDI. 2024, Июль
Anonim
Image
Image

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

Видео с подробным описанием физической схемы можно увидеть выше. Весь код проекта можно найти на моем Github.

Шаг 1: Схема

Схема
Схема

Есть два основных метода измерения сердцебиения, но для этого проекта я решил использовать фотоплетизмографию (ФПГ), в которой используется инфракрасный или красный источник света, который преломляется через несколько первых слоев кожи. Фотодатчик используется для измерения изменения интенсивности света (когда кровь течет по сосуду). Сигналы PPG невероятно зашумлены, поэтому я использовал полосовой фильтр, чтобы отфильтровать определенные требуемые частоты. Человеческое сердце бьется с частотой от 1 до 1,6 Гц. Я использовал операционный усилитель lm324 с лучшим смещением напряжения из всех доступных мне операционных усилителей. Если вы воссоздаете этот проект, то точный операционный усилитель будет гораздо лучшим выбором.

Было использовано усиление всего два, потому что максимальное отклонение напряжения на ESP8266 составляет 3,3 В, и я не хотел повредить свою плату!

Следуйте приведенной выше схеме и попробуйте заставить ее работать на макетной плате. Если у вас дома нет осциллографа, вы можете подключить выход к Arduino и построить график, но убедитесь, что напряжение не превышает допуски Arduino или микроконтроллера.

Схема была протестирована на макетной плате, и изменение выходного сигнала наблюдалось, когда палец прикладывался к светодиоду и фототранзистору. Затем я решил спаять плату вместе, чего не было на видео.

Шаг 2: Код обработки сигналов и связь с сервером

Image
Image
Код обработки сигналов и связь с сервером
Код обработки сигналов и связь с сервером

Я решил использовать Arduino IDE на ESP8266, потому что она очень проста в использовании. Когда сигнал был нанесен на график, он все еще был очень шумным, поэтому я решил очистить его с помощью КИХ-фильтра скользящего среднего с числом отсчетов десять. Для этого я изменил пример программы 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 было разработано с двумя действиями. Первое действие подписало пользователя или зарегистрировало его с помощью Firebase API. Я изучил таблицу и нашел различные руководства о том, как использовать Firebase с мобильным приложением. Основное действие, которое отображало пользователя данных пользователя в режиме реального времени, поэтому не было заметной задержки в изменении пользовательского BPM. Push-уведомления были сделаны с использованием облачных сообщений Firebase, о которых упоминалось ранее. В таблице данных Firebase есть много полезной информации о том, как это реализовать, и приложение можно протестировать, отправляя уведомления с панели управления на веб-сайте Firebase.

Весь код действий и методы обмена сообщениями в облаке можно найти в моем репозитории Github.

Шаг 5: Заключение

При измерении BPM пользователя возникли некоторые серьезные проблемы. Значения сильно различались, и их нельзя было использовать для определения состояния здоровья пользователя. Это сводилось к коду обработки сигнала, который был реализован на ESP8266. После дополнительных исследований я обнаружил, что сердце имеет четыре разных импульса с разным периодом, поэтому неудивительно, что программное обеспечение было неточным. Способ борьбы с этим состоял бы в том, чтобы взять среднее значение четырех импульсов в массиве и вычислить период сердца по этим четырем импульсам.

Остальная часть системы работала, но это очень экспериментальное устройство, которое я хотел построить, чтобы проверить, возможен ли объект. Устаревший код, который использовался для отправки push-уведомлений, скоро станет непригодным для использования, поэтому, если вы читаете это в конце 2018 года или поздно, потребуется другой метод. Эта проблема возникает только с ESP, поэтому, если вы хотите реализовать это на Arduino с поддержкой Wi-Fi, это не будет проблемой.

Если у вас есть какие-либо вопросы или проблемы, не стесняйтесь писать мне на Instructables.

Рекомендуемые: