Kali ini saya akan membuat tutorial cara membaca sensor ampere voltage pzem-004t menggunakan esp32

- Komponen yang Dibutuhkan:
- PZEM-004T v3.0 (atau versi lainnya, sesuaikan dengan datasheet).
- ESP32.
- Modul TTL ke RS485 (untuk komunikasi serial dengan PZEM-004T).
- Kabel jumper.
- Beban listrik untuk pengujian (lampu, kipas, dll.).
- Koneksi PZEM-004T ke ESP32:
- Input PZEM (L/N): Sambungkan ke sumber daya AC (220V/110V).
- RS485 ke TTL Module:
- A/B pada PZEM → A/B pada modul RS485.
- VCC/GND pada modul RS485 → 3.3V/GND ESP32.
- TTL ke ESP32:
- RX TTL → TX ESP32.
- TX TTL → RX ESP32.
⚠️ Peringatan: PZEM-004T bekerja dengan tegangan AC tinggi. Pastikan bekerja dengan hati-hati untuk menghindari risiko sengatan listrik. Gunakan pengaman seperti MCB dan sarung tangan isolasi.
Untuk skematik nya seperti ini :

Untuk kode yang digunakan :
#include <PZEM004Tv30.h>
// Inisialisasi objek PZEM
// Gunakan pin RX dan TX ESP32 yang sesuai
#define RX_PIN 16 // GPIO RX
#define TX_PIN 17 // GPIO TX
PZEM004Tv30 pzem(&Serial2, RX_PIN, TX_PIN); // UART2 untuk komunikasi serial
void setup() {
Serial.begin(115200); // Serial monitor
Serial.println("PZEM-004T Monitoring");
// Inisialisasi UART2 untuk PZEM
Serial2.begin(9600);
}
void loop() {
// Baca tegangan
float voltage = pzem.voltage();
if (!isnan(voltage)) {
Serial.print("Tegangan (V): ");
Serial.println(voltage);
} else {
Serial.println("Gagal membaca tegangan");
}
// Baca arus
float current = pzem.current();
if (!isnan(current)) {
Serial.print("Arus (A): ");
Serial.println(current);
} else {
Serial.println("Gagal membaca arus");
}
// Baca daya
float power = pzem.power();
if (!isnan(power)) {
Serial.print("Daya (W): ");
Serial.println(power);
} else {
Serial.println("Gagal membaca daya");
}
// Baca energi
float energy = pzem.energy();
if (!isnan(energy)) {
Serial.print("Energi (kWh): ");
Serial.println(energy);
} else {
Serial.println("Gagal membaca energi");
}
// Baca frekuensi
float frequency = pzem.frequency();
if (!isnan(frequency)) {
Serial.print("Frekuensi (Hz): ");
Serial.println(frequency);
} else {
Serial.println("Gagal membaca frekuensi");
}
// Baca faktor daya
float pf = pzem.pf();
if (!isnan(pf)) {
Serial.print("Power Factor: ");
Serial.println(pf);
} else {
Serial.println("Gagal membaca faktor daya");
}
Serial.println("--------------------------");
delay(1000);
}
Selamat Mencoba!!
Semoga Berhasil!!
Bagi teman-teman berminat jasa seputar arduino/pengembangan web bisa hubungi kami di kontak whatsapp dibawah ini atau bisa cek tiktok kami disini : @labrobotika

