Introducción
En la primera parte de este trabajo se abordaron los fundamentos fisiológicos del electrocardiograma, el principio de funcionamiento del módulo AD8232 y el desarrollo de un sistema capaz de adquirir señales eléctricas provenientes de la actividad cardíaca. Sin embargo, en un contexto donde la conectividad se ha convertido en un componente esencial de la atención médica moderna, surge una pregunta natural: ¿es posible supervisar el estado general del corazón de una persona desde cualquier lugar del mundo utilizando únicamente tecnologías de bajo costo?
La respuesta es afirmativa, aunque con ciertas limitaciones inherentes a las plataformas de Internet de las Cosas (IoT). Los servicios de computación en la nube disponibles para dispositivos embebidos permiten transmitir variables fisiológicas a través de internet y consultarlas desde teléfonos inteligentes, tabletas o computadores personales. No obstante, estas plataformas no fueron concebidas para una transmisión continua de señales biomédicas de alta resolución temporal, como un electrocardiograma clínico adquirido a cientos de muestras por segundo.
Por esta razón, el sistema propuesto en esta segunda parte no pretende sustituir equipos de diagnóstico médico ni reproducir con exactitud la morfología completa de un electrocardiograma convencional. Su propósito es ofrecer una herramienta de supervisión remota capaz de evidenciar la presencia de actividad cardíaca, verificar que el corazón continúa latiendo y proporcionar una representación simplificada de la señal eléctrica captada por el sensor.
La arquitectura desarrollada integra un microcontrolador ESP32 con capacidades de conectividad WiFi y una plataforma de servicios en la nube basada en Arduino IoT Cloud, permitiendo que la información adquirida por el sensor pueda ser visualizada a través de internet mediante paneles de monitoreo accesibles desde cualquier ubicación geográfica. De esta manera, familiares, cuidadores o personal de salud pueden realizar una observación básica del comportamiento cardíaco del usuario sin necesidad de encontrarse físicamente junto a él.
Aunque la velocidad de actualización de las plataformas IoT impide representar de manera fiel los detalles de la señal electrocardiográfica, la solución presentada constituye un primer acercamiento al desarrollo de sistemas de telemetría biomédica de bajo costo y abre la posibilidad de incorporar en el futuro técnicas de transmisión más eficientes, almacenamiento histórico e incluso algoritmos de inteligencia artificial orientados a la detección temprana de anomalías cardíacas.
Creación de una cuenta en Arduino IoT Cloud
El primer paso consiste en registrarse en la plataforma de Arduino IoT Cloud y acceder al entorno de desarrollo disponible en línea. Posteriormente se debe crear un nuevo dispositivo (Thing) y asociarlo con la tarjeta ESP32 que será utilizada en el proyecto.
Durante este proceso, la plataforma solicitará las credenciales de acceso a la red inalámbrica, específicamente el nombre de la red WiFi (SSID) y su respectiva contraseña. Estos parámetros serán almacenados automáticamente dentro del código generado por Arduino IoT Cloud, permitiendo que el ESP32 establezca conexión con Internet de manera autónoma al energizarse.
Creación de variables en la nube
Arduino IoT Cloud utiliza variables sincronizadas entre el dispositivo físico y la plataforma web. Estas variables representan la información que será transmitida y visualizada en tiempo real.
Para este proyecto se creó la variable denominada Corazon, configurada así.
La variable Corazon almacena los valores provenientes del sensor AD8232, permitiendo representar de manera simplificada la actividad eléctrica del corazón dentro de un panel gráfico de Arduino IoT Cloud.
Instalación del Arduino Cloud Agent y acceso al código del proyecto
Una vez configurado el dispositivo y definidas las variables de intercambio de datos, el Arduino IoT Cloud habilita automáticamente una pestaña llamada Sketch, en el cual se genera el programa base encargado de establecer la comunicación entre el ESP32 y la plataforma en la nube.
Sin embargo, para cargar directamente este programa sobre la tarjeta de desarrollo a través del puerto USB, es necesario instalar una aplicación auxiliar denominada Arduino Cloud Agent.
Una vez instalado y ejecutado el Arduino Cloud Agent, el usuario podrá compilar y transferir el programa al ESP32 directamente desde el navegador, eliminando la necesidad de utilizar el entorno de desarrollo tradicional de Arduino IDE.
Carga del programa al ESP32 y verificación de la conexión con Arduino IoT Cloud
Después de instalar el Arduino Cloud Agent y acceder a la pestaña Sketch, es posible compilar y transferir el programa generado automáticamente por el Arduino IoT Cloud hacia la tarjeta ESP32 mediante el puerto USB del computador.
Recuerde que antes de subir el programa a la placa ESP32 debe presionar el botón BOOT de la placa antes que comience a hacer upload.
Una vez finalizado el proceso de programación, se recomienda abrir el Monitor Serie integrado en la plataforma para verificar el correcto funcionamiento del dispositivo y supervisar el proceso de conexión a la red inalámbrica y a los servidores de Arduino IoT Cloud.
La aparición de estos mensajes confirma que el microcontrolador se encuentra autenticado en la plataforma y preparado para intercambiar información con las variables definidas en Arduino IoT Cloud.
Programación del ESP32 para la transmisión de datos hacia Arduino IoT Cloud
Una de las ventajas más importantes de esta plataforma es la generación automática del programa encargado de establecer la comunicación entre el dispositivo y la plataforma en la nube. Una vez creado el Thing y definidas las variables asociadas, el entorno produce un Sketch base que incorpora las líneas necesarias, las credenciales de autenticación y las rutinas de conexión con los servidores de Arduino.
El programa comienza con una descripción del proyecto y de las variables definidas por el usuario:
float corazon;
Esta variable representa la magnitud que será sincronizada entre el ESP32 y el panel de monitoreo alojado en la nube.
Posteriormente incluye el archivo thingProperties.h, el cual es creado automáticamente por el Arduino IoT Cloud y contiene información relacionada con las credenciales de acceso a la red WiFi, identificadores del dispositivo, parámetros de autenticación y la declaración de las variables empleadas por el sistema.
#include “thingProperties.h”
Durante la función setup(), se inicializa la comunicación serial a una velocidad de 115200 baudios y se configura la resolución del convertidor analógico-digital que es aquel que recibe la señal del corazón permitiendo valores comprendidos entre 0 a 4095.
Serial.begin();
analogReadResolution(12);
Seguidamente se ejecuta la función initProperties(), encargada de inicializar las variables asociadas al Thing, y se establece la conexión con Arduino IoT Cloud mediate la instrucción:
ArduinoCloud.begin(ArduinoIoPreferredConnection);
Arduino IoT Cloud utiliza internamente el protocolo MQTT sobre una conexión segura para intercambiar información entre el dispositivo y la plataforma remota.
En el ciclo principal del programa se actualiza continuamente el estado de la conexión con la nube utilizando:
ArduinoCloud.update();
Posteriormente, el ESP32 adquiere una muestra del sensor del cprazón conectado al pin GPI035 del ESP32.
float analogValue = analogRead(35);
Corazon = analogValue;
El valor obtenido es asignado a la variable Corazon, la cual es transmitida automáticamente a Arduino IoT Cloud y puede visualizarse en tiempo real desde cualquier navegador con acceso a Internet.
Finalmente, la instrucción:
delay(10);
establece un intervalo aproximado de 10 milisegundos entre adquisiciones consecutivas.
Debe señalarse que, aunque el ESP32 es capaz de realizar conversiones analógicas a frecuencias considerablemente mayores, la plataforma Cloud de Arduino presenta restricciones de velocidad con las que las mismas variables son almacenadas y representadas gráficamente. En consecuencia, el sistema desarrollado no busca reproducir con exactitud la morfología de un ECG clínico, sino proporcionar un mecanismo de supervisión remota que permita evidenciar la presencia de actividad cardíaca periódica y verificar que el corazón continúa generando impulsos eléctricos de manera sostenida.
Construcción del panel de monitoreo en Arduino IoT Cloud
Una vez verificada la comunicación entre el ESP32 y Arduino Cloud, el siguiente paso consiste en construir un panel de supervisión (Dashboard) que permita visualizar la información proveniente del sensor cardíaco desde cualquier dispositivo con acceso a internet.
Esta es la configuración del chart.
Resultados experimentales
La figura representa la señal obtenida mediate el sistema de monitoreo remoto implementado en Arduino Cloud. La información transmitida corresponde a los valores adquiridos por el conversor analógico-digital del ESP32 a partir de la salida del módulo AD8232, posteriormente enviados a la plataforma mediante el protocolo MQTT sobre una conexión segura.
Puede observarse la presencia de ciclos repetitivos con una periodicidad cercana a un segundo, indicando la existencia de actividad eléctrica cardíaca sostenida.
Es importante mencionar que la configuración del widget emplea una representación del tipo Spline junto con un mecanismo de agregación basado en el promedio de múltiples muestras (Average). Como consecuencia, la plataforma realiza un proceso de suavizado e interpolación de datos que modifica considerablemente la morfología original del electrocardiograma.
La imagen anterior muestra la transmisión inalámbrica de la variable Corazón y su representación gráfica en un teléfono inteligente mediante la aplicación móvil de Arduino IoT Cloud.
Este comportamiento resulta especialmente interesante en aplicaciones de telemetría biomédica de bajo costo, donde el objetivo principal no es realizar un diagnóstico electrocardiográfico detallado, sino proporcionar una herramienta sencilla que permita verificar a distancia que el corazón continúa generando actividad eléctrica de manera sostenida.












Sé el primero en comentar