#include <PZEM004Tv30.h>
#include <Wire.h>
#include <WiFi.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
PZEM004Tv30 pzem(16, 17); // Software Serial pin 16 (RX) & 17 (TX)
LiquidCrystal_I2C lcd(0x27, 16, 2);
float voltage, current, power, energy;
char ssid = "Wokwi-GUEST"
char pass = ""
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, pass);
Serial.print("Connecting to Wi-Fi");
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(300);
}
Serial.print("Connected with IP: ");
Serial.println(WiFi.localIP());
Serial.println();
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("System Transaksi");
lcd.setCursor(0, 1);
lcd.print("Meteran Listrik");
delay (3000);
lcd.clear();
}
void loop() {
float voltage = pzem.voltage();
if (voltage != NAN) {
Serial.print("Voltage: ");
Serial.print(voltage);
Serial.println("V");
} else {
Serial.println("Error reading voltage");
}
float current = pzem.current();
if (current != NAN) {
Serial.print("Current: ");
Serial.print(current);
Serial.println("A");
} else {
Serial.println("Error reading current");
}
float power = pzem.power();
if (current != NAN) {
Serial.print("Power: ");
Serial.print(power);
Serial.println("W");
} else {
Serial.println("Error reading power");
}
float energy = pzem.energy();
if (current != NAN) {
Serial.print("Energy: ");
Serial.print(energy, 3);
Serial.println("kWh");
} else {
Serial.println("Error reading energy");
}
float frequency = pzem.frequency();
if (current != NAN) {
Serial.print("Frequency: ");
Serial.print(frequency, 1);
Serial.println("Hz");
} else {
Serial.println("Error reading frequency");
}
delay(1000); // this speeds up 1000 the simulation
}