#include <WiFi.h>
#include <HTTPClient.h>
#include <LiquidCrystal_I2C.h>
#include "EmonLib.h" // Library untuk sensor arus
// Konfigurasi WiFi
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// Inisialisasi LCD dan sensor arus
LiquidCrystal_I2C lcd(0x27, 20, 4);
EnergyMonitor emon1;
// Array deskripsi pemakaian
const char* usageDescriptions[] = {
"Lampu Ruang Tamu",
"AC Ruang Tamu",
"Kulkas",
"TV Ruang Keluarga"
};
int descriptionIndex = 0; // Indeks deskripsi yang sedang ditampilkan
void setup() {
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Pemakaian Listrik");
Serial.begin(115200);
// Inisialisasi WiFi
WiFi.begin(ssid, password);
Serial.print("Menghubungkan ke WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println("Terhubung!");
// Inisialisasi sensor arus
emon1.current(A0, 111.1); // Pin, kalibrasi (111.1 untuk SCT-013-000)
}
void loop() {
// Membaca nilai arus
double Irms = emon1.calcIrms(1480); // Hitung arus RMS
double power = Irms * 220.0; // Asumsikan tegangan 220V
// Tampilkan di Serial Monitor
Serial.print("Arus: ");
Serial.print(Irms);
Serial.print(" A, Daya: ");
Serial.print(power);
Serial.println(" W");
// Tampilkan di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Arus: ");
lcd.print(Irms);
lcd.print(" A");
lcd.setCursor(0, 1);
lcd.print("Daya: ");
lcd.print(power);
lcd.print(" W");
// Menampilkan deskripsi pemakaian
lcd.setCursor(0, 2);
lcd.print(usageDescriptions[descriptionIndex]);
// Ganti ke deskripsi berikutnya setiap 5 detik
static unsigned long lastChangeTime = 0;
if (millis() - lastChangeTime > 5000) {
lastChangeTime = millis();
descriptionIndex++;
if (descriptionIndex >= sizeof(usageDescriptions) / sizeof(usageDescriptions[0])) {
descriptionIndex = 0;
}
}
delay(1000); // Tunggu 1 detik sebelum pembaruan berikutnya
}