Монитор сердечного ритма с помощью arduino и платформы thingspeak iot arduino+

Датчик пульса

Товары

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

Содержание

Обзор датчика пульса Arduino

Пульс — это ритмичные колебания стенок кровеносных сосудов, происходящие во время сокращений сердца. Измерения пульса очень важны для диагностики сердечно-сосудистых заболеваний. Важно следить за изменениями сердечного ритма, чтобы не допустить перегрузки организма, особенно во время занятий спортом. Один из понятных параметров пульса – частота пульса. Измеряется в количестве ударов в минуту.

Рассмотрим доступный датчик для измерения сердечного ритма – Pulse Sensor (рисунок 1).

Рисунок 1. Датчик пульса

Это аналоговый датчик, основанный на методе фотоплетизмографии — изменении оптической плотности объема крови в области, на которой проводится измерение (например, палец руки или мочка уха), вследствие изменения кровотока по сосудам в зависимости от фазы сердечного цикла. Датчик содержит источник светового излучения (светодиод зеленого цвета) и фотоприемник (рис. 2), напряжение на котором изменяется в зависимости от объема крови во время сердечных пульсаций. Это график (фотоплетизмограмма или ППГ-диаграмма) имеет форму, представленную на рис. 3.

Рисунок 3. Фотоплетизмограмма

Датчик пульса усиливает аналоговый сигнал и нормализует относительно точки среднего значения напряжения питания датчика ( V/2 ). Датчик пульса реагирует на относительные изменения интенсивности света. Если количество света, падающего на датчик остается постоянным, величина сигнала будет оставаться вблизи середины диапазона АЦП. Если регистрируется большая интенсивность изучения, то кривая сигнала идет вверх, если меньше интенсивность, то, наоборот, кривая идет вниз.

Рисунок 4. Регистрация удара пульса

Наш датчик пульса мы будем использовать для измерения частоты пульса, фиксируя промежуток между точками графика, когда сигнал имеет значение 50% от амплитуды волны во время начала импульса.

Технические характеристики датчика

  • Напряжение питания – 5 В;
  • Ток потребления – 4 мА;

Подключение к Arduino

Датчик имеет три вывода:

  • VCC — 5 В;
  • GND — земля;
  • S — аналоговый выход.

Для подключения датчика пульса к плате Арудино необходимо контакт S датчика подсоединить к аналоговому входу Arduino (рисунок 5).

Рисунок 5. Подключение датчика пульса к плате Arduino

Пример использования

Рассмотрим пример определения значения частоты импульса и визуализации данных сердечного цикла. Нам понадобятся следующие детали:

  • плата Arduino Uno
  • датчик пульса

Сначала подключим датчик пульса к плате Arduino согласно рис. 6. Загрузим на плату Arduino скетч из листинга 1. В данном скетче мы используем библиотеку iarduino_SensorPulse.

Листинг 1 Вывод данных в монитор последовательного порта Arduino (рис. 6).

Рисунок 6. Вывод данных аналогового значения и частоты пульса в монитор последовательного порта.

Для получения графика фотоплетизмограммы на экране компьютера будем использовать хорошо знакомую Ардуинщикам среду программирования Processing, похожую на Arduino IDE. Загрузим на плату Arduino скетч (PulseSensorAmped_Arduino_1dot1.zip), а на компьютере из Processing загрузим скетч (PulseSensorAmpd_Processing_1dot1.zip). Передаваемые с платы Arduino в последовательный порт данные, мы будем получать в Processing и строить график (рис. 7).

Рисунок 7. Визуализация данных в Processing.

Еще один вариант визуализации (для компьютеров Mac) – программа Pulse Sensor. Она также получает данные, приходящие в последовательный порт от Arduino (скачать скетч PulseSensorAmped_Arduino_1dot1.zip) и выводит график, уровень сигнала и значение пульса (рис. 8).

Рисунок 8. Визуализация данных с датчика пульса в программе Pulse Sensor.

Часто задаваемые вопросы FAQ

3. Явно неверные показания с датчика пульса

  • Прикладывать датчик пульса следует правильно – между центром подушечки и изгибом пальца.

Мониторинг устройств с помощью сервиса ThingSpeak и Arduino

Февраль 15, 2017

Для этой статьи нам понадобится:

Сначала рассмотрим датчик LM335. Это датчик температурного чувствительного элемента с диапазоном от -40 до +100 градусов по Цельсию с точностью в 1 градус.

По принципу действия датчик LM335 представляет собой стабилитрон, у которого напряжение стабилизации зависит от температуры, при повышении температуры на один градус Кельвина напряжение стабилизации увеличивается на 10 милливольт.

Скетч и схему для этого датчика смотрите по ссылке.

Чтение данных с фоторезистора

Рассмотрим аналоговый датчик – фоторезистор. Чаще всего с помощью фоторезисторов осуществляют измерение освещенности. Дело в том, что в темноте сопротивление фоторезистора весьма велико, но когда на него попадает свет, это сопротивление падает пропорционально освещенности.

Схема подключения фоторезистора к Ардуино:

Для схемы измерения освещенности необходимо собрать делитель напряжения, в котором верхнее плечо будет представлено фоторезистором, а нижнее обычным резистором 10 кОм. среднее же плечо делителя подключается к аналоговому входу А0 Ардуино.

Отправка данных в сервис ThingSpeak.

Сервис ThingSpeak – открытая платформа данных для проектов Internet of Things, включающая в себя сбор данных с датчиков в реальном времени, обработку этих данных, их визуализацию и использование в приложениях и плагинах.

Чтобы начать работу с сервисом, необходимо зарегистрироваться, нажав кнопку GetStarted Now в стартовом окне сервиса. В открывшимся окне регистрации заполняем требуемые формы, нажимаем кнопку Create Account и сразу попадаем в свой аккаунт.

Здесь нам надо создать канал (Channel), в котором будут храниться наши данные.

Каждый канал включает в себя восемь полей для любого типа данных, три поля местоположения и одно поле состояния. Таким образом, один канал мы можем использовать для отправки и хранения данных с одного устройства, имеющего не более восьми датчиков.

Для создания канала нажимаем кнопку NewChannel, заполняем поля, как показано на рисунки ниже и сохраняем канал, нажав на кнопку Save Channel. Все – канал создан. Мы в качестве датчика задействовали в создаваемом канале фоторезистор, прописав его в поле Field 1. А в Field 2 мы пропишем датчик температуры LM335.

Схема подключения Фоторезистора и датчика LM335 к Ардуино:

Урок 27. Пульсометр

В этом уроке мы научимся получать данные с датчика пульса и выводить их на TFT дисплей в виде графика и среднего значения пульсаций в минуту.

Нам понадобится:

  • Arduino х 1шт.
  • TFT дисплей 2.8 – 320×240 х 1шт.
  • Датчик пульса х 1шт.
  • Trema зуммер х 1шт.
  • Double Shield х 1шт.
  • Trema Shield х 1шт.

Для реализации проекта нам необходимо установить библиотеки:

  • Библиотека iarduino_SensorPulse для работы с датчиком пульса.
  • Библиотека UTFT для работы с цветными TFT дисплеями
    (в данную библиотеку нами добавлена поддержка текущего дисплея)

О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki – Установка библиотек в Arduino IDE .

Видео:

Принцип действия датчика пульса:

Pulse Sensor – это аналоговый датчик позволяющий фиксировать пульс.

На датчике установлены светодиод и фотоприемник, расположенные так, что луч света излучаемый светодиодом, попадает на фотоприёмник только отразившись от препятствия, которым должна выступать подушечка пальца или мочка уха.

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

Электрическая схема датчика устроена так, чтобы регистрировать только динамическое изменение интенсивности принимаемого светового потока. При неизменном световом потоке (независимо от его интенсивности), напряжение на выходе датчика находится в районе половины напряжения питания. При изменении интенсивности светового потока, напряжение на выходе датчика отклоняется от среднего значения, в сторону уменьшения или увеличения, пропорционально изменению светового потока. Таким образом датчик не нуждается в подстройке под каждого человека.

Схема подключения:

TFT дисплей реализован в виде shield и использует следующие выводы arduino Uno: A0-A4 (управление), 2-9 (данные), 10-13 (SD-карта), питание. Датчик пульса подключается к аналоговому входу A5. Trema зуммер подключается к цифровому выводу 1.

Так как цифровой вывод 1 является линией TX шины UART, то при загрузке скетча будет слышен звук.

Код программы:

Алгоритм работы:

В начале кода:

  • подключаются библиотеки: iarduino_SensorPulse и UTFT;
  • подключаются шрифты: SmallFont и BigFont для вывода текста на TFT дисплей;
  • создаются константы: colorBG, colorGR, colorCD, colorER, которым присваиваются цвета в формате RGB565;
  • создаются переменные, для вывода графика: graphY0, graphY, graphX, screenW и screenH;
  • создаются объекты библиотек: myGLCD – для работы с дисплеем и Pulse – для работы с датчиком пульса.

В функции setup:

  • инициируем дисплей и датчик пульса;
  • стираем всю информацию с дисплея;
  • сохраняем ширину и высоту дисплея в переменные screenW и screenH, вычитая по единице из каждого параметра, так как координаты для графических функций начинаются с 0, а не с 1.

В функции loop:

  • определяем координаты конечной точки графика: graphX, graphY;
  • если сенсор подключен, то выводим график и показания пульса;
  • если сенсор отключен, то выводим сообщение “DISCONNECTED”;
  • если сенсор изменил своё состояние (с подключен на отключен или наоборот), то стираем всю информацию с дисплея;
  • в конце кода устанавливается задержка на 5 мс., чем больше значение задержки, тем больше пульсаций уместится на графике.

Получение данных:

Данные датчика пульса возвращает функция check() библиотеки iarduino_SensorPulse, которая принимает в качестве аргумента 1 из 4 параметров: ISP_ANALOG, ISP_PULSE , ISP_BEEP , ISP_VAL >.

  • Pulse.check(ISP_ANALOG); – возвращает число от 0 до 1024 – данные с аналогового входа, к которому подключён датчик;
  • Pulse.check(ISP_PULSE); – возвращает число от 0 до 999 – пульс (количество пульсаций в минуту);
  • Pulse.check(ISP_BEEP); – возвращает число от 0 до 2621 – количество десятых долей секунды, прошедшее после последнего пика пульса;
  • Pulse.check(ISP_VALID); – возвращает состояние датчика – ISP_CONNECTED, ISP_DISCONNECTED, ISP_CHANGED:
    • ISP_CONNECTED – подключён (данные похожи на пульс);
    • ISP_DISCONNECTED – отключён (данные не соответствуют пульсу);
    • ISP_CHANGED – состояние сенсора изменилось (с подключён на отключён или наоборот).

Вывод данных:

С функциями библиотеки UTFT, для вывода данных на TFT дисплей, можно ознакомиться в разделе wiki – Работа с цветным графическим дисплеем .

Монитор сердечного ритма с помощью Arduino и платформы Thingspeak IoT

В этом проекте мы собираемся создать систему обнаружения и контроля сердечного ритма с использованием Arduino, которая будет определять сердечный ритм с помощью импульсного датчика и покажет показания в BPM (Beats Per Minute, Ударов в минуту). Он также отправит показания на сервер ThingSpeak с помощью модуля ESP8266 Wi-Fi Bee, так что все показатели можно будет отслеживать из любой точки мира через Интернет.

ThingSpeak – отличный источник для отображения данных в Интернете, и вы можете получить доступ к данным ThingSpeak в любое время и в любом месте.

Шаг 1: Необходимые компоненты

Устройства:

  • Arduino UNO Rev3
  • Плата расширения для Arduino (I/O Expansion Shield)
  • Датчик сердечного ритма
  • ESP8266 WiFi Bee

Программное обеспечение:

    Arduino >Шаг 2: Настройка ThingSpeak

ThingSpeak предоставляет очень хороший инструмент для проектов на основе IoT. Используя сайт ThingSpeak, мы можем отслеживать наши данные и управлять нашей системой через Интернет, используя Каналы и веб-страницы, предоставляемые ThingSpeak.

ThingSpeak «Собирает» (Collects) данные от датчиков, «Анализирует и визуализирует» (Analyze and Visualize) данные и «Действует» (Acts) инициируя реакцию. Мы еще используем ThingSpeak в проекте метеостанции с использованием Raspberry Pi и используя Arduino, чтобы узнать больше о ThingSpeak. Здесь мы кратко объясняем использование ThingSpeak для этой системы обнаружения и мониторинга сердцебиения. Служба ThingSpeak управляется MathWorks.

Прежде всего, пользователю необходимо создать учетную запись на ThingSpeak.com, затем войти в систему и нажать «Начать».

После создания учетной записи перейдите в Channels и создайте новый канал. Теперь напишите имя канала и имена полей. Также поставьте галочку в поле «Сделать общедоступным» (Make Public) ниже в форме и, наконец, сохраните канал. Теперь ваш новый канал создан. Выше на фото мы показали некоторые скриншоты ThingSpeak с созданием канала и API ключа.

Шаг 3: Схема и пояснение

ESP8266 WiFi Bee

Wifi Bee-ESP8266 – это модуль Serial-to-WIFI с использованием конструкции XBEE в компактном размере, совместимый со слотом XBEE, применимый к целой системе с одним чипом 3,3 В.

Он может использоваться для Arduino, беспроводной передачи данных, дистанционного управления. Встроенный коммутатор можно использовать для простого выбора модуля запуска или обновления прошивки. Модуль ESP8266 Arduino имеет мощную встроенную технологию обработки и хранения, встроенный 32-битный процессор, встроенный стек протокола Lwip. Поддержка режима AP + STA со-существует.

Модуль датчика сердечного ритма

Датчик сердечного ритма DFRobot представляет собой монитор сердечного ритма большого пальца, разработанный для микроконтроллеров Arduino.

Этот датчик контроля сердечного ритма является импульсным датчиком, который разработан на основе методов PPG. Это простой и недорогой оптический метод, который можно использовать для определения изменения объема крови в микрососудистом слое тканей. В соответствии с этой теорией относительно легко обнаружить пульсирующий компонент сердечного цикла.

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

Плата расширения (I/O Expansion Shield)

Чтобы соединить эти компоненты с Arduino, нам нужна Плата расширения, которая легко соединяет их с микроконтроллером.

3.1 Соединение

  1. Закрепите/соедините Плату расширения с Arduino UNO.
  2. Возьмите модуль датчика сердечного ритма и поместите ремень через отверстия в модулях, чтобы вы могли обернуть палец, запястье, мочку уха или другие области, где он контактирует с вашей кожей.
  3. Подключите модуль датчика частоты пульса к выходу A1 на аналоговых выходах Платы расширения. Обратите внимание на цвета выходов и проводов, то есть от красного до красного и т.д.
  4. В разъем Wifi Bee на плате разместите ESP8266 WiFi Bee.

Шаг 4: Код, загрузка и тестирование

  1. Оберните ремень вокруг пальца или запястья.
  2. Теперь загрузите эскиз для тестирования модуля в первый раз.
  3. Откройте серийный плоттер, подождите 5 секунд и будьте спокойны. Вы увидите график сердечных ударов.
  4. Попытайтесь заблокировать кровоток другой рукой.
  5. Линия графика станет прямой, после в течение некоторого времени и достигнет нормальной стадии, так как кровь найдет способ для циркуляции, если все капилляры не заблокированы должным образом.

Внимание:

  1. Этот продукт НЕ является профессиональным медицинским устройством и не должен использоваться для диагностики или лечения заболеваний.
  2. Этот датчик предназначен для работы, когда пользователь не перемещается. Если используется при перемещении, это даст неточные результаты.
  • Теперь загрузите основной код в Arduino.
  • Не забудьте изменить ключ API, SSID (имя WiFi) и PASS (Пароль) для вашего проекта. Используйте датчик сердечного ритма сначала на себе. ESP8266 затем свяжется с Arduino и отправит данные в ThingSpeak.

ESP8266 подключится к сети вашего маршрутизатора, которую вы предоставите в коде, и будет отправлять данные датчика онлайн. Эти данные на ThingSpeak будут показаны в форме графика, отображающего прошлые результаты, и к ним можно получить доступ из любого места в Интернете.

Шаг 5: Эскизы (скетчи) для Ардуино

Ниже вы можете скопировать код для Arduino IDE или скачать файлы .ino.

Источники:

http://psenyukov.ru/%D0%BC%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3-%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-%D1%81%D0%B5%D1%80%D0%B2%D0%B8/

http://lesson.iarduino.ru/page/urok-27-pulsometr/

http://arduinoplus.ru/monitor-serdechnogo-ritma-arduino/

http://arduinoplus.ru/nevidimaya-revolyutsiya/

Ссылка на основную публикацию