#include <Arduino.h> #include “WiFi.h” #include “WiFiClient.h” #include “WebServer.h” #include “ESPmDNS.h” #include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2); const char *ssid = “Diana”; const char *password = “pisi0000”;
WebServer server(80);
const unsigned long BAUD_RATE = 9600; const unsigned long MEASUREMENT_DELAY = 1000;
float heartRate = 0.0; const int heartRateThreshold = 100;
void handleRoot() {
char msg[1500];
snprintf(msg, 1500, "<html>\ <head>\ <meta http-equiv='refresh' content='4'/>\ <meta name='viewport' content='width=device-width, initial-scale=1'>\ <link rel='stylesheet' href='https://use.fontawesome.com/releases/v5.7.2/css/all.css' integrity='sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr' crossorigin='anonymous'>\ <title>ESP32 Heart Rate Server</title>\ <style>\ html { font-family: Arial; display: inline-block; margin: 0px auto; text-align: center;}\ h2 { font-size: 3.0rem; }\ p { font-size: 3.0rem; }\ .units { font-size: 1.2rem; }\ .dht-labels{ font-size: 1.5rem; vertical-align:middle; padding-bottom: 15px;}\ </style>\ </head>\ <body>\ <h2>Home</h2>\ <p>\ <i class='fas fa-heart' style='color:#FF0000;'></i>\ <span class='dht-labels'>Heart Rate</span>\ <span>%.2f</span>\ </p>\ </body>\
</html>”, heartRate);
server.send(200, "text/html", msg);
}
void setup() {
Serial.begin(115200); lcd.begin(); lcd.backlight();
WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.println("");
while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); }
Serial2.begin(BAUD_RATE, SERIAL_8N1, 16, 17); Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP());
if (MDNS.begin("esp32")) { Serial.println("MDNS responder started"); }
server.on("/", handleRoot); server.begin(); Serial.println("HTTP server started");
}
void loop() {
if (Serial2.available()) { String data = Serial2.readStringUntil('\n'); heartRate = data.toFloat(); Serial.println("Received heart rate: " + String(heartRate));
lcd.clear(); lcd.setCursor(0, 0); lcd.print("Heart Rate: "); lcd.print(heartRate); }
server.handleClient(); delay(2);
}
const int PULSE_SENSOR_PIN = A0; const unsigned long BAUD_RATE = 9600; const unsigned long MEASUREMENT_DELAY = 1000;
void setup() {
Serial.begin(BAUD_RATE);
}
void loop() {
int pulseValue = analogRead(PULSE_SENSOR_PIN); int heartRate = pulseValue / 10; Serial.println(heartRate);
delay(MEASUREMENT_DELAY);
}