#include <Arduino.h>
#include <WiFi.h> // Include WiFi library for ESP32
#include <Wire.h>
#include <DFRobot_Heartrate.h>
// WiFi settings
const char* ssid = "your_wifi_ssid"; // Replace with your WiFi SSID
const char* password = "your_wifi_password"; // Replace with your WiFi password
// Define constants
const int MIN_BPM = 20;
const int MAX_BPM = 255;
const int RATE_SIZE = 4;
// Heart rate sensor settings
DFRobot_Heartrate heartrate;
// Variables
long lastBeat = 0;
int rates[RATE_SIZE];
byte rateSpot = 0;
int beatAvg = 0;
void setup() {
Serial.begin(115200);
// Connect to WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// Initialize heart rate sensor
heartrate.begin();
}
void loop() {
int heartRate = heartrate.getHeartRate();
if (heartRate > 0) {
long delta = millis() - lastBeat;
lastBeat = millis();
if (heartRate > MIN_BPM && heartRate < MAX_BPM) {
// Store reading and calculate average
rates[rateSpot++] = heartRate;
rateSpot %= RATE_SIZE;
beatAvg = 0;
for (byte x = 0; x < RATE_SIZE; x++) {
beatAvg += rates[x];
}
beatAvg /= RATE_SIZE;
Serial.print("BPM: ");
Serial.println(beatAvg);
}
}
delay(10); // Debounce and wait for next reading
}