/*
EMAIL:
*/
#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL2aRPPeJ0o"
#define BLYNK_TEMPLATE_NAME "IOT MOTOR MONITORING"
#define BLYNK_AUTH_TOKEN "ekVAfi9nflGEs3VDPfKWZNkMOVBFxnHx"
#define oneWireBus 4
#define relay 27
#define isPresent isActive
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
LiquidCrystal_I2C lcd(0x27,20,4);
OneWire oneWire(oneWireBus);
DallasTemperature sensors(&oneWire);
bool state;
String notification;
String pNumber="0xxxxxxxxx",
alert1="----OVER VOLTAGE----",
alert2="--OVER TEMPERATURE--",
alert3="---UNDER VOLTAGE----",
alert5="--SYSTEM WORK FINE--",
alert4="-SYSTEM TURNED OFF-";
bool isActive;
float voltage,temperature;
void setup()
{
lcd.init();
lcd.backlight();
loadingdisplay();
Serial.begin(115200);
delay(500);
sensors.begin();
pinMode(relay,OUTPUT);
digitalWrite(relay,LOW);
Blynk.begin(auth, ssid, pass);
}
void loop()
{
Blynk.run();
get_data();
homedisplay();
send_update();
if(temperature >80)
{
digitalWrite(relay,LOW);
alert_display(alert2);
Blynk.virtualWrite(V3,alert2);
isPresent=LOW;
Blynk.virtualWrite(V2,isPresent);
delay(2000);
}
else if(voltage >250)
{
digitalWrite(relay,LOW);
alert_display(alert1);
Blynk.virtualWrite(V3,alert1);
isPresent=LOW;
Blynk.virtualWrite(V2,isPresent);
delay(2000);
}
else if(voltage<100)
{
digitalWrite(relay,LOW);
alert_display(alert3);
Blynk.virtualWrite(V3,alert3);
isPresent=LOW;
Blynk.virtualWrite(V2,isPresent);
delay(2000);
}
else
{
digitalWrite(relay,HIGH);
Blynk.virtualWrite(V3,alert5);
isPresent=HIGH;
Blynk.virtualWrite(V2,isPresent);
delay(2000);
}
delay(1000);
}
void get_data()
{
sensors.requestTemperatures();
float temperatureC = sensors.getTempCByIndex(0);
float temperatureF = sensors.getTempFByIndex(0);
temperature=temperatureC;
Serial.print(temperature);
Serial.println("ºC");
voltage=map(analogRead(34),0,4095,0,300);
Serial.print(voltage);
Serial.println(" V");
}
void send_update()
{
Blynk.virtualWrite(V0,voltage);
Blynk.virtualWrite(V1,temperature);
}
void loadingdisplay()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("*---AC MOTOR ---*");
lcd.setCursor(0,1);
lcd.print("* MONITORING *");
lcd.setCursor(0,2);
lcd.print(" SYSTEM INITIALIZE ");
lcd.setCursor(0,3);
lcd.print("PLEASE WAIT");
for(int k=11;k<20;k++)
{
lcd.setCursor(k,3);
lcd.print(".");
delay(500);
}
}
void homedisplay()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("===>CURRENT DATA<===");
lcd.setCursor(0,1);
lcd.print("VOLTAGE:");
lcd.setCursor(8,1);
lcd.print(voltage,1);
lcd.print(" V");
lcd.setCursor(0,2);
lcd.print("TEMPERATURE:");
lcd.setCursor(12,2);
lcd.print(temperature,1);
lcd.print("ºC");
lcd.setCursor(0,3);
lcd.print("STATUS:");
lcd.setCursor(7,3);
if(isActive){lcd.print("CONNECTED");}
else{lcd.print("DISCONNECTED");}
delay(500);
}
void alert_display(String textAlert)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("===>SYSTEM ALERT<===");
lcd.setCursor(0,1);
lcd.print(textAlert);
}
VOLTAGE
TEMPERATURE SENSOR