Construya un sistema de ECG (electrocardiograma) IoT con un AD8232 + ESP32 para registrar la actividad eléctrica de su corazón

Las enfermedades cardíacas han sido una enfermedad importante en la población durante muchos años. Un estudio de la Organización Mundial de la Salud (OMS) también muestra que la mayoría de las personas mueren por enfermedades cardíacas. Por lo tanto, esta enfermedad no puede tomarse a la ligera; por ello, los dispositivos sanitarios y los sistemas de monitorización están diseñados para su seguimiento profesional.

Sabemos que estas enfermedades se pueden prevenir analizando y monitorizando la señal de ECG en la fase inicial. Por ello, decidí participar en este proyecto para empezar a monitorizar mi señal de ECG utilizando Ubidots IoT la plataforma de desarrollo.

En este artículo, implementaremos los pasos básicos para iniciar y ejecutar el monitor de frecuencia cardíaca AD8232. Luego, le mostraremos cómo conectarlo a su microcontrolador favorito y cómo crear visualizaciones utilizando una IoT plataforma

¿Qué es el AD8232?

El AD8232 es un pequeño y práctico chip que mide la actividad eléctrica del corazón. Esta actividad eléctrica puede expresarse mediante un ECG o un electrocardiograma. El electrocardiograma se utiliza para diagnosticar diversas enfermedades cardíacas.  (Más información: La hoja de datos se puede encontrar aquí)

El plan consiste en configurar la placa AD8232 para que detecte la señal de ECG y comience a generar la señal de salida. Esta señal de salida proporcionará aproximadamente 1,5 voltios, lo que produce una frecuencia de muestreo de 1k/segundo. Estas señales se enviarán por USB desde Arduino para que podamos comprobarlas mediante el monitor serie y Ubidots.

Sin nada más que decir ¡comencemos!

Requisitos

  • Cuenta Ubidots
  • Arduino Uno / Mega / Nano
  • Módulo de ECG (AD8232)
  • Electrodo de ECG - 3 piezas
  • Conector de electrodo de ECG - 3,5 mm
  • Cable de DATOS
  • Cables puente

Alambrado

Siga el diagrama y la tabla a continuación para comenzar a cablear los dispositivos necesarios:

Una vez que el hardware esté correctamente cableado, continuemos con la configuración del ESP32.

Configuración del ESP32 con Arduino IDE

Siga los pasos a continuación y luego podrá programar el ESP32 con el IDE de Arduino.

1. Haga clic en Archivo >Preferencias

2. En elURLs adicionales del administrador del tablero”, asigne la URL que se indica a continuación. Puede agregar varias URLs, separándolas con comas si es necesario.

https://dl.espressif.com/dl/paquete_esp32_index.json

3. Para guardar los cambios realizados, asegúrese de presionar el botón OK.

4. Ahora, añade la ESP32 en el IDE de Arduino. Para ello, haz clic en Herramientas> Placa > Administrador de placas.

5. En la barra de búsqueda, escribe “ESP32” e instala el paquete más reciente.

Subir código fuente

1. Con la configuración adecuada del ESP32 en el IDE de Arduino, cargue el siguiente código en la placa después de asignarle los parámetros necesarios.

  • WIFISSID: Su SSID de WiFi
  • CONTRASEÑA: Tu contraseña de WiFi
  • TOKEN: Tu Ubidots TOKEN
  • MQTT_CLIENT_NAME: Su propia cadena ASCII de 8 a 12 caracteres alfanuméricos.

Código fuente

Para consultar este código de muestra, así como otros IoT , consulte este repositorio.

/**************************************** * Incluir bibliotecas ****************************************/ #include<WiFi.h> #incluir<PubSubClient.h> #define WIFISSID "tu nombre de wifi" // Pon tu WifiSSID aquí #define PASSWORD "tu contraseña de wifi" // Pon tu contraseña de wifi aquí #define TOKEN "tu token" // Pon tu TOKEN de Ubidots#define MQTT_CLIENT_NAME "1234a5d6798" // Nombre del cliente MQTT, por favor ingresa tu propia cadena ASCII de 8-12 caracteres alfanuméricos; //debe ser una cadena ASCII aleatoria y única y diferente de todos los demás dispositivos /*************************************** * Definir Constantes *******************************************/ #define VARIABLE_LABEL "sensor" // Asignar la etiqueta de la variable #define DEVICE_LABEL "esp32" // Asignar la etiqueta del dispositivo #define SENSOR A0 // Establece el A0 como SENSOR char mqttBroker[] = "ubidots.com"; char payload[100]; char topic[150]; // Espacio para almacenar valores a enviar char str_sensor[10]; /*************************************** * Funciones auxiliares ****************************************/ WiFiClient ubidots; PubSubClient client(ubidots); void callback(char* topic, byte* payload, unsigned int length) { char p[length + 1]; memcpy(p, payload, length); p[length] = NULL; Serial.write(payload, length); Serial.println(topic); } void reconnect() { // Bucle hasta que nos volvamos a conectar while (!client.connected()) { Serial.println("Intentando conexión MQTT..."); // Intentar conectar if (client.connect(MQTT_CLIENT_NAME, TOKEN, "")) { Serial.println("Conectado"); } else { Serial.print("Error, rc="); Serial.print(client.state()); Serial.println("inténtalo de nuevo en 2 segundos"); // Espera 2 segundos antes de volver a intentarlo delay(2000); } } } /*************************************** * Funciones principales ****************************************/ void setup() { Serial.begin(115200); WiFi.begin(WIFISSID, PASSWORD); // Asigna el pin como ENTRADA pinMode(SENSOR, INPUT); Serial.println(); Serial.print("Esperando WiFi..."); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(""); Serial.println("WiFi conectado"); Serial.println("Dirección IP: "); Serial.println(WiFi.localIP()); client.setServer(mqttBroker, 1883); client.setCallback(callback); } void loop() { if (!client.connected()) { reconnect(); } sprintf(topic, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf(payload, "%s", ""); // Limpia la carga útil sprintf(payload, "{\"%s\":", VARIABLE_LABEL); // Agrega la etiqueta de la variable float sensor = analogRead(SENSOR); /* 4 es el ancho mínimo, 2 es precisión; el valor float se copia en str_sensor*/ dtostrf(sensor, 4, 2, str_sensor); sprintf(payload, "%s {\"value\": %s}}", payload, str_sensor); // Agrega el valor Serial.println("Publicando datos en Ubidots Cloud"); client.publish(topic, payload); client.loop(); delay(500); }

2. Verifica tu código en el IDE de Arduino. Para ello, en la esquina superior izquierda del IDE de Arduino verás elde la marca de verificación; presiónalo para verificar tu código.

3. Carga el código en tu “ESP32 Dev Kit”. Para ello, selecciona ella flecha derechaicono demarca de verificación.

4. Después de cargar el código, abra el Monitor Serial y verá cómo los dispositivos establecen la conexión a WiFi y al broker MQTT.

Vamos a configurar Ubidots

Vamos a configurar un Ubidotsde Dashboard. Para crearlo, ve a la Dashboard sección (Datos > Dashboard).

1. A continuación, pulse en “Añadir nuevo widget” y seleccione su widget:

2. Seleccione el tipo de widget que desea mostrar. En mi caso, elijo el “Gráfico de líneas”:

3. Luego, seleccione la variable que desea mostrar. Ubidots le permite personalizar el nombre del widget, el color, el periodo de datos que se mostrará y mucho más. Le invito a explorar todas las opciones para los diferentes tipos de widget. Para finalizar la creación del widget, pulse el icono verde.

Ahora puedes monitorizar tu señal de ECG y otras variables de forma remota gracias a Ubidots IoT la plataforma de desarrollo de aplicaciones: