IoT Health Monitoring System

build an IoT Health Monitoring System using the AD8232 ECG Sensor Module and ESP32 Wi-Fi Board, where ECG data is visualized on the Serial Plotter, and also sent over the internet to a web dashboard or cloud server like ThingSpeak or Firebase.

Components Needed

  • ESP32 Dev Board (Wi-Fi capable)
  • AD8232 ECG Sensor Module
  • Jumper wires
  • Breadboard (optional)
  • (Optional) DHT11/DHT22, MAX30100/30102, MPU6050, etc.

System Goals

  1. Read ECG signal from AD8232 using ESP32
  2. Display ECG waveform on Serial Plotter
  3. Send ECG data to the internet via Wi-Fi
  4. (Optional) Add more sensors for health metrics
  5. (Optional) Create a dashboard using ThingSpeak / Firebase

AD8232 Pinout Diagram


ESP32 Dev Board


Connection Diagram: AD8232 to ESP32

AD8232 PinESP32 Pin
OUTPUTGPIO 34 (Analog input)
LO+GPIO 35 (optional, digital input)
LO-GPIO 32 (optional, digital input)
3.3V3.3V
GNDGND

Use GPIO 34 for analog input as it supports ADC.


Send to ThingSpeak Cloud (Free IoT Platform)

👉 Create a ThingSpeak account and note:

  • Channel ID
  • Write API Key

Code

#include <WiFi.h>
#include "ThingSpeak.h"

const char* ssid = "Your_SSID";
const char* password = "Your_PASSWORD";
WiFiClient client;

unsigned long channelID = YOUR_CHANNEL_ID;
const char* writeAPIKey = "YOUR_WRITE_API_KEY";

#define ECG_PIN 34

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting...");
  }
  ThingSpeak.begin(client);
}

void loop() {
  int ecg = analogRead(ECG_PIN);
  ThingSpeak.writeField(channelID, 1, ecg, writeAPIKey);
  Serial.println("ECG sent: " + String(ecg));
  delay(15000);  // ThingSpeak allows 1 write every 15 seconds
}


Add More Health Sensors

SensorPurposeLibraryPin
DHT11/DHT22Temp & HumidityDHT.hGPIO 14
MAX30100/30102Heart Rate + SpO2MAX3010x.hI2C (21, 22)
MPU6050Fall DetectionMPU6050.hI2C (21, 22)

Future Enhancements

  • Build a real-time web dashboard with charts using HTML/JS (ESP32 as a host)
  • Send alerts (email/SMS) on abnormal ECG/HR
  • Use Firebase to log data & access from mobile app
  • Power with a Li-ion battery for wearable use

Summary

FeatureMethod
ECG ReadinganalogRead() from AD8232
Visualize LocallySerial Plotter
Send Over InternetBuilt-in ESP32 WebServer or ThingSpeak
Additional SensorsDHT22, MAX30102, MPU6050, etc.
Visualization OptionsWeb Dashboard, Firebase, or ThingSpeak Graph

Leave a Reply

Your email address will not be published. Required fields are marked *

More Articles & Posts