Pengertian & Fungsi PZEM-004T V4
PZEM-004T adalah modul elektronik yang digunakan untuk mengukur parameter listrik AC seperti:
- Tegangan (Volt)
- Arus (Ampere)
- Daya (Watt)
- Energi (kWh)
- Frekuensi (Hz)
- Faktor daya (Power Factor)
Semua data ini bisa dibaca lewat komunikasi serial TTL oleh mikrokontroler seperti Arduino. Modul ini cocok buat monitoring jaringan listrik di rumah, panel surya, IoT, dan sistem proteksi otomatis.
Prinsip Kerja
Secara umum, PZEM-004T bekerja sebagai berikut:
- Sensing:
Modul terhubung langsung garis listrik AC (biasanya 80 – 260 V AC) untuk membaca tegangan & arus. Arus diukur lewat current transformer (CT) internal atau eksternal. - Pengolahan Sinyal:
Sensor analog (tegangan & arus) diproses oleh rangkaian internal dan dikonversi menjadi digital. - Komunikasi Serial:
Nilai-nilai tadi dikirim ke mikrokontroler via TTL Serial (5 V, 9600 baud) sehingga bisa diolah lebih lanjut di Arduino.
Spesifikasi Utama
| Parameter | Nilai |
|---|---|
| Tegangan operasi | 80 – 260 V AC |
| Rentang Arus | 0 – 100 A (dengan CT) |
| Rentang Daya | 0 – 22 kW |
| Energi | 0 – 9999 kWh |
| Frekuensi | 45 – 65 Hz |
| Akurasi | ±0.5 % |
| Komunikasi | TTL Serial 9600 bps |
| Tegangan logik | 5 V TTL |
Kelebihan
- Mengukur banyak parameter listrik sekaligus (tegangan, arus, daya, energi, dll).
- Output bisa langsung dibaca oleh mikrocontroller lewat serial.
- Tidak perlu sensor tegangan/arus terpisah → semua sudah dalam satu modul.
Kekurangan / Hal yang Perlu Diwaspadai
- Harus dihubungkan ke listrik bertegangan tinggi AC, jadi membutuhkan kehati-hatian tinggi saat pemasangan.
- Memerlukan pemrograman dan wiring yang benar agar data terbaca.
- Akurasi meskipun tinggi (~±0.5 %) tetap punya toleransi, jadi tidak setepat alat ukur profesional.
Contoh Penerapan
- Monitoring energi rumah – lihat berapa konsumsi listrik real-time.
- Panel Surya / Solar Power Monitoring – pantau produksi & konsumsi energi.
- Sistem IoT / Dashboard online – kirim data ke Blynk/Thingspeak.
- Proteksi otomatis – relay buka jika arus berlebih.
- Alat pembatas konsumsi listrik – buat proyek energy efficiency.
Wiring PZEM-004T V4 ke Arduino Uno

| PZEM-004T | Arduino Uno |
|---|---|
| VCC | 5 V |
| GND | GND |
| TX | Arduino RX (mis: pin 8 SoftwareSerial) |
| RX | Arduino TX (mis: pin 9 SoftwareSerial) |
#include <SoftwareSerial.h>
#include <PZEM004Tv30.h>
// SoftwareSerial RX: 8, TX: 9
SoftwareSerial pzemSerial(8, 9);
PZEM004Tv30 pzem(pzemSerial);
void setup() {
Serial.begin(115200); // Serial Monitor
pzemSerial.begin(9600); // PZEM default baud
Serial.println("PZEM-004T V4 READY");
}
void loop() {
float voltage = pzem.voltage(); // V
float current = pzem.current(); // A
float power = pzem.power(); // W
float energy = pzem.energy(); // kWh
float frequency = pzem.frequency(); // Hz
float pf = pzem.pf(); // Power Factor
if (isnan(voltage)) {
Serial.println("PZEM TIDAK TERBACA!");
} else {
Serial.print("Tegangan : "); Serial.print(voltage); Serial.println(" V");
Serial.print("Arus : "); Serial.print(current); Serial.println(" A");
Serial.print("Daya : "); Serial.print(power); Serial.println(" W");
Serial.print("Energi : "); Serial.print(energy); Serial.println(" kWh");
Serial.print("Frekuensi : "); Serial.print(frequency); Serial.println(" Hz");
Serial.print("PF : "); Serial.println(pf);
}
Serial.println("-----------------------");
delay(1000);
}
Wiring PZEM-004T V4 ke Arduino Mega

| Modul PZEM-004T | Arduino Mega |
|---|---|
| VCC | 5V |
| GND | GND |
| TX (modul) | RX2 (pin 16) |
| RX (modul) | TX2 (pin 17) |
include <PZEM004Tv30.h>
#include <SoftwareSerial.h> // Tidak digunakan di Mega, hanya untuk info
// Gunakan Serial2 (pin 16 = TX2, pin 17 = RX2)
PZEM004Tv30 pzem(&Serial2);
void setup() {
Serial.begin(9600); // Untuk monitor Serial di PC
Serial2.begin(9600); // Untuk komunikasi ke PZEM-004T V3
delay(1000);
Serial.println("Monitoring PZEM-004T V3 dengan Arduino Mega (Serial2)");
IPAddress ip = pzem.getAddress();
Serial.print("PZEM Alamat IP: "); Serial.println(ip);
}
void loop() {
float voltage = pzem.voltage();
float current = pzem.current();
float power = pzem.power();
float energy = pzem.energy();
float frequency = pzem.frequency();
float pf = pzem.pf();
if (isnan(voltage)) {
Serial.println("Gagal membaca data dari PZEM-004T.");
} else {
Serial.print("Tegangan : "); Serial.print(voltage); Serial.println(" V");
Serial.print("Arus : "); Serial.print(current); Serial.println(" A");
Serial.print("Daya : "); Serial.print(power); Serial.println(" W");
Serial.print("Energi : "); Serial.print(energy); Serial.println(" Wh");
Serial.print("Frekuensi : "); Serial.print(frequency); Serial.println(" Hz");
Serial.print("Faktor Daya: "); Serial.println(pf);
Serial.println("------------------------------------");
}
delay(2000);
}
