#define BLYNK_TEMPLATE_ID "TMPL3T1uGOOz_"
#define BLYNK_TEMPLATE_NAME "TEMPERATURE MONITOR"
#define BLYNK_AUTH_TOKEN "ioinCWbcwGdnUlZyCD3e5WGbu1d5CXY6"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <Wire.h>
#include "MAX30100_PulseOximeter.h"
//#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <Adafruit_MLX90614.h>
uint32_t tsLastReport = 0;
#define REPORTING_PERIOD_MS 1000
PulseOximeter pox;
char auth[] = BLYNK_AUTH_TOKEN;
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
char ssid[] = "health care"; // type your wifi name
char pass[] = "50916392001"; // type your wifi password
BlynkTimer timer;
void ecgoutput() {
if((digitalRead(10) == 1)||(digitalRead(11) == 1)){
Serial.println('!');
}
else{
// send the value of analog input 0:
Serial.println(analogRead(36));
Blynk.virtualWrite(V0,analogRead(A0) );
}
//Wait for a bit to keep serial data from saturating
delay(1);
}
void onBeatDetected()
{
Serial.println("Beat!");
}
void MLX90614temp()
{
Serial.print("Ambient = ");
Serial.print(mlx.readAmbientTempC());
Serial.print("*C\tObject = ");
Serial.print(mlx.readObjectTempC());
Serial.println("*C");
Serial.print("Ambient = ");
Serial.print(mlx.readAmbientTempF());
Serial.print("*F\tObject = ");
Serial.print(mlx.readObjectTempF());
Serial.println("*F");
Blynk.virtualWrite(V1,mlx.readObjectTempF() );
Serial.println();
delay(500);
}
void pulseoximeterr()
{
// Make sure to call update as fast as possible
pox.update();
// Asynchronously dump heart rate and oxidation levels to the serial
// For both, a value of 0 means "invalid"
if (millis() - tsLastReport > REPORTING_PERIOD_MS) {
Serial.print("Heart rate:");
Serial.print(pox.getHeartRate());
Blynk.virtualWrite(V2,pox.getHeartRate() );
Serial.print("bpm / SpO2:");
Serial.print(pox.getSpO2());
Blynk.virtualWrite(V3,pox.getSpO2() );
Serial.println("%");
tsLastReport = millis();
}
}
void setup()
{
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
timer.setInterval(100L, ecgoutput);
timer.setInterval(100L, MLX90614temp);
timer.setInterval(100L, pulseoximeterr);
pinMode(10, INPUT); // Setup for leads off detection LO +
pinMode(11, INPUT); // Setup for leads off detection LO -
pinMode(36,INPUT);
pox.setOnBeatDetectedCallback(onBeatDetected);
while (!Serial);
if (!mlx.begin()) {
Serial.println("Error connecting to MLX sensor. Check wiring.");
while (1);
};
if (!pox.begin()) {
Serial.println("FAILED");
for(;;);
} else {
Serial.println("SUCCESS");
}
}
void loop()
{
Blynk.run();
timer.run();
}