Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Анализатор ЭКГ на основе граничного импульса

Компоненты и расходные материалы

Arduino Nano 33 BLE Sense
× 1
Монитор сердечного ритма с одним отведением SparkFun - AD8232
× 1
ElectroPeak 0.96 "OLED-дисплей 64x128"
× 1

Необходимые инструменты и машины

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

Приложения и онлайн-сервисы

Edge Impulse Studio
MATLAB
IDE Arduino
Microsoft Visual Studio 2017

Об этом проекте

Внезапный сердечный приступ и рост смертности:растущее беспокойство

За последнее десятилетие резко увеличилось количество смертей от внезапных сердечных приступов.

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

Вклад технологий в решение этой глобальной проблемы:

Я работал над приложением TinyML на базе Edge Impulse, чтобы разработать устройство мини-диагностического анализатора ЭКГ, которое может поместиться в кармане и может самостоятельно диагностировать сердечные заболевания без подключения к облаку.

Существующие на рынке анализаторы ЭКГ и их особенности

• Настоящее медицинское устройство IoT отправляет объемные данные ЭКГ на мобильный / сервер, а анализ выполняется в высокопроизводительном / мобильном приложении

• Компьютерное приложение, которое принимает сигналы от устройства ЭКГ и анализирует модели ЭКГ

• Все устройства для анализа ЭКГ зависят от Интернета или компьютеров с высокой производительностью / мобильных приложений.

Таким образом, это можно резюмировать на диаграмме ниже;

Ключевое решение

• Анализатор ЭКГ на базе Edge Impulse будет анализировать данные ЭКГ независимо от Интернета.

• Задержка самая низкая по сравнению с устройствами Интернета вещей

• Модель TinyML для анализа ЭКГ объемом 15 Кбайт может работать на любых микроконтроллерах, поддерживающих TinyML.

• Устройство анализирует образцы ЭКГ и классифицирует их на нормальную, мерцательную аритмию и блокаду сердца первой степени

Архитектура

Анализатор ЭКГ включает

1. Считывание ЭКГ с помощью AD8232

2. Моделирование различных паттернов ЭКГ при сердечных заболеваниях

3. Новый подход к созданию качественных наборов данных

4. Обучение модели

5. Точность тестирования модели и Интеграция код приложения с развернутым библиотека

Знайте о графике ЭКГ

Прежде чем приступить к технической работе, сначала рассмотрим некоторые основы построения графика ЭКГ.

График ЭКГ был разделен на 5 волн - зубцы P, Q, R, S и T.

Мерцание предсердий

Блокада сердца первой степени

Давайте построим анализатор ЭКГ

1. Считывание ЭКГ с помощью AD8232

Подключите датчик ЭКГ AD8232 к датчику BLE Arduino Nano 33 в соответствии со схемой подключения ниже.

Запишите приведенный ниже код и нажмите «Ctrl + Shift + L», чтобы визуализировать графические данные потоковой передачи.

  void setup () {
// инициализируем последовательную связь:
Serial.begin (115200);
pinMode (2, INPUT); // Настройка обнаружения отключения отведений LO +
pinMode (3, INPUT); // Настройка обнаружения отключения отведений LO -

}

void loop () {

if ((digitalRead (2) ==1) || (digitalRead (3) ==1)) {
Serial.println ('!');
}
else {

// отправляем значение аналогового входа 0:
Serial.println (analogRead (A0));
}
// Подождите, пока бит не перегрузит последовательные данные
delay (5);
}

1.1 Размещение электродов ЭКГ

Электроды ЭКГ размещаются в RA, LA и LL, как указано на схеме выше, и подключают разъем к датчику AD8232 на анализаторе ЭКГ.

2. Моделирование различных паттернов ЭКГ с помощью Matlab-signal builder

Шаг 2.1 : Сохраните обычные данные ЭКГ в Excel

Сначала скопируйте и сохраните данные последовательного монитора в файл Excel, как показано ниже. Значение ЭКГ должно быть во втором столбце под «Y». Первый столбец - это временной ряд. он должен увеличиваться до (* 0,005) 5 мс.

Шаг 2.2:построитель сигналов в Matlab

Создайте новую модель Simulink в Matlab

Затем введите «построитель сигналов» в рабочей области и выберите его. Также вставьте

«прицел», чтобы подключить его к построителю сигналов. См. Снимок экрана ниже.

Чтобы загрузить сохраненные данные Excel, откройте построитель сигналов и выберите опцию «Импорт из файла».

Выберите указанные параметры для импорта данных.

Затем подтвердите выбор и импортируйте без сохранения модели. так как нам нужно еще несколько шагов.

2.3 : Визуализация данных ЭКГ в построителе сигналов

А 60-секундные данные ЭКГ будут выглядеть следующим образом в представлении построителя сигналов. Для ручного редактирования увеличьте изображение на 5 секунд и выполните «перетащите» для редактирования волны ЭКГ.

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

2.4 : Редактирование данных интервала P-R в Signal Builder для случая AV-блока 1

Я вручную перетащите зубец P вниз и сместите зубец P намного раньше, чем зубец R, так что интервал P-R превышает 200 мс .

Повторите этот шаг на другой временной шкале в данных построителя сигналов.

После редактирования экспортируйте данные в файл mat. вы можете найти эту опцию в построителе сигналов. После сохранения файла мата, пожалуйста, выполните следующие действия.

Действия, которые необходимо выполнить -> Сначала дважды щелкните файл mat и дважды щелкните набор данных 1x1 -> вы увидите измененные данные в разделе «Данные:1».

Скопируйте и вставьте данные в новый файл Excel.

Шаг2.5. Экспорт данных Excel в массив

Я написали сценарий AM, который может преобразовывать данные Excel в массив.

Запустите этот сценарий в Matlab, перед запуском замените ExcelFilename на локальное сохраненное имя файла и ExcelSheetName на соответствующее имя листа.

  data =xlsread ('ExcelFilename.xlsx', 'ExcelSheetName'); 

ECGExtract =(data (1:end, 1)); %% Столбец A данные

fid =fopen ('test.txt', 'wt');%, открытие с флагом t автоматически преобразует \ n в \ r \ n в Windows
fprintf (fid, '{');
FormatSpec =[repmat ('% i', 1, size (ECGExtract, 2)) ','];% или вместо этого должно было быть \ r \ n?
fprintf (fid, FormatSpec, ECGExtract);
fprintf (fid, '}')
fclose (fid);

Текстовый файл будет создан в текущем местоположении каталога.

Скопируйте содержимое массива и вставьте его в код ECGAnalyzer.c для моделирования мерцательной аритмии и блокады сердца первой степени.

3. Новый подход к созданию качественных наборов данных

Если вы посмотрите на данные ЭКГ, действительно трудно отличить различные данные ЭКГ о состоянии сердца от нормальных данных ЭКГ за меньшее время окна (пример:3 секунды)

Когда я обучаю модель только с отфильтрованными данными ЭКГ для фибрилляции предсердий, нормальной и первой степени блокады сердца, точность составила менее 23% . Причина заключалась в более коротком окне, модель не могла различить разницу.

Если я использую более длительное время окна, время обработки и пиковое использование ОЗУ значительно увеличиваются. Даже не было точности.

Предыстория нового подхода:

Когда Врач или обученный человек попытаются проанализировать график ЭКГ. Они будут считать маленькие прямоугольники между зубцами R и R, интервалом P и R и записывать их на графике или запоминать их для расчета.

Я создал отдельные кривые из отфильтрованных данных ЭКГ.

Новые формы сигналов:

  • Интервал R-R
  • Интервал PR

Созданные наборы данных для нормальной ЭКГ данные:

декодированные данные интервала R-R и интервала PR всегда равны 100 и 50 для нормальных данных ЭКГ.

Созданные наборы данных для фибрилляции предсердий - данные ЭКГ:

Когда угодно есть отклонение между предыдущим интервалом R-R и текущим интервалом R-R, интервал R-R данные будут сброшены до -100 за один цикл.

Созданные наборы данных для ЭКГ-блокады сердца первой степени Данные :

Когда угодно если интервал от P до R превышает 200 мс, тогда данные об интервале PR будут сброшены до -50 за один цикл.

Этот подход повысил точность моей модели до более 90% .

4. Обучение модели в Edge Impulse

Прежде чем перейти к обучению машинному обучению Edge Impulse, нам необходимо настроить некоторые параметры в файле библиотеки для моделирования и считывания показаний датчика ЭКГ в реальном времени.

step4.1 :установите для МОДЕЛИРОВАНИЯ значение 0, если данные были получены из показаний датчика ЭКГ в реальном времени

или

Установите для МОДЕЛИРОВАНИЯ значение 1. Если данные были получены на основе данных моделирования ЭКГ для фибрилляции предсердий и блокады сердца первой степени (после сеансов Matlab).

Шаг4.2. Прокомментируйте / раскомментируйте требуемые данные буфер для моделирования

Шаг4.3 : Сбор данных

Соберите данные ЭКГ под тремя разными ярлыками:Нормальный, Фибрилляция предсердий и Блокада сердца первой степени

https://docs.edgeimpulse.com/docs/arduino-nano-33-ble-sense

и выберите частоту 202

  $ edge-impulse-daemon --frequency 202  

Шаг4.4. Создайте импульс

В секция создания импульса, размер окна составляет 3000 мс, а увеличение окна - 2999 мс, выберите обнаружение аномалии k-средних

Шаг 4.5. Спектральные характеристики

В спектральных характеристик, выберите тип фильтра "Нет".

Шаг 4.6. Классификатор NN:

Я установили 40 циклов обучения и скорость обучения 0,005. У меня точность 92,9.

а для обнаружения аномалий я выбрал RMS интервала PR и RMS интервала RR.

5. Точность модельных испытаний и интеграция

По результатам модельных испытаний точность составила 97%.

5.1 Развертывание:

выберите Arduino как развертывание;

Добавьте загруженный развернутый файл EI в библиотеку Arduino

Примечание. Добавьте библиотеку ECG_Analyzer из ссылки GitHub также в библиотеку Arduino

Это помогает интегрировать мой код алгоритма декодирования ЭКГ для интеграции с моделью, созданной EI.

5.2 Интеграция кода приложения в основной код EI

Я объединили код приложения с развернутым EI " nano_ble33_sense_accelerometer_continuous "и сохранил его как ECGAnalyzer.ino.

Он доступен по прикрепленной ссылке на GitHub. Прошить код с SIMULATION как 0 в ECG_Analyzer.c в устройстве.

Оборудование:

Подключите согласно схеме фритзинга:

Сборка :

Конечный продукт:

Вот конечный продукт и уровень точности тестовых данных !!!

Кредиты:

ЭКГ:https://geekymedics.com/how-to-read-an-ecg/

Код

https://github.com/Manivannan-maker/ECGAnalyzer
разархивируйте файл ECGAnalyzer.zipCode во Flash:EI_Deployed_Library \ examples \ ECGAnalyzer \ ECGAnalyzer.inoLibrary для редактирования моделирования:ECGAnalyzer_lib \ ecg_analyzer.c Сценарий Matlab и модель signalbuilder:сценарий для запуска в matlab -> Excel_Simulation_Simulation> Matlab -> Matlab -> Matlab -> Matlab -> Matlab -> Matlab -> Matlab -> Matlab_Simulation> signalbuilder.slx https://github.com/Manivannan-maker/ECGAnalyzer

Схема

Подключите согласно схеме ecgdefault_SjMMcgW8jY.fzz

Производственный процесс

  1. Тиара
  2. Колючая проволока
  3. Счетчик туалета (на платформе Walabot)
  4. Демонстрации машинного обучения reTerminal (Edge Impulse и Arm NN)
  5. Игрушечный грузовик на базе Raspberry Pi
  6. MOSMusic
  7. 6 типов организаций, которые возглавят революцию в области периферийных вычислений
  8. Шестиугольная машина для плетения проволочной сетки
  9. Введение в резку проволокой
  10. Что такое резка проволоки с ЧПУ?