#define BLYNK_TEMPLATE_ID "TMPL61QAgVEs5"
#define BLYNK_TEMPLATE_NAME "Smart Egg Incubator"
#define BLYNK_AUTH_TOKEN "-Rr2B5bjX-WbfmLFypGK8iZojHxRza9h"
#define BLYNK_PRINT Serial
#include <BlynkSimpleEsp32.h>
#include "DHTesp.h"
#define DHT_PIN 15
//---------------------------------------------------------------------------------------------------------
#include <LiquidCrystal_I2C.h>
#define LCD_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_ROWS 2
LiquidCrystal_I2C lcd(LCD_ADDR, LCD_COLUMNS, LCD_ROWS);
int fan = 2;
int bulb = 4;
int egg = 16;
DHTesp dhtSensor;
BlynkTimer tempData;
//BLYNK
char ssid[] = "Wokwi-GUEST"; //change to your own wifi
char pass[] = ""; //change to your own password
BLYNK_WRITE(V2)
{
int buttonState = param.asInt();
if(buttonState == 1)
{
digitalWrite(egg, LOW); //CHANGE TO HIGH IF VICE VERSA
Blynk.virtualWrite(V3, "ACTIVATED");
}
else
{
digitalWrite(egg, HIGH); //CHANGE TO LOW IF VICE VERSA
Blynk.virtualWrite(V3, "DEACTIVATED");
}
}
void setup() {
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
pinMode(fan, OUTPUT); //declare fan as output
pinMode(bulb, OUTPUT); //declare bulb as output
pinMode(egg, OUTPUT); //declare egg device as output
digitalWrite(fan, HIGH);
digitalWrite(bulb, HIGH);
digitalWrite(egg, HIGH);
tempData.setInterval(500L, tempRead);
lcd.begin(16,2);
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(3,0);
lcd.print("Smart Egg"); // set text
lcd.setCursor(3,1);
lcd.print("Incubator");
Blynk.virtualWrite(V4, "SMART EGG INCUBATOR");
delay(2000);
lcd.clear();
}
void tempRead() // function for temperature
{
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
Serial.println("---------------------------");
Blynk.virtualWrite(V0, data.temperature); //TO DISPLAY DATA ON BLYNK
Blynk.virtualWrite(V1, data.humidity); //TO DISPLAY DATA ON BLYNK
lcd.setCursor(0,0);
lcd.print("Temp: " + String(data.temperature, 2) + "°C"); // set text
lcd.setCursor(0,1);
lcd.print("Humidity: " + String(data.humidity, 1) + "%");
if ((data.temperature >= 39 && data.temperature <= 41) && (data.humidity >=48 && data.humidity <=50))
{
digitalWrite(fan, LOW);
digitalWrite(bulb, HIGH);
}
else if ((data.temperature >= 35 && data.temperature <= 37) && (data.humidity >= 55 && data.humidity <=58))
{
digitalWrite(fan, HIGH);
digitalWrite(bulb, LOW);
}
else
{
digitalWrite(fan, HIGH);
digitalWrite(bulb, HIGH);
}
}
void loop() {
Blynk.run();
tempData.run();
}