#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL4UCK7au3d"
#define BLYNK_TEMPLATE_NAME "BABY INCUBATOR USING IOT TECHNOLOGY"
#define BLYNK_AUTH_TOKEN "CvgcXQZ7QB2gPsMZRnYzbs-iSAUH3M88"
//#define USE_ARDUINO_INTERRUPTS false
#define FAN 5
#define HEATER 4
#define rLED 13
#define bLED 14
#define gLED 26
#define LED 5
#define DHT_PIN 15
#define PulseSensorPurplePin 36
//#include <PulseSensorPlayground.h>
#include "DHTesp.h"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
DHTesp dhtSensor;
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
/*
int PulseSensorPurplePin = 18;
int LED13 = 2;
int Signal,counter;
int Threshold = 550;
*/
float Temperature,stemp,ttemp;
float Humidity,shum,thum;
float bpm,sbpm,tbpm;
String notification;
bool state=LOW;
void setup()
{
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("*BABY INCUBATOR*");
lcd.setCursor(0, 1);
lcd.print("SYSTEM BOOTING..");
pinMode(FAN,OUTPUT);
pinMode(HEATER,OUTPUT);
pinMode(rLED,OUTPUT);
pinMode(gLED,OUTPUT);
pinMode(bLED,OUTPUT);
digitalWrite(rLED,LOW);
digitalWrite(gLED,LOW);
digitalWrite(bLED,LOW);
digitalWrite(FAN,LOW);
digitalWrite(HEATER,LOW);
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
Blynk.begin(auth, ssid, pass);
for(int i=0;i<3;i++)
{
digitalWrite(rLED,HIGH);
delay(200);
digitalWrite(gLED,HIGH);
delay(200);
digitalWrite(bLED,HIGH);
delay(200);
digitalWrite(bLED,LOW);
delay(200);
digitalWrite(gLED,LOW);
delay(200);
digitalWrite(rLED,LOW);
delay(200);
}
}
void loop()
{
Blynk.run();
get_TempHum();
get_bpm();
send_update();
}
void get_TempHum()
{
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Temperature = data.temperature;
Humidity =data.humidity;
}
void get_bpm()
{
bpm = map(analogRead(36),0,4095,0,200);
}
void send_update()
{
bool CND1 = Temperature<(36) && Temperature>(34) && Humidity<(75) && Humidity>(50);
bool CND2 = bpm< (160) && bpm>(120);
if(CND1==HIGH && CND2==HIGH)
{
digitalWrite(rLED,LOW);
digitalWrite(gLED,HIGH);
digitalWrite(bLED,HIGH);
state=LOW;
notification="ALL CND STABLE";
}
else if(CND1==HIGH && CND2==LOW)
{
digitalWrite(rLED,HIGH);
digitalWrite(gLED,HIGH);
digitalWrite(bLED,LOW);
state=HIGH;
notification="BPM IS UNSTABLE";
}
else if(CND1==LOW && CND2==HIGH)
{
digitalWrite(rLED,HIGH);
digitalWrite(gLED,LOW);
digitalWrite(bLED,HIGH);
state=HIGH;
notification="T&H IS UNSTABLE";
}
else if(CND1==LOW && CND2==LOW)
{
digitalWrite(rLED,HIGH);
digitalWrite(gLED,LOW);
digitalWrite(bLED,LOW);
state=HIGH;
notification="ALL CND UNSTABLE";
}
if(Temperature>36)
{
digitalWrite(FAN,HIGH);
digitalWrite(HEATER,LOW);
}
else if(Temperature<34)
{
digitalWrite(FAN,LOW);
digitalWrite(HEATER,HIGH);
}
else
{
digitalWrite(FAN,LOW);
digitalWrite(HEATER,LOW);
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.setCursor(2, 0);
lcd.print(Temperature,1);
/////////////////////////////
lcd.setCursor(5, 0);
lcd.print("H:");
lcd.setCursor(7, 0);
lcd.print(Humidity);
////////////////////////////
lcd.setCursor(10, 0);
lcd.print("B:");
lcd.setCursor(12, 0);
lcd.print(bpm);
////////////////////////////
lcd.setCursor(0, 1);
lcd.print(notification);
Blynk.virtualWrite(V2,bpm);
Blynk.virtualWrite(V0,Temperature);
Blynk.virtualWrite(V1,Humidity);
Blynk.virtualWrite(V6,notification);
Blynk.virtualWrite(V7,state);
delay(500);
}