Esp 32
Esp 32
h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
#include "EmonLib.h"
#include <EEPROM.h>
#define BLYNK_TEMPLATE_ID "TMPL5XrsB0bBR"
#define BLYNK_TEMPLATE_NAME "SM 2"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
EnergyMonitor emon;
#define vCalibration 83.3
#define currCalibration 0.50
BlynkTimer timer;
#define BLYNK_TEMPLATE_ID "TMPL5XrsB0bBR"
#define BLYNK_TEMPLATE_NAME "SM 2"
#define BLYNK_AUTH_TOKEN "tCgOcusHVOdgBgxP9vpW5q3TeB13OJIX"
char auth[] = "tCgOcusHVOdgBgxP9vpW5q3TeB13OJIX";
char ssid[] = "Krishna 2";
char pass[] = "anish123";
float kWh = 0;
unsigned long lastmillis = millis();
void myTimerEvent()
{
emon.calcVI(20, 2000);
kWh = kWh + emon.apparentPower * (millis() - lastmillis) / 3600000000.0;
yield();
Serial.print("Vrms: ");
Serial.print(emon.Vrms, 2);
Serial.print("V");
EEPROM.put(0, emon.Vrms);
delay(100);
Serial.print("\tIrms: ");
Serial.print(emon.Irms, 4);
Serial.print("A");
EEPROM.put(4, emon.Irms);
delay(100);
Serial.print("\tPower: ");
Serial.print(emon.apparentPower, 4);
Serial.print("W");
EEPROM.put(8, emon.apparentPower);
delay(100);
Serial.print("\tkWh: ");
Serial.print(kWh, 5);
Serial.println("kWh");
EEPROM.put(12, kWh);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Vrms:");
lcd.print(emon.Vrms, 2);
lcd.print("V");
lcd.setCursor(0, 1);
lcd.print("Irms:");
lcd.print(emon.Irms, 4);
lcd.print("A");
lcd.setCursor(0, 2);
lcd.print("Power:");
lcd.print(emon.apparentPower, 4);
lcd.print("W");
lcd.setCursor(0, 3);
lcd.print("kWh:");
lcd.print(kWh, 4);
lcd.print("W");
lastmillis = millis();
Blynk.virtualWrite(V0, emon.Vrms);
Blynk.virtualWrite(V1, emon.Irms);
Blynk.virtualWrite(V2, emon.apparentPower);
Blynk.virtualWrite(V3, kWh);
}
void setup()
{
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
lcd.init();
lcd.backlight();
emon.voltage(34, vCalibration, 1.7); // Voltage: input pin, calibration,
phase_shift
emon.current(35, currCalibration); // Current: input pin, calibration.
timer.setInterval(5000L, myTimerEvent);
lcd.setCursor(3, 0);
lcd.print("IoT Energy");
lcd.setCursor(5, 1);
lcd.print("Meter");
delay(3000);
lcd.clear();
}
void loop()
{
Blynk.run();
timer.run();
}