1.-INTRODUCCIÓN
Las enfermedades cardiovasculares representan una de las tres primeras causas de muerte en la mayoría de los países, según los reportes de la Organización Mundial de la Salud. En Cuba, el Sistema Nacional de Salud reporta a las enfermedades cardíacas como la primera causa de muerte con un 30% de los fallecimientos anuales. Los avances en la electrónica, las telecomunicaciones y las tecnologías de la información, específicamente la de los dispositivos móviles, han permitido el desarrollo de innumerables dispositivos y aplicaciones en el área de la medicina, logrando una mayor cobertura y por tanto una mejora en la prestación de servicios de salud. La monitorización inalámbrica de la señal de electrocardiograma (ECG), es una de las aplicaciones de gran interés en la medicina [1] y abarca la adquisición, el procesamiento y análisis para emitir un diagnóstico final. El interés principal es proveer, de forma oportuna, servicios a pacientes dentro y fuera de los centros de salud. Existen varias razones para justificar el aumento del monitoreo inalámbrico del ECG: (a) muchas personas tienen que viajar largas distancias para recibir atención médica porque sus áreas de salud no tienen centros de atención médica, o sólo tienen centros con instalaciones básicas, (b) los pacientes con enfermedades cardíacas crónicas necesitan un seguimiento continuo para realizar su vida cotidiana sin necesidad de permanecer en el hospital, (c) los servicios hospitalarios, si bien en Cuba son gratuitos, son costosos, (d) el envejecimiento de la población o su imposibilidad de desplazarse a instituciones de salud y (e) la insuficiente o no existente disponibilidad de los tradicionales equipos Holter para la monitorización ambulatoria del ECG, entre otros.
El uso de dispositivos portables es especialmente interesante en el seguimiento de eventos (arritmias, sincopes y otros) que no pueden detectarse en un electrocardiograma en reposo ya que, debido a su carácter transitorio, pueden no aparecer durante un período corto de grabación. Este tipo de dispositivos cómodos, simples, eficientes y cada vez más al alcance de las personas, están reemplazando poco a poco a la monitorización Holter tradicional, en la que el paciente debía cargar con un sistema de grabación para el registro de la actividad eléctrica del corazón. Existen múltiples escenarios que justifican el uso de dispositivos móviles en la medicina: (a) en una sala hospitalaria puede ser de interés que el especialista necesite visualizar las señales de ECG de los pacientes ubicados en camas diferentes sin necesidad de tener que desplazar un monitor de ECG más voluminoso e incomodo, (b) cuando el médico de familia visita al paciente (fuera del entorno hospitalario) no le es posible llevar un electrocardiógrafo consigo y (c) en zonas rurales de difícil acceso, entre otros.
Es indiscutible la popularidad que dispositivos como teléfonos celulares y tabletas electrónicas, basados en el Sistema Operativo (SO) Android han alcanzado en todo el mundo, cuyo crecimiento exponencial ha posibilitado su aplicación en el monitoreo de la actividad cardíaca durante la ejecución de actividades físicas intensas aportando comodidad y movilidad a las mismas, sin dejar de obtener información certera y confiable del paciente.
En Cuba se han desarrollado aplicaciones para este SO de código abierto. En [2] se presenta el desarrollo de un sistema inalámbrico usando dispositivos Android para asistir a personas discapacitadas motoras y débiles visuales, usando los sensores de un Smartphone, el protocolo de transmisión Bluetooth v4.0, y un Arduino controlado por una aplicación (APK, del inglés Android Aplication Package) para accionar remotamente, equipos y sistemas de una vivienda: luces, aire acondicionado, apertura de puertas y equipos electrodomésticos. La implementación de una mini-lengua electrónica portátil controlada por un teléfono inteligente para el reconocimiento de muestras de leche fue propuesta en [3]. La aplicación se realizó en el entorno de desarrollo Android Studio.
En [4] se proponen dos aplicaciones que emplean las posibilidades internas del hardware de dispositivos móviles: acelerómetro y micrófono para desarrollar un podómetro y un analizador de voz, respectivamente. Las aplicaciones anteriores usan los sensores disponibles en los dispositivos móviles, tales como micrófonos, acelerómetros y cámaras, pero no se han reportado en nuestro país herramientas hardware ni software, soportadas en dispositivos inalámbricos con el SO Android para monitorización ambulatoria de la señal de ECG en múltiples escenarios de diagnóstico. De esta forma, el objetivo de este trabajo es desarrollar y evaluar un sistema inalámbrico portátil para monitorizar la señal de ECG usando dispositivos con este SO.
El trabajo se organiza como sigue. En el apartado 2, se presenta la arquitectura del sistema desde los puntos de vista electrónico y por capas según el modelo TCP/IP. Se explica, en detalles, el protocolo de la capa de aplicación propuesto en este trabajo y la aplicación realizada para el dispositivo Android. Finalmente se describe el algoritmo de detección de puntos R utilizado, la obtención de la serie RR y el cálculo de algunos indicadores que de esta se derivan. En el apartado 3 se mostrará la implementación hardware y software del sistema desarrollado, presentando la forma de utilizar la aplicación "Cardioplus 3.0" que reside en el cliente. Luego se explica la metodología experimental utilizada para la puesta a punto de la comunicación entre el servidor y el cliente. Finalmente se presentan los resultados obtenidos para cada una de las metodologías utilizadas y la forma de comprobar los algoritmos de procesamiento, utilizando el Matlab 2013.
2.- ARQUITECTURA DEL SISTEMA PROPUESTO
La arquitectura general del sistema desarrollado (figura 1) está compuesta por dos partes: dispositivo que actuará como servidor ubicado en el paciente y el dispositivo que actuará como cliente.
El servidor tiene las funciones siguientes: (a) medir y acondicionar la señal de ECG del sujeto, y (b) transmitirla hacia el cliente a través del módulo de comunicaciones inalámbricas (MCI) ESP8266, el cual contiene un microcontrolador que gestiona todo el proceso de adquisición y transmisión. El cliente tiene la función de recibir, a través del módulo Wi-Fi integrado en el dispositivo móvil (con SO Android) la señal de ECG transmitida, visualizarla (en tiempo real), realizar un procesamiento de esta (off-line) y finalmente mostrar al usuario los resultados obtenidos.
La arquitectura por capas, siguiendo el modelo TCP/IP embebido en el MCI se muestra en la figura 2. En la capa de aplicación se propuso un protocolo de comunicación entre el cliente y el servidor, así como el formato de los mensajes intercambiados entre estos. A este protocolo se le denominó por las siglas RCG incluidas en la frase: "Recepción de eleCtrocardioGrama". La unidad de dato de protocolo (PDU) de esta capa se le denominó "PDU Aplicación". En la capa de transporte el protocolo empleado fue el protocolo UDP cuya PDU es "Datagrama UDP". En la capa Internet fue empleado el protocolo IP, cuya PDU es "Paquete IP" y, por último, se escogió el estándar 802.11n en la capa de Acceso a la Red siendo finalmente la "Trama 802.11n" la que se transmite o recibe.
2.1.- SERVIDOR: DISEÑO HARDWARE
2.1.1.- PROTECCIÓN CONTRA DESFIBRILADORES
Los desfibriladores son dispositivos médicos que aplican descargas eléctricas al paciente para intentar revertir posibles arritmias cardíacas que son potencialmente malignas. Estas descargas de tensión son tan elevadas que pueden dañar el sistema de medida conectado al paciente. Para evitar esto en el sistema desarrollado, el primer bloque lo forma el circuito de protección contras sobretensiones que está compuesto por 4 elementos no lineales del tipo SP724 cuyo encapsulado se muestra en la figura 3. Estos elementos soportan tensiones inversas pico de hasta 8 kV y corrientes pico de 2 A.
2.1.2.- ACONDICIONAMIENTO DE LA SEÑAL DE ECG AMBULATORIA
La etapa de acondicionamiento de la señal de ECG constituye el segundo bloque del sistema (figura 4). Los electrodos se colocan en la piel del paciente, en localizaciones predeterminadas de manera universal. En este trabajo se emplea una derivación 2 modificada en la que se colocó un primer electrodo en el hombro derecho (polo negativo) en lugar del brazo derecho, un segundo electrodo en el cuarto espacio intercostal izquierdo (polo positivo) en lugar de la pierna izquierda y el electrodo de referencia (VR) en el abdomen inferior derecho formando un triángulo isósceles con los electrodos anteriores.
La utilización de electrodos para poder medir esta señal implica la aparición de un potencial de contacto del electrodo del orden de 100 mV, que es mucho mayor que la amplitud de la señal de ECG (≈ 5 mV). En situaciones de reposo del paciente, este potencial de contacto es una tensión casi continua. No obstante, siempre existen variaciones de baja frecuencia, debidas a la respiración y a otras variaciones de la interfaz electrodo-piel, que se suman a la señal de ECG medida. La forma habitual de eliminarlas es filtrar paso-alto a la señal adquirida. En este bloque es donde se amplifica y se realiza dicho filtrado, usando la estructura propuesta en [5] la cual consta de un filtro pasa-alto diferencial pasivo a la entrada del amplificador de instrumentación integrado AD627 al cual, al mismo tiempo se le sustrae, por su terminal de referencia, la integral de la propia tensión de salida (A1) del AD627, lo cual equivale a un acoplamiento entrada-salida pasa-alto.
La salida del AD627, cuya ganancia es de 1005, se acopla a un filtro pasa-bajo de segundo orden con realimentación múltiple (A2) y ganancia unitaria. Los voltajes de referencia VR y Vref son obtenidos a partir de un divisor de tensión con el amplificador A3. La respuesta en frecuencia del conjunto es de 0,67 Hz a 40 Hz. El esquema mostrado en la figura 1 se adaptó de uno previamente usado para transmitir el ECG de forma analógica mediante FM de banda estrecha [6].
2.1.3.- MÓDULO Wi-Fi
El tercer bloque corresponde al MCI (ESP8266 NodeMCU) que contiene a un chip Wi-Fi que funciona mediante el modelo TCP/IP y que incluye un microcontrolador (Tensilica L106) para gobernar dicho modelo y el software necesario para la conexión 802.11. Dispone de entradas/salidas digitales de propósito general (GPIO), así como un conversor analógico digital de 10 bits. Además, se puede programar directamente con el entorno de desarrollo de Arduino. En la figura 5(a) se puede observar un ejemplar de este módulo y en la figura 5(b), su distribución de terminales.
En este diseño, los terminales de interés son: ADC0 (entrada analógica), GND (referencia) y Vin (alimentación). Con el fin de lograr una mayor eficiencia de la batería se analizó el consumo de corriente del módulo en transmisión y recepción en cada uno de los estándares 802.11 que este soporta. La Tabla 1 resume este comportamiento.
2.1.4.- DIAGRAMA ELÉCTRICO
En la figura 6 se muestra el diagrama eléctrico propuesto para el servidor, donde se puede observar cada uno de los elementos descritos anteriormente. Para alimentar el circuito, se utilizó una batería con un valor nominal de 5 V (VCC) y una capacidad de corriente de 1720 mAh.
El MCI puede ser programado utilizando los tradicionales comandos AT o mediante funciones en el lenguaje de la plataforma Arduino usando el entorno de desarrollo integrado (IDE) de Arduino. En este trabajo se optó por este último por ser más simple de usar que los comandos AT.
2.2.- SERVIDOR: DISEÑO SOFTWARE
2.2.1.- PROTOCOLO PROPUESTO
El protocolo RCG propuesto para la capa de aplicación está basado en la arquitectura cliente-servidor. Su objetivo es establecer la forma en que interactuarán el servidor y el cliente así como definir el contenido y formato de las solicitudes y respuestas entre estos. El cliente se conecta al servidor desde el socket conformado por el puerto: 8080 y dirección IP: 192.168.4.2 (asignada por código) y hace la solicitud a este, que siempre está escuchando las peticiones, por el socket conformado por el puerto 2390 y dirección IP: 192.168.4.1 (asignada por defecto). Una vez establecida la conexión y cuando el cliente lo solicite, el servidor comienza la transmisión de los mensajes o la detiene. Tanto el cliente como el servidor interactúan entre sí a través de sus correspondientes buffers de transmisión y de recepción, de 512 bytes cada uno.
Cuando el cliente envía el comando: "Cmnzr" (Comenzar transmisión de datos) el servidor realiza las siguientes operaciones: (a) Habilita la interrupción del Timer para garantizar una frecuencia de muestreo del ECG de 100 Hz, (b) Conforma, cada 1 s (100 muestras de la señal de ECG), la unidad de datos "PDU Aplicación" mostrada en la figura 7 y la transmite, (c) Repite esta operación hasta que reciba una solicitud de detención por parte del cliente. Cuando el comando enviado por el cliente es "Dtnr" (Detener medición) el servidor deshabilita la interrupción del Timer.
La PDU tiene una longitud total de 302 bytes y está compuesta por los siguientes campos:
Valor leído: campo de longitud fija (dos bytes) que contiene cada muestra de la señal de ECG digitalizada por el conversor A/D (ADC0).
Separador: campo de longitud fija (un byte) que contiene el carácter ":" que actúa como separador para indicarle al cliente donde comienza y termina una muestra de la señal.
Mdr (Marcador): campo de longitud fija (dos bytes) que representa el orden en el que el servidor va transmitiendo las PDUs y por tanto el orden en el que se deberían recibir, procesar y graficar por el cliente. Por ejemplo, si el tiempo de monitoreo es de 1 min, entonces este campo contendrá valores desde 1 a 60.
2.2.2.- DIAGRAMA DE FLUJO
En la figura 8 se presenta el diagrama de flujo del software del servidor.
El primer paso consiste en inicializar las variables que serán utilizadas en todo el programa. Luego, se configura la red creada por el MCI, es decir: (a) se declara el nombre de la red, la contraseña y el canal, (b) se declara el módulo como un punto de acceso, (c) se definen los sockets, y (d) se declaran el protocolo de la capa de transporte utilizado y el estándar 802.11 escogido.
En el siguiente bloque del diagrama de flujo es resaltada la variable "flag" porque es la encargada de indicarle al compilador del IDE de Arduino los segmentos de código que debe ejecutar. Una vez inicializadas todas las variables y configurado el MCI se invoca al método: "Cnctd( )" que se encarga de verificar si existe algún cliente conectado a la red creada. Mientras esto no ocurra el programa principal se mantiene en un bucle, en cuanto se conecta el cliente, sale del bucle y se espera alguna solicitud. El método: "Solicitud ( )" lee el buffer de recepción del MCI e interpreta la petición del cliente, en caso de que esta sea la de transmisión: "Cmnzr" se verifica el valor de "flag" y si este es cero se procede a habilitar la interrupción "INT" del Timer del MCI y luego se cambia el valor de "flag" a uno. Análogamente si la petición es de detener la transmisión: "Dtnr", se verifica el valor de flag, de ser igual a uno, se deshabilita la interrupción del Timer y se cambia el valor de "flag" a cero. Lo anterior es para evitar que las interrupciones del Timer se habiliten o deshabiliten más de una vez, con cada solicitud, debido a las características del método loop ( ) del IDE de Arduino, que por defecto, es un bucle infinito.
La interrupción del Timer del MCI es utilizada con el fin de garantizar la frecuencia de muestreo de la señal de ECG (100 Hz), interrumpiendo la ejecución del programa principal cada 10 ms. En la rutina de interrupción "INT" se muestrea el valor a la entrada del ADC, y su versión digitalizada se agrega secuencialmente al campo: "Valor leído" y el separador correspondiente en la posición de la PDU según se explicó en la figura 7. Luego, se verifica si el número de muestras es igual a 99, la variable encargada de esta función es: "contM", si esta verificación da como resultado false (No), se incrementa en uno "contM" y se retorna al programa principal. De lo contrario se agrega el marcador (que inicialmente es cero) en el campo: "Mdr" de la PDU y se transmite al cliente. Esto último se realiza con el fin de que el cliente pueda verificar el orden en que debe procesar y graficar los datos recibidos. Hecho esto, se reinicia a cero la variable: "contM", se incrementa la variable: "Mdr" en uno y se retorna al programa principal. Estas últimas acciones dejan preparadas las condiciones para conformar la próxima PDU.
A continuación, se explicarán los aspectos más relevantes del código que se corresponde con el bloque: "Configuración del MCI" del programa principal.
Para declarar el nombre de la red (ssid, en inglés: service set identifier), la contraseña (password) y el canal (channel) se usa la instrucción: "Wifi.softAP(ssid password,channel);", donde ssid es: "ESP8266_Wifi", password es "Cardioplus" y channel es: "1". Se usó el canal 1 porque es, de los posibles 14 canales a seleccionar entre 2,4 GHz y 2,5 GHz, el que menos solapamiento espectral puede sufrir del resto de canales. El fabricante recomienda también, usar los canales 6 y 11.
Para configurar el MCI como punto de acceso se usa la instrucción: "Wifi.mode(WIFI_AP);". Para configurar los sockets se usa la función: "begin(localPort)" que toma como parámetro el puerto definido para el servidor (2390) y en conjunto con la dirección IP: 192.168.4.1 (asignada por defecto) conforman el socket a través del cual escuchará las peticiones del cliente, la forma de implementar esto es mediante la sentencia: "Udp. begin(localPort);". La función "beginPacket(ip,8080)" especifica el socket al cual el MCI debe enviar las respuestas, la sentencia que permite implementar este socket es: "Udp.beginPacket(ip,8080);".
La forma de definir el protocolo UDP de la capa de transporte es incluyendo la librería: "WiFiUdp.ℎ" e instanciarla usando la sentencia: "WiFiUDP Udp;". Asimismo, para definir el estándar 802.11 se utilizó el método: "WiFi.setPhyMode( PHY_MODE_11N );". El software desarrollado para el cliente tiene sus bases en el concepto de "Actividad" y fue implementado en el entorno de desarrollo integrado (IDE) Android Studio, buscando ante todo la comodidad del usuario mediante un esquema de funcionamiento simple e intuitivo.
2.3.- CLIENTE: DISEÑO SOFTWARE
2.3.1.- ESQUEMA GENERAL DE LA APLICACIÓN CARDIOPLUS 3.0
Una actividad está compuesta por una interfaz de usuario (layout) que tiene asociada una clase con varios métodos que pueden ser utilizados o no por el desarrollador. En los layouts, mediante el lenguaje de programación HTML, es donde se colocan los diferentes componentes que brinda el entorno de desarrollo (botones, listas, imágenes, gráficas, textos etc.) y la clase basada en el lenguaje de programación Java garantiza la funcionalidad de cada componente.
La figura 9 muestra la secuencia lógica seguida por las actividades y las funciones que realizan dentro de la aplicación.
Actividad_1 ("Presentacion"): Es la primera actividad con la que interactúa el usuario. Se encarga de identificar la aplicación y garantizar el acceso a los servicios Wi-Fi del cliente. Si la Wi-Fi del dispositivo está activada luego de tres segundos se lanza la próxima actividad, de lo contrario se le informa al usuario que será activada y una vez recibida la confirmación de este, se activa y lanza la próxima actividad.
Actividad_2 ("WiFiList"): En esta actividad se escanean las redes Wi-Fi alrededor del cliente y el resultado es mostrado en una lista en la cual el usuario debe elegir la red "ESP8266_Wifi", la clase Java asociada a la interfaz gráfica de esta actividad garantiza la conexión entre el cliente y el servidor y una vez hecho esto se arranca la próxima actividad.
Actividad_3 ("Graficar"): En esta actividad se le brinda al usuario la posibilidad de definir el tiempo de monitorización. Los botones: "Comenzar" (C) y "Detener" (D) regulan la interacción con el servidor mediante el envío de las solicitudes: "Cmnzr" y "Dtnr". Por otro lado el boton: "Analizar" (A) se encarga de lanzar la próxima actividad. Además cuenta con dos graficas una para graficar la señal recibida en tiempo real y otra para mostrar la detección de los puntos R una vez culminado el tiempo de monitorización seleccionado por el usuario.
Actividad_4 ("Resultados"): Es la última actividad de la aplicación y se encarga de visualizar la serie RR de la señal ECG y de esta la diferencia entre el máximo y mínimo tiempo entre latidos.
2.3.2.- PROCESAMIENTO DIGITAL DE LA SEÑAL DE ECG
La figura 10 muestra la secuencia en la que se realizan las operaciones de procesamiento digital en el cliente (dispositivo Android). Como primer paso se detectan los puntos R (off-line) de la señal recibida, luego se obtiene la serie RR y por último se calculan los indicadores: "Frecuencia cardíaca media" y "Desviación RR máxima".
Detección de la onda R
La detección de la onda R es la base para el proceso de segmentación de señales ECG, ya que, generalmente, es la componente de mayor amplitud y pendiente, lo que la convierte en la más distintiva del ECG. Existen diversos métodos que persiguen este fin [8] para su aplicación en diferentes escenarios de monitorización. Entre los métodos más usados para su uso en dispositivos portables e inalámbricos alimentados a batería [9] se encuentran los algoritmos basados en filtrado y cálculo de la primera y segunda derivada de la señal ECG [10], debido a su bajo costo computacional y alta velocidad. El detector empleado en este trabajo se basa en el uso de filtrado y cálculo de la segunda derivada [10], al cual se le han incorporado pequeños detalles de implementación. A continuación, se explicarán los pasos de este detector, ilustrando su funcionamiento con una de las señales adquiridas con el sistema desarrollado (figura 11(a)). Debido a que en la distribución espectral de la señal de ECG, la onda R se encuentra alrededor de los 10 Hz [11], el primer paso del algoritmo realiza un filtrado pasa banda entre 5 y 15 Hz (Butterworth, orden 2, unidireccional) con el objetivo de realzar la onda R y atenuar las restantes ondas como muestra la figura 11(b). La señal obtenida en el paso anterior se deriva y se filtra pasa alto (Butterworth, orden 2, unidireccional) a una frecuencia de corte de 0,3 Hz para realzar aún más la información de la onda R. A continuación, se normaliza la señal dividiéndola entre su máximo valor, obteniéndose una señal entre +1 y -1. El resultado se muestra en la figura 11(c). La señal anterior se vuelve a derivar, obteniéndose la señal mostrada en la figura 11(d). Los picos positivos de la señal anterior corresponden a los candidatos a puntos R (picos de la onda R) en la señal original. Los puntos R definitivos (figura 11(e)) se buscarán, en la señal original, como los máximos locales existentes en las ventanas delimitadas por los instantes de tiempo que indican los picos negativos de la señal de la figura 11(d).
Análisis de la serie RR
Una vez realizada la detección de los puntos R (figura 12(a)) se obtiene mediante la expresión 1, la serie temporal RR (figura 12 (b)) para cada latido "n", que da cuenta de las diferencias temporales entre latidos consecutivos.
Para analizar la serie RR obtenida se calcularon los indicadores: (a) intervalo RR medio, (b) frecuencia cardíaca media (FC media) y (c) Desviación RR máxima, mediante las expresiones (2), (3) y (4), respectivamente, donde N es el número total de latidos que componen la serie RR obtenida, que dependerá del tiempo de adquisición definido por el usuario. La Desviación RR máxima da una medida de la variabilidad de la frecuencia cardiaca.
3.- RESULTADOS EXPERIMENTALES
En este apartado se muestra la implementación hardware y software del sistema desarrollado, presentando la forma de usar la aplicación "Cardioplus 3.0" que reside en el cliente. Luego se explica la metodología experimental utilizada para la puesta a punto de la comunicación entre el servidor y el cliente. Finalmente se presentan los resultados obtenidos para cada una de las metodologías utilizadas y la forma de comprobar los algoritmos de procesamiento, utilizando el Matlab 2013.
3.1.- HARDWARE
En la figura 13(a) se muestra el sistema implementado, el cual consta de las siguientes partes:
Computador portátil ASUS usado para la edición, compilación y programación del programa residente en el servidor así como para la visualización de la señal de ECG digitalizada en banda base.
Cable de conexión USB de tipo Micro-B, mostrado en la figura 13(b) entre el módulo ESP8266 NodeMCU y el computador portátil.
Electrodos de plata-cloruro de plata (Ag-AgCl) marca TCE usados para la medida de la señal de ECG (figura 13(c)).
Tableta SAMSUMG con SO Android que constituye el cliente, y cuya función es la visualización y el procesamiento/análisis de la señal de ECG.
Placa de pruebas o protoboard: Incluye la etapa frontal de acondicionamiento mostrada en la figura 13(d) y el módulo ESP8266 NodeMCU, ambos correspondientes al servidor.
El dispositivo que usa el paciente funciona con una fuente de alimentación interna de tipo flotante, o sea, a baterías, sin contacto eléctrico directo con el corazón por lo que, de acuerdo a la norma internacional NTC-IEC 60601-1, cumple las normas de seguridad eléctrica exigidas y se clasifica como un equipo de Clase III, tipo BF.
3.2.- SOFTWARE
En este apartado se muestra la aplicación "Cardioplus 3.0" desarrollada para este trabajo, mostrando las diferentes actividades que van apareciendo desde su ejecución inicial hasta la visualización de los indicadores diagnósticos.
El icono de la aplicación se muestra en el círculo rojo de la figura 14(a). Una vez que el usuario se dispone a utilizarla, aparece durante tres segundos, la actividad denominada: "Presentacion" mostrada en la figura 14(b) y a continuación, si los servicios Wi-Fi del cliente están activados, se mostrará automáticamente la segunda actividad: "WifiList" como se muestra en la figura 14(c). En este caso (Wi-Fi activada) se escanean y muestran las redes alrededor del usuario y este debe escoger la que lleva por nombre "ESP8266_Wifi" lo que permitirá que el cliente se conecte al servidor y se muestre la tercera actividad: "Graficar". Esta actividad mostrada en la figura 14(d) se inicia presentando al usuario la posibilidad de escoger el tiempo que va a durar la medición, lo cual se valida con el botón "Confirmar" y luego muestra la interfaz gráfica de usuario mostrada en la figura 14(e). Seleccionando el botón "Comenzar" se envía la solicitud al servidor para que este empiece a transmitir, en tiempo real, la señal de ECG, la cual se irá mostrando en la gráfica superior titulada: "Señal de ECG". Una vez transcurrido el tiempo de medición, automáticamente, se detectan y se visualizan los puntos R en la gráfica inferior titulada: "Detección de puntos R". Esto último permite que el usuario pueda comprobar, de forma visual, el funcionamiento del algoritmo de detección utilizado y elegir entre repetir la medición pulsando nuevamente el botón: "Comenzar" o pasar a la siguiente actividad, pulsando el botón: "Analizar" mostrado en la figura 14(e). A partir de este punto, se ejecuta la cuarta y última actividad titulada: "Resultados", que como su nombre lo indica, muestra la serie RR, los indicadores calculados como se muestra en la figura 14(f) y almacena la señal recibida en un archivo txt en la memoria interna del cliente.
3.3.- METODOLOGÍA DE EVALUACIÓN DEL SISTEMA
La evaluación del sistema se hizo según el esquema mostrado en la figura 15. En la posición 1 se verifica: la calidad de la señal recibida en el cliente, cuando se transmite una señal de tipo sinusoidal (inyectada al MCI). En la posición 2 se verifica el sistema completo con señales de ECG a la entrada.
3.3.1.- CONJUNTO ESP8266 - DISPOSITIVO ANDROID
Para la puesta a punto y comprobación de la comunicación entre el módulo Wi-Fi y el cliente, se emplearon señales sinusoidales (por sus características morfológicas bien definidas) obtenidas de un generador, el cual proporciona una señal sinusoidal simétrica con respecto a cero con amplitudes dentro del rango de 30 mV a 30 V (figura 16 (a)). Como el módulo Wi-Fi solamente puede adquirir señales positivas es necesario agregar una componente de DC a la señal del generador, de forma tal que la señal sea simétrica con respecto a esa componente. Para conseguir esto, se utilizó una batería cuyo valor de tensión V0 fuese igual a la mitad de la tensión de alimentación (figura 16 (b)). Una vez conseguido esto hay que tener en cuenta que el máximo valor de tensión que soporta el módulo por su terminal ADC es de 3,6 V por lo que el máximo valor de la señal resultante no debe exceder este. Para comprobar que las señales utilizadas están dentro del rango correcto (0 V - 3,6 V) se emplea un osciloscopio que además permite ver las oscilaciones de frecuencia. Además se creó dentro de la aplicación del cliente una nueva actividad llamada: "Prueba" sustituyendo temporalmente la actividad: "Graficar", en la cual se visualizó la señal recibida. Esta actividad sigue los mismos principios de transmisión/recepción que la actividad "Graficar", diferenciándose solamente en la interfaz gráfica y obviando toda la parte de procesamiento.
Para verificar la calidad de la señal recibida versus la señal transmitida, se aplicó a la entrada del ADC del MCI una señal sinusoidal de 40 Hz y se programó el Timer del MCI para muestrear dicha señal a una frecuencia de 100 Hz. En la pantalla del cliente se comprueba visualmente la calidad de la señal recibida.
3.3.2.- SISTEMA COMPLETO
Una vez comprobado que el sistema funcionó correctamente con las señales sinusoidales, el próximo paso fue realizar las pruebas con señales de ECG obtenidas de 7 voluntarios. En este caso el interruptor de la figura 15 se encuentra en la posición número dos (figura 17). La metodología de evaluación fue la siguiente:
Verificar visualmente la similitud entre la señal transmitida y recibida: Para esto se integró al código del servidor, la posibilidad de visualizar (en tiempo real), la señal de ECG a la entrada del ADC, en la computadora que contiene al monitor serie del IDE de Arduino.
Verificar que los valores de los parámetros "Frecuencia cardíaca media" y "Desviación RR máxima" mostrados en la pantalla del cliente son correctos: Para esto, la señal de ECG visualizada en el punto anterior es guardada en un archivo txt y posteriormente, este archivo se lee con el programa Matlab, se obtiene la serie RR correspondiente, se calculan los parámetros: " Frecuencia cardíaca media " y "Desviación RR máxima" de dicha serie y se comparan con los mostrados en la pantalla del cliente.
Calcular (usando la función xcorr de MATLAB) el máximo coeficiente de correlación cruzada (CCM) entre dos segmentos de 300 muestras que son homólogos en las señales de ECG transmitida y recibida. Los segmentos homólogos son los que contienen a las muestras que ocupan las mismas posiciones temporales en ambas señales. Este coeficiente se obtuvo para una señal de cada voluntario.
Verificar, de forma cualitativa, el funcionamiento global de la aplicación durante la monitorización de los voluntarios: Para esto, se observaron las pantallas que garantizan la correcta visualización de la señal de ECG, la detección de los puntos R, la visualización de la serie RR y los indicadores obtenidos para ese sujeto.
3.4.- RESULTADOS OBTENIDOS
3.4.1.- CONJUNTO ESP8266 - DISPOSITIVO ANDROID
En este apartado se muestran los resultados obtenidos siguiendo la metodología de evaluación del conjunto ESP8266 (NodeMCU) -Dispositivo Android, descrita en el apartado 3.3.1. En la figura 18(a) se muestra la señal sinusoidal de 40 Hz en banda base inyectada al MCI y en la figura 18(b) se muestra la señal recibida en el receptor para una frecuencia de muestreo de 100 Hz. Como se observa, existe una elevada similitud morfológica entre la señal transmitida y recibida.
3.4.2.- SISTEMA COMPLETO
En la Tabla 2 se muestran que los máximos coeficientes de correlación (CCM) obtenidos para cada uno de los segmentos homólogos de la señal de ECG, de los siete sujetos son elevados, lo cual evidencia la gran similitud entre las señales transmitidas y recibidas. Como ambos segmentos son prácticamente iguales, el máximo valor del CCM se obtuvo para la muestra central.
En la figura 19(a) se observa un segmento de la señal de ECG transmitida y la figura 19(b) muestra un segmento de la señal recibida, correspondiente a uno de los voluntarios. Estos segmentos ampliados se pueden apreciar en las figuras 19(c) y (d), respectivamente.
Como se puede apreciar, existe total similitud entre la señal transmitida y recibida por lo que la comunicación inalámbrica se realiza satisfactoriamente. En la figura 20 se muestran la gráfica en Matlab de la serie RR obtenida del archivo txt (izquierda) y de la serie RR obtenida de la señal ECG recibida en el cliente.
Se puede apreciar que la serie RR y los indicadores son similares en ambos extremos de la comunicación, con lo que se concluye que los parámetros calculados y visualizados en el cliente son correctos. En la figura 21(a) se muestra la monitorización realizada a otro voluntario durante un minuto.
En la figura 21(a) se puede observar la señal de ECG en color verde y la detección de sus puntos R resaltados en rojo y concatenados con el fin de facilitar la detección visual de errores por el usuario. En la figura 21 (b) se observan los resultados de la obtención de la serie RR y el cálculo de los indicadores.
4.- CONCLUSIONES
En este trabajo se diseñó, construyó y evaluó un sistema de monitorización inalámbrico de la señal de ECG que visualiza la información final en una tableta o teléfono inteligente basado en el SO Android. El diseño electrónico del dispositivo servidor fue robusto y evidenció: una correcta protección contra desfibriladores externos y una excelente calidad de la señal de ECG en banda base.
El diseño software del dispositivo cliente garantizó exitosamente la visualización y el filtrado digital de la señal de ECG en tiempo real, así como la visualización de: los puntos R (previa detección), de la serie RR (previa obtención) y de los dos indicadores para el diagnóstico (previo cálculo), esto último con una demora menor de dos segundos.
Se verificó experimentalmente el correcto funcionamiento del protocolo RCG, propuesto para la capa de aplicación del sistema. La evaluación global del sistema propuesto con 7 voluntarios evidenció, desde los puntos de vista cualitativo y cuantitativo, una mínima distorsión morfológica entre la señal transmitida por el servidor y la recibida en el cliente. Este sistema constituye una alternativa para ampliar los servicios de salud de nuestro país y aumentar la calidad de vida de las personas de la tercera edad, u otras que presentan problemas para la locomoción (temporal o permanente).