BLYNK
BLYNK.IO       📲 GETTING STARTED       📗 DOCS       👉 SKETCH BUILDER

Heart rate on BLYNK ESP32

Heart rate code for Max30102 and ESP32 is showing zero Avg beats= 0
attached the execution.

#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include "MAX30105.h" //sparkfun MAX3010X library
#include "heartRate.h"

SimpleTimer timer;
MAX30105 particleSensor;


const byte RATE_SIZE = 4; //Increase this for more averaging. 4 is good.
byte rates[RATE_SIZE]; //Array of heart rates
byte rateSpot = 0;
long lastBeat = 0; //Time at which the last beat occurred

float beatsPerMinute;
int beatAvg;

char auth[] = "fIGPsYeI0rf2DWG6FAPXdf-NGuhaF0Fe";


char ssid[] = "vivo 1713";
char pass[] = "fab123456";

void setup() {
  // put your setup code here, to run once:
Serial.begin(115200);
  Serial.println("Initializing...");
  Blynk.begin(auth, ssid, pass);

  // Initialize sensor
  if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) //Use default I2C port, 400kHz speed
  {
Serial.println("MAX30105 was not found. Please check wiring/power. ");
while (1);
  }
  Serial.println("Place your index finger on the sensor with steady pressure.");

  particleSensor.setup(); //Configure sensor with default settings
  particleSensor.setPulseAmplitudeRed(0x0A); //Turn Red LED to low to indicate sensor is running
  particleSensor.setPulseAmplitudeGreen(0); //Turn off Green LED
  timer.setInterval(100, HR);
}

void HR(){
  long irValue = particleSensor.getIR();

  if (checkForBeat(irValue) == true)
  {
//We sensed a beat!
long delta = millis() - lastBeat;
lastBeat = millis();

beatsPerMinute = 60 / (delta / 1000.0);

if (beatsPerMinute < 255 && beatsPerMinute > 20)
{
  rates[rateSpot++] = (byte)beatsPerMinute; //Store this reading in the array
  rateSpot %= RATE_SIZE; //Wrap variable

  //Take average of readings
  beatAvg = 0;
  for (byte x = 0 ; x < RATE_SIZE ; x++)
    beatAvg += rates[x];
  beatAvg /= RATE_SIZE;
}
  }

  Serial.print("IR=");
  Serial.print(irValue);
  Serial.print(", BPM=");
  Serial.print(beatsPerMinute);
  Serial.print(", Avg BPM=");
  Serial.print(beatAvg);
  Blynk.virtualWrite(V5, beatAvg);
  if (irValue < 50000)
Serial.print(" No finger?");

  Serial.println();
}

void loop() {
  Blynk.run();
  timer.run(); // Initiates SimpleTimer
}

Execution:

A post was merged into an existing topic: I’ve codes of HR and SpO2 for MAX30102 , on ESP32 how to merge them for Blynk