Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Analizador de ECG con tecnología Edge Impulse

Componentes y suministros

Arduino Nano 33 BLE Sense
× 1
Monitor de frecuencia cardíaca de un solo cable SparkFun - AD8232
× 1
Módulo de pantalla ElectroPeak 0.96 "OLED 64x128
× 1

Herramientas y máquinas necesarias

Soldador (genérico)
Alambre de soldadura, sin plomo
10 Pz. Kit de cables de puente, 5 cm de largo

Aplicaciones y servicios en línea

Edge Impulse Studio
MATLAB
Arduino IDE
Microsoft Visual Studio 2017

Acerca de este proyecto

Ataque cardíaco repentino y aumento de muertes:preocupación creciente

En la última década, las muertes por ataques cardíacos repentinos aumentaron enormemente.

Particularmente en países en vías de desarrollo como India, aparte de los estilos genéticos y de vida, la falta de recursos médicos en las áreas rurales causa la mayor parte de las muertes en ataques cardíacos.

Contribución de la tecnología para resolver este problema global:

Trabajé en una aplicación TinyML impulsada por Edge Impulse para desarrollar un dispositivo analizador de mini-diagnóstico de ECG que puede caber en un bolsillo y puede diagnosticar enfermedades cardíacas de forma independiente sin una conectividad en la nube.

Presentar máquinas analizadoras de ECG en el mercado y sus características

• El dispositivo médico de IoT actual envía datos de ECG a granel al móvil / servidor y el análisis se realiza en una aplicación móvil / de alto procesador

• Aplicación basada en computadora que recibe señales del dispositivo de ECG y analiza los patrones de ECG

• Todo el dispositivo de análisis de ECG depende de Internet o de computadoras / aplicaciones móviles de alto procesamiento.

Así que esto se puede resumir en la siguiente tabla;

Solución clave

• El analizador de ECG con tecnología Edge Impulse analizará los datos de ECG sin depender de Internet.

• La latencia es más baja en comparación con los dispositivos de IoT

• Un modelo TinyML de análisis de ECG de 15 Kb Rom puede ejecutarse en cualquier microcontrolador compatible con TinyML.

• El dispositivo analizará los patrones de ECG y los clasificará en Normal, Fibrilación auricular y Bloqueo cardíaco de primer grado

Arquitectura

El analizador de ECG incluye

1. Lectura de ECG con AD8232

2. Simulación de diferentes patrones de ECG de enfermedades cardíacas

3. Enfoque novedoso para producir conjuntos de datos de calidad

4. Entrenamiento del modelo

5. Exactitud de la prueba del modelo y Integrando código de aplicación con implementado biblioteca

Conozca el gráfico de ECG

Antes de continuar con el trabajo técnico, primero repasaremos algunos conceptos básicos del gráfico de ECG.

El gráfico de ECG se dividió en 5 ondas:ondas P, Q, R, S y T.

Fibrilación auricular

Bloqueo cardíaco de primer grado

Construyamos el analizador de ECG

1. Lectura de ECG con AD8232

Conecte el sensor de ECG AD8232 al sensor Arduino Nano 33 BLE según el diagrama de conexión a continuación.

Actualice el siguiente código y luego presione "Ctrl + Shift + L" para visualizar los datos gráficos de transmisión.

  void setup () {
// inicializa la comunicación serial:
Serial.begin (115200);
pinMode (2, INPUT); // Configuración para detección de derivaciones LO +
pinMode (3, INPUT); // Configuración para detección de derivaciones LO -

}

void loop () {

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

// enviar el valor de la entrada analógica 0:
Serial.println (analogRead (A0));
}
// Espere un poco para evitar que los datos en serie se saturen
delay (5);
}

1.1 Colocación de electrodos de ECG

Los electrodos de ECG se colocan en RA, LA y LL como se menciona en el diagrama anterior y conectan el conector al sensor AD8232 en el analizador de ECG.

2.Simulación de diferentes patrones de ECG con el generador de señales de Matlab

Paso 2.1 : Guarde los datos de ECG normales en Excel

Primero copie y guarde los datos del monitor en serie en el archivo de Excel como se muestra a continuación. El valor de ECG debe estar en la segunda columna debajo de 'Y'. La primera columna es una serie de tiempo. debe incrementarse como (* 0.005) 5ms.

Paso 2.2:Generador de señales en Matlab

Cree un nuevo modelo de Simulink en Matlab

Luego escriba 'generador de señales' en el espacio de trabajo y selecciónelo. Insertar también

el 'osciloscopio' para conectarlo al generador de señales. Consulte la captura de pantalla a continuación.

Para cargar los datos de Excel guardados, abra el generador de señales y seleccione la opción 'importar desde archivo'.

Seleccione las opciones mencionadas para importar los datos.

Luego confirme la selección e importe sin guardar el modelo. ya que necesitamos algunos pasos más.

2.3 : Visualización de datos de ECG en el generador de señales

A Los datos de ECG de 60 segundos se verán así en la vista del generador de señales. Para la edición manual, amplíe los datos de 5 segundos y haga 'arrastrar' para editar la onda de ECG.

Después de hacer zoom, cuando coloca el puntero del mouse cerca de la onda del ECG, puede seleccionar cualquier punto en el ECG y arrastrarlo según los requisitos de su aplicación.

2.4 : Edición de datos de intervalo P-R en el generador de señales para el caso del bloque AV 1

Yo tener que arrastrar manualmente hacia abajo la onda P y desplazar la onda P mucho antes que la onda R, de modo que el intervalo P-R supere los 200 ms.

Repita este paso en una línea de tiempo diferente en los datos del generador de señales.

Después de editar, exporte los datos al archivo mat. puedes encontrar esta opción en el generador de señales. Una vez guardado el archivo mat, siga los pasos a continuación.

Pasos a seguir -> Primero haga doble clic en el archivo mat y haga doble clic en el conjunto de datos 1x1 -> puede ver los datos modificados en Datos:1.

Copie y pegue los datos en un nuevo archivo de Excel.

Paso 2.5:exporta los datos de Excel a Array

Yo escribí un script a.m que puede convertir los datos de Excel en una matriz.

Ejecute este script en Matlab, antes de ejecutarlo, reemplace ExcelFilename con su nombre de archivo local guardado y ExcelSheetName en un nombre de hoja correspondiente.

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

ECGExtract =(data (1:end, 1)); %% Datos de la columna A

fid =fopen ('test.txt', 'wt');% de apertura con la bandera t convierte automáticamente \ n en \ r \ n en Windows
fprintf (fid, '{');
FormatSpec =[repmat ('% i', 1, size (ECGExtract, 2)) ','];% o debería haber sido \ r \ n en su lugar?
fprintf (fid, FormatSpec, ECGExtract);
fprintf (fid, '}')
fclose (fid);

El archivo de texto se generará en la ubicación del directorio actual.

Copie el contenido de la matriz y péguelo en el código ECGAnalyzer.c para simular la fibrilación auricular y el bloqueo cardíaco de primer grado.

3. Enfoque novedoso para producir conjuntos de datos de calidad

Si observa los datos del ECG, es realmente difícil distinguir las diferentes afecciones cardíacas Los datos del ECG con los datos del ECG normal en un tiempo de ventana menor (ejemplo:3 segundos)

Cuando entreno un modelo solo con datos de ECG filtrados para fibrilación auricular, bloqueo cardíaco normal y de primer grado, la precisión fue inferior al 23%. La razón fue que en la ventana más corta el modelo no puede diferenciar la diferencia.

Si busco un tiempo de ventana más largo, el tiempo de procesamiento y el uso máximo de RAM aumentaron bastante. Incluso no hubo precisión.

Antecedentes del enfoque novedoso:

Cuándo un médico o una persona capacitada tratará de analizar el gráfico del ECG, estarán contando los pequeños cuadros entre la onda R a R, el intervalo P a R y anotarán los recuentos en el gráfico o lo guardarán para su cálculo.

Creé formas de onda independientes a partir de datos de ECG filtrados.

Nuevas formas de onda:

  • Intervalo R-R
  • Intervalo de relaciones públicas

Conjuntos de datos generados para ECG normal datos:

El El intervalo R-R decodificado y los datos del intervalo PR son siempre 100 y 50 para los datos de ECG normales.

Conjuntos de datos generados para fibrilación auricular:datos de ECG:

Siempre que hay una desviación entre el intervalo R-R anterior y el intervalo R-R actual, intervalo R-R los datos se reducirán a -100 por un ciclo.

Conjuntos de datos generados para ECG de bloqueo cardíaco de primer grado Datos :

Siempre que el intervalo P a R supera los 200 ms, luego los datos del intervalo PR se reducirán a -50 por un ciclo.

Este enfoque mejoró la precisión de mi modelo a más del 90%.

4. Entrenamiento del modelo en Edge Impulse

Antes de entrar en el aprendizaje automático de Edge Impulse, debemos configurar algunos parámetros en el archivo de la biblioteca para la simulación y la lectura del sensor de ECG en tiempo real.

paso4.1 :configure la SIMULACIÓN en 0, si la adquisición de datos fue de la lectura del sensor de ECG en tiempo real

o

Configure la SIMULACIÓN en 1, si la adquisición de datos fue de datos de ECG simulados para fibrilación auricular y bloqueo cardíaco de primer grado (seguido de sesiones de Matlab).

Paso 4.2:comenta o quita el comentario de los datos obligatorios búfer para simulación

Paso 4.3 : Adquisición de datos

Recopile los datos del ECG bajo tres etiquetas diferentes:Normal, Fibrilación auricular y Bloqueo cardíaco de primer grado

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

y seleccione la frecuencia 202

  $ edge-impulse-daemon --frequency 202  

Paso 4.4:crear impulso

En una sección de impulso de creación, el tamaño de la ventana es de 3000 ms y el aumento de la ventana es de 2999 ms, seleccione la detección de anomalías k-means

Paso 4.5:características espectrales

En características espectrales, seleccione el tipo de filtro como Ninguno.

Paso 4.6:Clasificador NN:

Yo han establecido 40 ciclos de formación y la tasa de aprendizaje en 0,005. Tengo una precisión de 92,9.

y para la detección de anomalías, he seleccionado RMS de intervalo PR y RMS de intervalo RR.

5. Exactitud e integración de la prueba del modelo

En una prueba de modelo de precisión, resultó con una precisión de alrededor del 97%.

5.1 Implementación:

seleccionar Arduino como implementación;

Agregue el archivo implementado EI descargado a la biblioteca Arduino

Nota: Agregue la biblioteca ECG_Analyzer desde el enlace de GitHub a la biblioteca Arduino también

Esto ayuda a integrar mi código de algoritmo de decodificación de ECG para integrarlo con el modelo generado por EI.

5.2 Integrar el código de la aplicación con el código EI generado por el núcleo

Yo han fusionado el código de la aplicación en EI implementado " nano_ble33_sense_accelerometer_continuous "y lo guardó como ECGAnalyzer.ino.

Está disponible en el enlace de GitHub adjunto. Actualice el código con SIMULATION como 0 en ECG_Analyzer.c en el dispositivo.

Hardware:

Conéctese según el diagrama de fritzing:

Montaje :

Producto final:

Aquí el producto final y el nivel de precisión en los datos de prueba !!!

Créditos:

ECG:https://geekymedics.com/how-to-read-an-ecg/

Código

https://github.com/Manivannan-maker/ECGAnalyzer
descomprima el ECGAnalyzer.zipCode en Flash:EI_Deployed_Library \ examples \ ECGAnalyzer \ ECGAnalyzer.inoLibrary para editar la simulación:ECGAnalyzer_lib \ ecg_analyzer.cMatlab Script y modelo de generador de señales:script para ejecutar en matlab -> Matlab_Srignalconstructor \ Excel. signalbuilder.slxhttps://github.com/Manivannan-maker/ECGAnalyzer

Esquemas

Conéctese según el diagrama ecgdefault_SjMMcgW8jY.fzz

Proceso de manufactura

  1. Tiara
  2. Alambre de púas
  3. Rastreador de inodoro (Desarrollado por Walabot)
  4. Demostraciones de aprendizaje automático de terminales (impulso de borde y armado NN)
  5. Camión de juguete con tecnología Raspberry Pi
  6. MOSMusic
  7. 6 tipos de organización para liderar la revolución de la computación perimetral
  8. Máquina de malla de alambre hexagonal
  9. Introducción al corte de alambre
  10. ¿Qué es un corte de alambre CNC?
  11. La mítica cortadora de electroerosión