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 su fase inicial. Por ello, decidí participar en este proyecto para monitorizar mi señal de ECG utilizando la plataforma de desarrollo IoT Ubidots .

En este artículo, implementaremos los principios básicos para iniciar y ejecutar el monitor de frecuencia cardíaca AD8232 . Después, te mostraremos cómo conectarlo a tu microcontrolador favorito y cómo crear visualizaciones con una plataforma IoT

¿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 el " URL adicionales del administrador del foro", asigne la URL que aparece a continuación. Puede agregar varias URL, 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, agregue la ESP32 al IDE de Arduino. Para ello, haga clic en Herramientas > Placa > Administrador de placas.

5. En la barra de búsqueda, escriba “ ESP32 ” e instale 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: Tus Ubidots SIMBÓLICO
  • 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. Verifique su código en el IDE de Arduino. Para ello, en la esquina superior izquierda del IDE de Arduino verá el icono de la " Marca de verificación "; presiónelo para verificar su código.

3. Sube el código a tu kit de desarrollo ESP32 . Para ello, selecciona el de la flecha derecha junto al icono de la marca 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 Dashboard de Ubidots . Para crearlo, vaya a la sección Dashboard (Datos > Dashboard ).

1. Luego, presione “ Agregar 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 la plataforma de desarrollo de aplicaciones IoT Ubidots :