Беспроводной стетоскоп на Arduino и Bluetooth модуле HC-05


Многие болезни сердца можно диагностировать по звукам, которое издает сердце в процессе своей работы. Так называемое прослушивание сердца (Heart auscultation) играет важную роль в диагностике сердечной деятельности. Обычно оно выполняется с помощью стетоскопа, инструмента для прослушивания тонов сердца и дыхательных шумов, и требует значительной квалификации от лица, его проводящего. Поэтому в данной статье мы рассмотрим создание электронного стетоскопа на основе платы Arduino и Bluetooth модуле HC-05, способного определять частоту сердцебиений человека и отображать ее в окне Bluetooth-терминала.

Внешний вид проекта стетоскопа на Arduino и Bluetooth модуле HC-05

Ранее на нашем сайте мы рассматривали создание на основе платы Arduino прибора для измерения сердечного ритма.

Как будет работать наш цифровой беспроводной стетоскоп?

Структурная схема работы нашего электронного стетоскопа представлена на следующем рисунке.

Структурная схема работы электронного стетоскопа на основе платы Ардуино

Прослушивать звуки сердца мы будем с помощью конденсаторного микрофона, сигнал с которого мы будем усиливать операционным усилителем и затем подавать его на АЦП (аналого-цифровой преобразователь) платы Arduino. Но перед считыванием сигнала мы будем пропускать его через фильтр нижних частот чтобы очистить его от посторонних шумов и, таким образом, получить на выходе чистый сигнал сердцебиений. Затем мы будем передавать эти данные в окно Bluetooth терминала с помощью Bluetooth модуля HC-05.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Bluetooth модуль HC-05 (купить на AliExpress).
  3. Операционный усилитель NE5532 (купить на AliExpress).
  4. Резисторы 3,3 кОм, 10 кОм (3 шт.), 100 кОм (купить на AliExpress).
  5. Конденсаторы 470 нФ и 2,2 мкФ (купить на AliExpress).
  6. Двухполярный источник питания.
  7. Перфорированная плата.
  8. Соединительные провода.

Схема проекта

Схема беспроводного стетоскопа на основе платы Arduino и Bluetooth модуле HC-05 представлена на следующем рисунке.

Схема стетоскопа на основе платы Arduino и Bluetooth модуле HC-05

В левой части схемы мы видим конденсаторный микрофон, далее конденсатор 1 мкФ чтобы не пропустить на выход постоянную составляющую сигнала. Далее неинвертирующий усилитель с коэффициентом усиления 100X, который мы устанавливаем с помощью резисторов 100 кОм и 1 кОм. После усилителя мы пропускаем сигнал через фильтр нижних частот, который фильтрует все элементы сигнала с частотой больше 300 Гц. Затем в схеме у нас идет делитель напряжения. Поскольку для питания схемы мы используем трансформатор 12-0-12 V, то сигнал на выходе операционного усилителя у вас может отличаться по уровню от того, который был у нас. Поэтому вам необходимо с помощью изменения номиналов резисторов этого делителя напряжения отрегулировать этот сигнал до необходимой величины.

После этого с помощью АЦП платы Arduino мы принимаем этот сигнал и на его основе рассчитываем частоту сердцебиений. Далее мы передаем этот сигнал на терминал с помощью Bluetooth модуля.

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Первым делом в коде программы подключим необходимые библиотеки, в нашем случае нам понадобится всего одна библиотека для взаимодействия с Bluetooth модулем – это библиотека последовательной связи SoftwareSerial.

Далее объявим необходимые переменные. Нам нужны будут переменные для хранения значений АЦП и счетчик, который будет хранить число импульсов за определенный промежуток времени. Также нам нужна будет переменная для хранения длины заданного интервала в миллисекундах – на этом интервале мы будем брать отсчеты частоты сердцебиений и затем рассчитывать на их основе их среднее значение. Дополнительно объявим переменную previousMillis которая будет содержать данные счетчика и использоваться для сравнения со счетчиком millis.

Далее объявим объект BTserial с контактами для последовательной связи 3 и 4 – с его помощью мы будем взаимодействовать с Bluetooth модулем.

Затем, в функции void setup(), мы инициализируем последовательную связь для целей отладки и последовательную связь с Bluetooth модулем. Таким образом, мы сможем одновременно и передавать данные Bluetooth модулю, и производить отладку программы.

Далее, в функции loop, мы объявим две переменные: currentMillis и currentMillis2. В них будут храниться две временные метки и они нам пригодятся в дальнейшем.

Затем с помощью оператора if мы будем проверять прошли ли 30 секунд или нет. Если прошли, то мы будем переходить в следующий цикл while, внутри которого мы будем считывать значение с выхода АЦП и проверять находится ли принимаемое значение в заданном диапазоне. Если находится, то мы будем инкрементировать значение счетчика. Инкрементирование значения счетчика будет означать что мы распознали сердечный ритм. После этого мы будем сбрасывать значения всех переменных и выводить значение сердечного ритма в окно монитора последовательной связи, также мы будем передавать эти данные через Bluetooth.

Тестирование работы проекта

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

Тестирование стетоскопа на пальцеДалее мы протестировали его на области грудной клетки и в этом случае картина получилась следующая:

Тестирование стетоскопа на грудной клетке

Как видно из представленных рисунков, пиковое напряжение на выходе операционного усилителя составляет около 14.6V.

Затем мы открыли окно монитора последовательной связи и проверили корректны ли передаваемые в него данные. Как оказалось, они вполне корректны.

Тестирование работы стетоскопа в окне монитора последовательной связи

Далее по Bluetooth мы связали наш проект с нашим сотовым телефоном, запустили на нем приложение Bluetooth serial terminal и подключили Bluetooth к его последовательному терминалу. После этого в нем можно было наблюдать измеренные частоты сердцебиений.

Тестирование работы стетоскопа в Bluetooth терминале

Вызовы, с которыми пришлось столкнуться в данном проекте

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

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

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

Исходный код программы (скетча)

Источник статьи

(Проголосуй первым!)
Загрузка...
51 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован.