Juni-Agustus, 2022
Sensor PZEM-004T adalah sensor yang dapat mengukur Arus, Tegangan, Power dan Energy dari listrik AC. Sensor ini mengeluarkan output dengan komunikasi serial. Jika kita ingin menghubungkan dengan Arduino maka komunikasi yang di gunakan adalah komunikasi serial.
#include ESP8266HTTPClient.h
#include ESP8266WiFi.h
#include PZEM004Tv30.h
#include SoftwareSerial.h
#if !defined(PZEM_RX_PIN) && !defined(PZEM_TX_PIN)
#define PZEM_RX_PIN D1
#define PZEM_TX_PIN D2
#endif
#ifndef STASSID
#define STASSID "GalaxyTabA"
#define STAPSK "tvpd6938"
#endif
const char* ssid = STASSID;
const char* password = STAPSK;
const char* host = "192.168.43.240";
SoftwareSerial pzemSWSerial(PZEM_RX_PIN, PZEM_TX_PIN);
PZEM004Tv30 pzem(pzemSWSerial);
void setup() {
Serial.begin(9600);
//koneksi ke wifi
WiFi.begin(ssid, password);
Serial.println ("Connecting...");
while(WiFi.status() != WL_CONNECTED)
{
Serial.println (".");
delay (1000);
}
//apabila berhasil terkoneksi
Serial.println ("Connected");
}
void loop() {
// Membaca data dari sensor
float tegangan = pzem.voltage();
float arus = pzem.current();
float daya = pzem.power();
// Cek data bisa dibaca atau tidak
if(isnan(tegangan)){
Serial.println("Gagal membaca tegangan");
}else if (isnan(arus)) {
Serial.println("Gagal membaca arus");
} else if (isnan(daya)) {
Serial.println("Gagal membaca daya");
}
else {
// Menampilkan data hasil pembacaan pada serial monitor
Serial.println("Tegangan: " + String (tegangan) );
Serial.println("Arus: " + String (arus) );
Serial.println("Daya: " + String (daya) );
}
//kirim data ke server
WiFiClient client;
//inisialisasi port web server
const int httpPort = 80;
if ( !client.connect (host, httpPort) )
{
Serial.println ("Connection Failed");
return;
}
//kondisi pasti terkoneksi
//kirim data sensor ke database/web
String Link;
HTTPClient http;
Link = "http://" + String (host) + "/monitoringdaya/kirimdata.php?tegangan=" + String (tegangan) + "&arus=" + String (arus) + "&daya=" + String (daya);
//eksekusi alamat link
http.begin (client, Link);
http.GET();
//baca respon setelah berhasil kirim nilai sensor
String respon = http.getString ();
Serial.println (respon);
http.end ();
delay (5000);
}