Wemos D1 Mini and MAX30102 Iot Based Project using Blynk App

Hardware Used: MAX30102, Voltage Sensor, Wemos D1 mini;
When I connect it to the blynk, the temp sensor, and voltage sensor works fine, But when the Hrate/ Pule rate gained value, the connection to the device were interrupted then the device becomes offline. Pleas help me. Thank you for your considerations and support.
Here is my code:

#include <Blynk.h>
#include <Wire.h>
#include "MAX30105.h"
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include "heartRate.h"

MAX30105 particleSensor;
#define BLYNK_AUTH_TOKEN "cF1__1FIx7TQvlqY0Oq8EyCRzFB5BN4F"
#define BLYNK_PRINT Serial
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[] = BLYNK_AUTH_TOKEN;
char ssid[] = "TP-Link_63B6";
char pass[] = "29649624";
int analogInput = 0;
float vout = 0.0;
float vin = 0.0;
float R1 = 100000.0; // resistance of R1 (100K) -see text!
float R2 = 10000.0; // resistance of R2 (10K) - see text!
int value = 0;
void setup()
  Blynk.begin(auth, ssid, pass , "blynk.cloud", 80);

  // 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
  particleSensor.enableDIETEMPRDY(); //Enable the temp ready interrupt. This is required.

void loop()
  long irValue = particleSensor.getIR();
  long temperature = particleSensor.readTemperature();

  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;
  value = analogRead(analogInput);
  vout = (value * 5.0) / 1024.0; // see text
  vin = vout / (R2/(R1+R2)); 

  Serial.print(", BPM=");
  Serial.print(", Avg BPM=");
  Serial.print(" Temperature C = ");
  Serial.print(temperature, 4);
  Serial.print(" Voltage = ");

  if (irValue < 50000)
    Serial.print(" No finger?");


You should read this…

Also, you wouldn’t need to specify the server url in your Blynk.begin command if you structured your code as it’s supposed to be, with these three lines at the very top of the sketch…


Thank you Sir. Hope This will work