Cara Membaca Sensor Ampere Voltage PZEM-004T Menggunakan ESP32

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

  1. 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.).
  2. Koneksi PZEM-004T ke ESP32:
    • Input PZEM (L/N): Sambungkan ke sumber daya AC (220V/110V).
    • RS485 ke TTL Module:
      • A/B pada PZEMA/B pada modul RS485.
      • VCC/GND pada modul RS4853.3V/GND ESP32.
    • TTL ke ESP32:
      • RX TTLTX ESP32.
      • TX TTLRX 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

Mau Konsultasi & Diskusi ?