• Arduino
    • Sensor
    • program Arduino
  • Project
  • Produk
  • IOT
Kamis, Oktober 2, 2025
mikroavr.com
No Result
View All Result
  • Login
  • Arduino
    • Sensor
    • program Arduino
  • Project
  • Produk
  • IOT
  • Arduino
    • Sensor
    • program Arduino
  • Project
  • Produk
  • IOT
No Result
View All Result
mikroavr
No Result
View All Result
Home IOT

Cara Termudah Monitoring Listrik 3 Phasa dengan Modul ESP32 dan Sensor PZEM-004T v3

Jimmi Sitepu by Jimmi Sitepu
Februari 21, 2020
1 0
0
Cara Termudah Monitoring Listrik 3 Phasa dengan Modul ESP32 dan Sensor PZEM-004T v3
240
SHARES
8k
VIEWS
Share on FacebookShare on Twitter

Sensor PZEM-004T v.3.0

Sensor PZEM-004T v30 adalah sensor yang bisa mengukur beberapa variable listrik, sebuah sensor yang cocok di gunakan untuk mengukur listrik rumahan. Spesifikasi dari sensor ini sebagai berikut:

VoltagePower FactorFrequency
Range nya: 80 – 260VAC
Resolusi: 0.1
Akurasi : 0.5%
Range: 0.00 – 1.00
Resolusi : 0.1
Akurasi: 1%
Range: 45-65Hz
Resolusi: 0.1Hz
Akurasi: 0.5%
CurrentActive PowerActive Energy
Range: 0-100A / 0- 10A
Start: 0.01A(10A) 0.02A(100A)
Resolusi: 0.000A
Akurasi: 0.5%
Range 0 – 2.3kW(10A)
Start: 0.4W
Resolusi: 0.1W
Akurasi: 0.5%
Range: 0 – 9999.99kWh
Resolusi : 1Wh
Akurasi: 0.5%
Spesifikasi Sensor PZEM-004v30

Dengan spesifikasi di atas kita bisa mengukur listrik dengan Arus AC 100A, namun jika ingin mengukur lebih dari itu, maka harus menggunakan sensor CT yang lebih besar, kemudian sensor CT pzem-004v3 mengukur cable sensor CT misalnya sensor CT 300/5. Nilai pengukuran nya di sesuaikan dengan ratio dari sensor CT tersebut.

READ ALSO

Membaca Sensor URM14 RS485 dengan ESP32 Arduino

4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

Modul PZEM-Mikro

Untuk mempermudah monitoring listrik 3 phase ini, kami mikroavr membuat sebuah modul yang khusus. Fungsi nya mengukur arus dengan sensor pzem-004v3 yang dibaca oleh atmega2560 ( arduino mega) kemudian di kirim ke esp32.

Untuk posting data nya bisa menggunakan sim8000v2 atau akses wifi yang di miliki oleh esp32 itu sendiri. Desain harware nya bisa di lihat pada gambar di bawah ini.

blok diagra modul pzem

Modul di atas di desain dalam satu board. Arduino mega2560 dan esp32 di satukan, kemudian di program dengan usb to serial yang kita desain kita sendiri.

Ketiga sensor pzem-004Tv3 di baca oleh dua hardware serial atmega2560 ( Serial2 dan Serial3) kemudian yang satu nya lagi di baca oleh software serial di pin D3 dan D51. Semua data pengukuran di kirim ke ESP32 dengan Serial1.

Desain Hardware dan photo dari controller ini bisa di lihat pada gambar di bawah ini.

Desain controller

Upload Program

Upload program ke esp32 atau ke mega2560 menggunakan usb to serial custome, yang khusus di desain agar langsung di plug ke pcb board. ada dua dip swich merah, satu mode untuk esp32 dan satu mode untuk mega2560. Untuk pemilihan mode bisa di lihat gambar di atas, untuk diswitch sebelah kiri di gunakan untuk mode Arduino mega2560, dan untuk Dip Switch kanan untuk mode ESP32

Order Modul PZEM-MIKRO

DIP SWITCH KIRI UNTUK ARDUINO MEGA2560, DAN DIP SIWTCH KANAN UNTUK ESP32

pemilihan mode program

Untuk mega2560 nya, teman-teman tidak perlu program lagi, karena kami telah memprogram arduino mega2560 nya. Teman-teman hanya perlu program esp32 dengan library yang sudah di buat. Untuk pengujian programakan kita bahas di bawah.

Untuk cara upload progrram bisa di lihat pada gambar di bwah ini. Pemrogram nya sama dengan board esp32 yang ada pada umum nya.

Program Uji ESP32

Baca Sensor

Sebelum membaca data sensor dengan esp32, teman-teman perlu rangkai board controller dengan sensor seperti pada gambar di bawah ini.

Hubungkan sensor CT dan input voltage ke Sensor PZEM-004v3. kemudian geser dip Switch kirim ke on untuk mode program ESP32. Sebelum program ESP32 nya, download dulu library pzem-mikro dibawah ini, cukup clik tombol merah di bawah ini

Download library pzem-mikro

check Example, buka file read_pzem.ino, atau bisa di lihat pada gambar program dib awah ini

#include "pzem_mikro.h";
pzem_mikro pzem(33, 9600);
float curIR, curIS, curIT, Freq;
float voltR, voltS, voltT; 
float pfr,pfs, pft;
float PowerR, PowerS, PowerT;
float KWHR,KWHS, KWHT; 
void setup(){
    Serial.begin(115200);
}

void loop(){
    if(pzem.get_sensor()){
      curIR = pzem.IR();curIS = pzem.IS();curIT = pzem.IT();
      voltR = pzem.VR();voltS = pzem.VS();voltT = pzem.VT();
      Freq = pzem.frequency();    
      pfr = pzem.PFR();pfs = pzem.PFS();pft = pzem.PFT();
      PowerR = pzem.powerR(); PowerS = pzem.powerS(); PowerT = pzem.powerT(); 
      KWHR = pzem.kwhR();KWHS = pzem.kwhS();KWHT = pzem.kwhT();
    }else{
      Serial.println("connection fail");
    }
    
    Serial.print("IR: ");Serial.print(curIR);
    Serial.print(" IS: ");Serial.print(curIS);
    Serial.print(" IT: ");Serial.println(curIT);
    
    Serial.print("VR: ");Serial.print(voltR);
    Serial.print(" VS: ");Serial.print(voltS);
    Serial.print(" VT: ");Serial.println(voltT);
    
    Serial.print("freq: ");Serial.println(Freq);
    
    Serial.print("PFR: ");Serial.print(pfr);
    Serial.print(" PFS: ");Serial.print(pfs);
    Serial.print(" PFT: ");Serial.println(pft);

    Serial.print("powerR: ");Serial.print(PowerR);
    Serial.print(" powerS: ");Serial.print(PowerS);
    Serial.print(" powerT: ");Serial.println(PowerT);
    
    Serial.print("kwhR: ");Serial.print(KWHR);
    Serial.print(" kwhS: ");Serial.print(KWHS);
    Serial.print(" kwhT: ");Serial.println(KWHT);
    Serial.println("---");
    delay(1000);
}


Buka Serial monitor Arduino Ide, disana akan terbaca data data sensor. Silahkan teman-teman olah program di atas untuk keperluan masing masing

IoT Blynk ESP32 ( wifi )

Karena menggunakan ESP32, bisa langsung di koneksikan ke wifi, Program nya mengguanakn dua file, satu modem.h satu iotblynk.ino, bisa langsung buka di example. atau program nya seperti di bawah ini.

file modem.h

#include "WiFi.h";
#include "WiFiClient.h";
#include "BlynkSimpleEsp32.h";

char auth[] = "your-token-blynk";
char ssid[] = "ssid-wifi";
char pass[] = "pass-wifi";

void init_modem(){
  Blynk.begin(auth, ssid, pass);
}


file iot_blynk.ino

#include <pzem_mikro.h>
#include "modem.h"

pzem_mikro pzem(33, 9600);

float curIR, curIS, curIT, Freq;
float voltR, voltS, voltT; 
float pfr,pfs, pft;
float PowerR, PowerS, PowerT;
float KWHR,KWHS, KWHT; 
unsigned long cur_time, old_time;

void setup(){
    Serial.begin(115200);
    init_modem();
}

void loop(){
   Blynk.run();
   cur_time = millis();
   if(cur_time - old_time >= 2000){   
      if(pzem.get_sensor()){
        curIR = pzem.IR();curIS = pzem.IS();curIT = pzem.IT();
        voltR = pzem.VR();voltS = pzem.VS();voltT = pzem.VT();
        Freq = pzem.frequency();    
        pfr = pzem.PFR();pfs = pzem.PFS();pft = pzem.PFT();
        PowerR = pzem.powerR(); PowerS = pzem.powerS(); PowerT = pzem.powerT(); 
        KWHR = pzem.kwhR();KWHS = pzem.kwhS();KWHT = pzem.kwhT();
      }else{
        Serial.println(F("connection fail"));
        pzem.rstPZEM();
      }
      print_data();     
      Blynk.virtualWrite(V0, voltR);
      Blynk.virtualWrite(V1, curIR);
      Blynk.virtualWrite(V2, pfr);
      Blynk.virtualWrite(V3, PowerR);
      Blynk.virtualWrite(V4, KWHR);
      old_time = cur_time;
  }
    delay(1000);
}

void print_data(){
  Serial.print("IR: ");Serial.print(curIR);
    Serial.print(" IS: ");Serial.print(curIS);
    Serial.print(" IT: ");Serial.println(curIT);
    
    Serial.print("VR: ");Serial.print(voltR);
    Serial.print(" VS: ");Serial.print(voltS);
    Serial.print(" VT: ");Serial.println(voltT);
    
    Serial.print("freq: ");Serial.println(Freq);
    
    Serial.print("PFR: ");Serial.print(pfr);
    Serial.print(" PFS: ");Serial.print(pfs);
    Serial.print(" PFT: ");Serial.println(pft);

    Serial.print("powerR: ");Serial.print(PowerR);
    Serial.print(" powerS: ");Serial.print(PowerS);
    Serial.print(" powerT: ");Serial.println(PowerT);
    
    Serial.print("kwhR: ");Serial.print(KWHR);
    Serial.print(" kwhS: ");Serial.print(KWHS);
    Serial.print(" kwhT: ");Serial.println(KWHT);
    Serial.println("---");

}



IoT Blynk SIM800

Seperti Keterangan di atas, bahwa modol PZEM-MIKRO ini juga di lengkapi dengan sim800. Untuk memonitoring listrik menggunakan sim800 hampir mirip program nya dengan contoh Iot Blynk di wifi, tinggal dirubah sedikit di file modem.h nya. Sebelum upload program di bawah ini, download dulu library tinygsm, tekan tombol merah di bawah ini.

Download library tinygsm.h

file modem.h

#define BLYNK_PRINT Serial
#define SerialAT Serial2
#define RXD2 27
#define TXD2 26

#define TINY_GSM_MODEM_SIM800
#include "TinyGsmClient.h";
#include "BlynkSimpleTinyGSM.h";

TinyGsm modem(SerialAT);

char auth[] = "your-token-blynk";
char apn[]  = "YourAPN";
char user[] = "";
char pass[] = "";

void init_modem(){
  SerialAT.begin(115200, SERIAL_8N1, RXD2, TXD2);
  delay(1000);
  //--------change baud to 4800 ------------
    SerialAT.println("AT+IPR=4800");
  while(SerialAT.available()>0){
    Serial.print(SerialAT.readString());
  }
  delay(2000);
  SerialAT.println("AT&W");
  while(SerialAT.available()>0){
    Serial.print(SerialAT.readString());
  }
  delay(2000);
  SerialAT.begin(4800, SERIAL_8N1, RXD2, TXD2);
  SerialAT.println("AT+IPR?");
  while(Serial1.available()>0){
    Serial.print(Serial1.readString());
  }
  delay(2000);
  //--------------------
  
  Serial.println("Initializing modem...");
  modem.restart();
  Blynk.begin(auth, modem, apn, user, pass);
}

iot_blynk_sim800.ino

#include "pzem_mikro.h";
#include "modem.h"
pzem_mikro pzem(33, 9600); // jangan rubah nilai ini

float curIR, curIS, curIT, Freq;
float voltR, voltS, voltT; 
float pfr,pfs, pft;
float PowerR, PowerS, PowerT;
float KWHR,KWHS, KWHT; 
unsigned long cur_time, old_time;

void setup(){
    Serial.begin(115200);
    init_modem();
}

void loop(){
     Blynk.run();
   cur_time = millis();
   if(cur_time - old_time >= 2000){   
      if(pzem.get_sensor()){
        curIR = pzem.IR();curIS = pzem.IS();curIT = pzem.IT();
        voltR = pzem.VR();voltS = pzem.VS();voltT = pzem.VT();
        Freq = pzem.frequency();    
        pfr = pzem.PFR();pfs = pzem.PFS();pft = pzem.PFT();
        PowerR = pzem.powerR(); PowerS = pzem.powerS(); PowerT = pzem.powerT(); 
        KWHR = pzem.kwhR();KWHS = pzem.kwhS();KWHT = pzem.kwhT();
      }else{
        Serial.println(F("connection fail"));
        pzem.rstPZEM();
      }
      print_data();     
      Blynk.virtualWrite(V0, voltR);
      Blynk.virtualWrite(V1, curIR);
      Blynk.virtualWrite(V2, pfr);
      Blynk.virtualWrite(V3, PowerR);
      Blynk.virtualWrite(V4, KWHR);
      old_time = cur_time;
  }
    delay(1000);
}
void print_data(){
    Serial.print("IR: ");Serial.print(curIR);
    Serial.print(" IS: ");Serial.print(curIS);
    Serial.print(" IT: ");Serial.println(curIT);
    
    Serial.print("VR: ");Serial.print(voltR);
    Serial.print(" VS: ");Serial.print(voltS);
    Serial.print(" VT: ");Serial.println(voltT);
    
    Serial.print("freq: ");Serial.println(Freq);
    
    Serial.print("PFR: ");Serial.print(pfr);
    Serial.print(" PFS: ");Serial.print(pfs);
    Serial.print(" PFT: ");Serial.println(pft);

    Serial.print("powerR: ");Serial.print(PowerR);
    Serial.print(" powerS: ");Serial.print(PowerS);
    Serial.print(" powerT: ");Serial.println(PowerT);
    
    Serial.print("kwhR: ");Serial.print(KWHR);
    Serial.print(" kwhS: ");Serial.print(KWHS);
    Serial.print(" kwhT: ");Serial.println(KWHT);
    Serial.println("---");

}

Sekian dulu tulisan kita dari mikroavr. Jika tertarik ingin memiliki controller di atas, tinggal clik tombol merah di bawah ini.

Pesan modul PZEM

Thanks (mikroavr.com)

Share240Tweet
Previous Post

Membaca Sensor PZEM-004T v3 dengan ESP32

Next Post

ESP32 Telegram Bot Untuk Relay 8 channel dan Sensor DHT21

Jimmi Sitepu

Jimmi Sitepu

Hobbyist Embedded System, Robotic, IOT and write all about them. So we have nice quote "Learning and Sharing"

Related Posts

sensor URM14 Arduino
ESP32

Membaca Sensor URM14 RS485 dengan ESP32 Arduino

Juli 7, 2022
4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega
Arduino

4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

Juni 13, 2022
Mendapatkan Waktu Akurat dengan NTP GPS
ESP32

Mendapatkan Waktu Akurat dengan NTP GPS

Mei 8, 2022
Custome GPS Logger Arduino dengan Akeses Internet SIM7600 4G
IOT

Custome GPS Logger Arduino dengan Akeses Internet SIM7600 4G

April 14, 2022
Tutorial Menggunakan Weather Station DFRobot SEN0186 dengan Arduino ESP32
Arduino

Tutorial Menggunakan Weather Station DFRobot SEN0186 dengan Arduino ESP32

Maret 9, 2022
saklar sms arduino sim800
Arduino

Saklar SMS Arduino dengan SIM800 Untuk Kontrol Jarak Jauh, Download Program nya

Februari 23, 2022
Next Post
ESP32 Telegram Bot Untuk Relay 8 channel dan Sensor DHT21

ESP32 Telegram Bot Untuk Relay 8 channel dan Sensor DHT21

ESP32 LoRa Node 923MhZ dengan ADC yang lebih Baik dan Stabil

ESP32 LoRa Node 923MhZ dengan ADC yang lebih Baik dan Stabil

Please login to join discussion

Tulisan Terbaru

sensor URM14 Arduino

Membaca Sensor URM14 RS485 dengan ESP32 Arduino

Juli 7, 2022
4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

Juni 13, 2022
Mendapatkan Waktu Akurat dengan NTP GPS

Mendapatkan Waktu Akurat dengan NTP GPS

Mei 8, 2022
Custome GPS Logger Arduino dengan Akeses Internet SIM7600 4G

Custome GPS Logger Arduino dengan Akeses Internet SIM7600 4G

April 14, 2022
Tutorial Menggunakan Weather Station DFRobot SEN0186 dengan Arduino ESP32

Tutorial Menggunakan Weather Station DFRobot SEN0186 dengan Arduino ESP32

Maret 9, 2022
ethernet arduino

Arduino Ethernet Tutorial, Project dengan Arduino Uno dan Mega

Februari 24, 2022

Browse by Category

  • Arduino
  • Ebook
  • ESP32
  • IOT
  • jasa
  • Komponen
  • PCB
  • Produk
  • program Arduino
  • Project
  • Rangkaian
  • Sensor
  • Tips
  • Uncategorized

Recent News

sensor URM14 Arduino

Membaca Sensor URM14 RS485 dengan ESP32 Arduino

Juli 7, 2022
4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

Juni 13, 2022
  • About US
  • Blog
  • MIKROAVR

© 2020 mikroavr.com - Learning and sharing.

Welcome Back!

Sign In with Google
OR

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In

Add New Playlist

No Result
View All Result
  • About US
  • Blog
  • MIKROAVR

© 2020 mikroavr.com - Learning and sharing.