Este proyecto implementa un monitor de frecuencia cardíaca usando el sensor AD8232 con un ESP32, con visualización de alto rendimiento en Python y una alternativa en Processing.
- Lectura en tiempo real de señales ECG.
- Detección de latidos cardíacos y cálculo de BPM.
- Verificación de conexión de electrodos (
Leads-Off Detection). - Filtros digitales (Pasa Bajos y Mediana) para mejorar la calidad de la señal.
- Visualizador Python de alto rendimiento:
- Graficación optimizada para baja latencia.
- Selector visual de puerto COM.
- Reconexión automática al puerto serial.
- Controles interactivos para ventana de tiempo y zoom.
- Tema oscuro para mejor visualización.
- Visualizador alternativo en Processing.
| Pin AD8232 | Pin ESP32 | Descripción |
|---|---|---|
| LO+ | GPIO25 | Detección de desconexión de electrodo positivo |
| LO- | GPIO26 | Detección de desconexión de electrodo negativo |
| OUTPUT | GPIO34 | Señal analógica del ECG |
| 3.3V | 3.3V | Alimentación |
| GND | GND | Tierra común |
- Electrodo RA (Right Arm): Conectar al terminal RA del sensor.
- Electrodo LA (Left Arm): Conectar al terminal LA del sensor.
- Electrodo RL (Right Leg): Conectar al terminal RL del sensor (tierra).
- Conectar el hardware según el diagrama de conexiones.
- Compilar y subir el código de
src/main.cppal ESP32 usando PlatformIO. - Ejecutar el visualizador de Python para la mejor experiencia.
- Ejecuta
python python_visualizer/ecg_plotter.py. - Selecciona el puerto COM en la ventana emergente.
- Usa los botones en la ventana para:
+1s/-1s: Ajustar la ventana de tiempo (eje X).Zoom+/Zoom-: Zoom in/out en el eje Y (amplitud).
- Usa las teclas del teclado para:
r: Reiniciar la vista y los contadores.t/y: Aumentar/reducir el umbral de detección de latidos.c: Limpiar el buffer del puerto serial.
- Abre y ejecuta el sketch
processing_visualizer/ECG_Visualizer.pde. - Haz clic sobre el puerto COM que desees usar.
- Velocidad serial: 115200 baudios.
- Frecuencia de muestreo: 250Hz (Intervalo de 4000µs en el ESP32).
- Control de tiempo: El código del ESP32 usa
micros()para un muestreo no bloqueante y preciso. - Umbral de latido: Inicia en 500, pero es ajustable desde el visualizador Python.
ECG: [valor]: Valor analógico de la señal ECG (0-1023).BPM: Frecuencia cardíaca calculada en tiempo real.Latidos: Conteo de latidos detectados.Estado: Muestra si el visualizador está "Conectado" o "Desconectado" del puerto serial.
- No se detectan latidos: Ajusta el umbral con las teclas
tyy. Revisa las conexiones y la adhesión de los electrodos. - Señal muy ruidosa: Asegúrate de que el electrodo de tierra (RL) esté bien conectado. Revisa los filtros en el código del ESP32.
- El gráfico se congela o pierde datos: El visualizador Python ahora tiene reconexión automática. Si el problema persiste, verifica que ningún otro programa esté usando el puerto COM.
- No aparece el puerto COM: Verifica que el ESP32 esté bien conectado por USB y que los drivers estén instalados.
Este proyecto es de código abierto y está disponible para uso educativo y de desarrollo.
