Pendahuluan

Pada tutorial kali ini kita akan melakukan update tutorial sebelumnya yaitu Cara Mengukur Penggunaan Daya Listrik AC Rumah Menggunakan Arduino dan Sensor PZEM-004T dengan LCD 20×4 I2C  , yang mana pada tutorial tersebut kita sudah membuat kwh meter atau power meter menggunakan PZEM-004T dan ditampilkan pada LCD 20×4, Untuk memudahkan memantauan kali ini kita akan menggunakan Blynk supaya data penggunaan listrik kita dapat di monitoring secara online dan realtime lewat internet dengan menggunakan smartphone

 

Komponen Yang Digunakan

Berikut adalah daftar komponen yang digunakan dalam proyek ini, Teman teman dapat mendapatkan nya di Golite Store:

  1. Sensor PZEM-004T – Beli Disini
  2. ESP32 Development Board – Beli Disini
  3. Kabel Jumper – Beli Disini
  4. Breadboard – Beli Disini
  5. Smartphone (untuk aplikasi Blynk)

 

Skema Sistem

Konfigurasi Pinout

  • Microcontroller (ESP32) -> Sensor PZEM-004T
    • VIN -> VCC
    • GND -> GND
    • RX2 -> TX
    • TX2 -> RX
  • Trafo CT -> Sensor PZEM-004T
    • Kabel Merah -> Terminal No 4
    • Kabel Hitam -> Terminal No 3
  • Input AC 220V -> Sensor PZEM-004T
    • Netral -> Terimal No 1
    • Fasa -> Terimal No 2 (Harus di masukan pasa trafo CT Sesuai dengan skema diatas)

Skema sistem ini akan menghubungkan ESP32 dengan PZEM 004T hanya menggunakan 4 kabel , yaitu kabel power sensor  (vcc dan gnd) dihubungkan pada Vin dan GND, Sementara RX dan TX dihubungkan secara silang pada power Serial2 atau TX2 dan Rx2. Sementara trafo CT dihubungkan pada Teriminal No 4 dan 3, dan yang terakhir Input AC 220V Dihubungkan pada terimanal no 1 dan 2 yang mana salah satu kabelnya harus melewati trafo CT  terlebih dahulu.

 

Konfigurasi Pada Aplikasi Blynk IoT

Pada aplikasi Blynk kita harus buat template terlebih dahulu,

 

Setelah template berhasil terbuat langkah selanjutnya kita harus menambahankan widget yang mau di pakai untuk menampung data dari ESP32, disini kita akan menggunakan Gauge, Labeled Value dan SuperChart.

Setelah itu buat datastream pada V1,V2, V3, V4, V5 dan V6 dengan unit yang di sesuaikan untuk Voltage, Current, Power, Energy, Frequency dan PF.

Setelah itu klik tombol widget yang tadi kita buat dan pilih dengan datastream yang sesuai.

 

Setelah itu masuk ke setting lagi dan pilih tab Code, untuk mendapatkan kredensial yang kita perlukan untuk di paste pada program Arduino IDE

 

Program Arduino/ESP32

#include <PZEM004Tv30.h>

#define BLYNK_TEMPLATE_ID "xxxx"
#define BLYNK_TEMPLATE_NAME "xxx"

#define BLYNK_FIRMWARE_VERSION        "0.1.0"

#define BLYNK_PRINT Serial
//#define BLYNK_DEBUG

#define APP_DEBUG

// Uncomment your board, or configure a custom board in Settings.h
#define USE_ESP32_DEV_MODULE
//#define USE_ESP32C3_DEV_MODULE
//#define USE_ESP32S2_DEV_KIT
//#define USE_WROVER_BOARD
//#define USE_TTGO_T7
//#define USE_TTGO_T_OI

#include "BlynkEdgent.h"

#if !defined(PZEM_RX_PIN) && !defined(PZEM_TX_PIN)
#define PZEM_RX_PIN 16
#define PZEM_TX_PIN 17
#endif

#if !defined(PZEM_SERIAL)
#define PZEM_SERIAL Serial2
#endif


#if defined(ESP32)
PZEM004Tv30 pzem(PZEM_SERIAL, PZEM_RX_PIN, PZEM_TX_PIN);
#elif defined(ESP8266)
//PZEM004Tv30 pzem(Serial1);
#else
PZEM004Tv30 pzem(PZEM_SERIAL);
#endif

float voltage, current, power, energy, frequency, pf;


void setup() {
  Serial.begin(115200);
  delay(100);
  // pzem.resetEnergy()
  BlynkEdgent.begin();
}

void loop() {
  // Print the custom address of the PZEM
  Serial.print("Custom Address:");
  Serial.println(pzem.readAddress(), HEX);

  // Read the data from the sensor
  voltage = pzem.voltage();
  current = pzem.current();
  power = pzem.power();
  energy = pzem.energy();
  frequency = pzem.frequency();
  pf = pzem.pf();

  // Check if the data is valid
  if (isnan(voltage)) {
    Serial.println("Error reading voltage");
  } else if (isnan(current)) {
    Serial.println("Error reading current");
  } else if (isnan(power)) {
    Serial.println("Error reading power");
  } else if (isnan(energy)) {
    Serial.println("Error reading energy");
  } else if (isnan(frequency)) {
    Serial.println("Error reading frequency");
  } else if (isnan(pf)) {
    Serial.println("Error reading power factor");
  } else {

    // Print the values to the Serial console
    Serial.print("Voltage: ");      Serial.print(voltage);      Serial.println("V");
    Serial.print("Current: ");      Serial.print(current);      Serial.println("A");
    Serial.print("Power: ");        Serial.print(power);        Serial.println("W");
    Serial.print("Energy: ");       Serial.print(energy, 3);     Serial.println("kWh");
    Serial.print("Frequency: ");    Serial.print(frequency, 1); Serial.println("Hz");
    Serial.print("PF: ");           Serial.println(pf);
    Blynk.virtualWrite(V1, voltage);
    Blynk.virtualWrite(V2, current);
    Blynk.virtualWrite(V3, power);
    Blynk.virtualWrite(V4, energy);
    Blynk.virtualWrite(V5, frequency);
    Blynk.virtualWrite(V6, pf);
  }

  Serial.println();
  BlynkEdgent.run();
}

 

Untuk program lebih lengkap bisa download disini.

Penjelasan Program

  1. Include Library: Program ini menggunakan library sebagai  berikut :
    • PZEM004Tv30.h: Library ini digunakan untuk mengakses sensor PZEM004T dengan komunikasi serial
    • BlynkEdgent.h: Library ini berfungsi untuk menghubungkan program pada Blynk IoT
  2. Deklarasi Variabel Global dan Objek:
    • pzem: membuat objek dengan nama pzem dari library PZEM004Tv30.h
    • voltage, current, power, energy, frequency, pf: Variabel global untuk menampung nilai dari sensor
    • #define BLYNK_TEMPLATE_ID "xxxx": Diganti dengan Template ID yang sebelumnya telah didapatkan pada Blynk IoT
    • #define BLYNK_TEMPLATE_NAME "xxx": Diganti dengan Template Name yang sebelumnya telah didapatkan pada Blynk IoT
  3. Loop Function:
    • Serial.begin(115200): Mengaktifkan komunikasi serial pada serial monitor dengan baud rate 115200 untuk keperluan debugging.
    • pzem.resetEnergy(): Mereset nilai energi (kWh) pada sensor PZEM004T, Jika tidak mau reset maka bisa di komen saja.
  4. Loop Function:
    • pzem.readAddress(): Membaca alamat sensor PZEM004T dan menampilkan dalam bentuk hexadecimal pada serial monitor.
    • pzem.voltage(), pzem.current(), ... : Membaca data dari sensor PZEM004T untuk tegangan, arus, daya, energi, frekuensi, dan faktor daya.
    • isnan(): Memeriksa apakah data yang dibaca valid atau tidak.
    • Jika data valid, nilai-nilai tersebut dikirimkan ke Blynk menggunakan Blynk.virtualWrite(); Function
    • Jika ada kesalahan pembacaan, pesan kesalahan ditampilkan pada Serial Monitor
    • BlynkEdgent.run(): Untuk mengupdate data ke Blynk

 

Konfigurasi Pada Aplikasi Blynk IoT Untuk Terhubung Ke ESP32

Setelah program berhasil di upload kita harus menghubungkan ESP32 ke WiFi melalui Aplikasi Blynk IoT,

Pilih tombol Plus (+) pada pojok kanan home aplikasi Blynk , Setelah itu klik “Find device nearby”, setelah itu ikuti step yang di perantahkan, disini pada dasarnya kita hanya perlu memilih board ESP32 yang telah kita program sebelumnya, Pastikan bluetooth dan wifi pada hp kita sudah aktif

Setelah itu pilih nama wifi 2.4ghz yang akan kita pakai dan masukan juga password untuk wifi tersebut,

 

Setelah berhasil memasukan password maka ESP32 sudah berhasil terkoneksi dengan Blynk, kita juga dapat mengganti nama ESP32 ini pada aplikasi blynk nya

 

 

Pengujian

Tampilan pada Blynk IoT saat ESP32 sudah terhubung dan data berhasil terkirim

Tampilan hardware tanpa beban listrik, hanya tegangan saja yang tampil

 

Berikut adalah tampilan hardware dengan pengujian menggunakan beban lem bakar, sekarang data tegangan, arus, daya, energi, frequency dan pf sudah tampil pada aplikasi Blynk IoT

 

Kesimpulan

Dengan menyelesaikan tutorial ini, Kita telah berhasil membuat sistem monitoring penggunaan daya listrik 220V menggunakan sensor PZEM-004T, ESP32, dan Blynk IoT. Anda dapat terus mengembangkan proyek ini dengan menambahkan fitur-fitur tambahan atau mengintegrasikannya dengan sistem lain untuk pemantauan yang lebih kompleks.

One thought on “Membuat Monitoring Penggunaan Daya Listrik 220V Menggunakan PZEM-004T Dengan ESP32 Dan Blynk IoT”
  1. perkenalkan saya zenul,ingin bertanya utk rumus/kodingan cara mengitung berapa Rp /Kwh bagaimana ya.kalo boleh dikirim via email informasinya,terimakasih

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *






Hubungi Kami

Hubungi Kami

Kami menyediakan jasa proyek Arduino, Electrical, dan IoT (Internet of Things):
- Penyediaan komponen.
- Perancangan hardware dan software.
- Pemrograman.
- Hingga deploy server.


Cocok untuk hobi, edukasi (skripsi atau tugas akhir), dan industri.
Serahkan kepada kami, Anda tinggal terima hasil jadi!



Hubungi via WhatsApp



Ikuti Kami di TikTok (Inspirasi Project IoT)



Kunjungi YouTube Kami (Tutorial Project IoT)



Temukan Kami di Facebook



Beli Komponen Di GoLite Store