ECG display ESP8266

Hi!
I hope someone could help me, I’m using Blynk for a project with ECG displaying, heart rate and SpO2. For the heart rate and the SpO2 i’m using the sensor MAX30100, but I couldn’t find a way to creat a ECG from that sensor.
So, I bought this pulse sensor ([this])(https://pulsesensor.com/) but when I connect it the graph isn’t good. I’ve been seeing videos and reading articles/papers but I don’t no if i’m doing something wrong…

I’ve been reserching but I didn’t find anything, I hope someone could help me :pray:
I’m very very desesperate…

imagen --> It’s suppoust to look like this, but it doesn’t.

{
  Serial.println("Beat!");
}

void setup()
{
  Serial.begin(9600);

  pinMode (16, OUTPUT); //MAX30100

  Blynk.begin(auth, ssid, pass);

  timer.setInterval(1000L, myTimerEvent);

  pox.begin();
  pox.setOnBeatDetectedCallback(onBeatDetected);

  //  sensor.setLedsCurrent(IR_LED_CURRENT, RED_LED_CURRENT);
  pox.setIRLedCurrent(MAX30100_LED_CURR_11MA); //14_2MA
}

void loop()
{
  Blynk.run();
  timer.run();
  pox.update();

  int value = analogRead(A0);
 
  BPM = pox.getHeartRate();
  SpO2 = pox.getSpO2();


  if (millis() - tsLastReport > REPORTING_PERIOD_MS) {
    Serial.print("Heart rate:");
    Serial.print(BPM);
    Blynk.virtualWrite(V4, BPM);

    Serial.print(" / SpO2:");
    Serial.print(SpO2);
    // Blynk.virtualWrite(V5, SpO2);
    Serial.println("%");
  }

  Serial.println(value);
  Blynk.virtualWrite(A0, sensor);
  //Blynk.analogWrite(A0,value);
  delay(20);

  if ((BPM > 100) & (BPM < 60)) {
    led.on();
  }

}

The Blynk SuperChart widget isn’t designed to handle the resolution you’re looking for, so even in Live view its not going to work.
From your segment of code its not possible to tell how frequently you’re attempting to read the sensor values and push them out to Blynk, but the absolute maximum number of data points that you’re going to be able to send without flooding the Blynk server is 10 per second. As you have two Blynk.virtualWrite statement in your void loop then any more than 5 positive evaluations of the if statement within the void loop per second is going to result in flooding.
When this occurs - using the method you’ve chosen - then the additional data points will be ignored by the server. If you used a Blynk timer rather than the millis() and nasty delay() then the Blynk timer itself would step-in and block the repeated Blynk.virtualWrites.

You are using an internet connection to send data from your ESP8266 to a server that lives (in your case) in New York, and then back to the app on your phone. Do you expect that this is going to result in the same sort of speed, granularity and consistency as can be achieved by sending the data directly to the serial plotter on your PC via a wired connection?

Pete.

2 Likes