#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL5A5IKGiWu"
#define BLYNK_TEMPLATE_NAME "IOT Based Health Monitoring System Using ESP32"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
// Blynk auth token and Wi-Fi credentials
char auth[] = "dPwaOMahpx1KvmMqtQQOg15ZGHRzQDhd";
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// Define DHT22 Sensor and pin
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
const int ldrPin = 34;
LiquidCrystal_I2C lcd(0x27, 16, 2); // Verified I2C address
double bodyTemperature;
int heartRate;
void setup() {
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
while (Blynk.connect() == false) {
Serial.print(".");
delay(100);
}
Serial.println("Connected to Wi-Fi");
dht.begin();
lcd.init(); // Initialize the LCD
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("LCD initialized");
Serial.println("LCD initialized");
}
void loop() {
Blynk.run();
// Read temperature as Celsius
bodyTemperature = dht.readTemperature();
if (isnan(bodyTemperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Temperature: ");
Serial.println(bodyTemperature);
// Read LDR value and map it to heart rate (simulate heart rate)
int lightLevel = analogRead(ldrPin);
heartRate = map(lightLevel, 0, 4095, 60, 100);
Serial.print("Heart rate: ");
Serial.println(heartRate);
// Send data to Blynk
Blynk.virtualWrite(V1, bodyTemperature);
Blynk.virtualWrite(V2, heartRate);
// Display data on LCD
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(bodyTemperature);
lcd.print(" C ");
lcd.setCursor(0, 1);
lcd.print("Heart: ");
lcd.print(heartRate);
lcd.print(" bpm ");
delay(2000);
}