IOT dengan ESP32
ESP32 adalah chip upgrade dari versi esp12. chip ini memiliki pin yang lebih banyak dan interface yang lebih banyak jika di bandingkan dengan esp12 ( chip yang di pakai di nodemcu).
Chip ini memiliki 3 hardware serial sehingga cocok jika di gunakan untuk membaca sensor pzem-004T v3, karena interface sensor pzem-004T ini adalah menggunakan komunikasi serial. Hardware Serial1 dan Serial2 pada ESP32 ini bisa di swap ke pin yang lain. Berbeda dengan Arduino mega2560 yang mana fungsi pin serial nya tidak bisa dirubah ke pin lain.
Alasan lain menggunakan chip ini adalah tersedia nya akses wifi. yang mana sensor pzem-004T v3 ini bisa kita baca menggunakan ESP32 dan langsung bisa di koneksikan ke internet. Arti nya sensor ini bisa di monitoring dengan IOT.
Sensor PZEM-004T v3
Sensor ini berguna untuk mengukur variable listrik pada Tegangan AC. yang di ukur antara lain sebagai berikut:
- Arus 0-100A
- Tegangan AC
- Frequensi Tegangan
- Power Factor
- Power ( watt)
- energy (kWh)
Berapa kali saya menggunakan sensor ini untuk monitoring Listrik. Dia mampu mengukur Arus sampai dengan 0.037A. Bisa teman-teman lihat di video youtube kita dibawah ini, dimana sensor PZEM-004T v3 di gunakan untuk membaca Listrik 3 phase nanti nya
Persiapan Membaca Sensor
Untuk membaca sensor ini dengan esp32, teman-teman perlu dua hal berikut ini,
Untuk menambah board esp32 di arduino ide, teman-teman cukup klik link di bawah list di atas. Jika teman-teman sudah terbiasa dengan Arduino, maka hal di atas cukup mudah dan tidak terlalu sulit.
Program Membaca Sensor
Untuk membaca sensor PZEM-004Tv30 ini agak berbeda sedikit saja dengan menggunakan Arduino uno atau mega bila di bandingkan dengan esp32. Perbedaan nya terletak pada config Serial Hardware nya. Config Serial hardware pada esp32 sebagai berikut.
Serial2.begin(9600, SERIAL_8N1, 16, 17);
9600 adalah baud rate, SERIAL_8N1 adalah tipe pengiriman serial, sedangkan 16 dan 17 adalah pin esp32 yang kita ingin kita ubah menjadi rx dan tx nya Serial2.
Untuk program ke seluruhan dari membaca sensor ini sebagai berikut
#include <PZEM004Tv30.h> #define RXD2 16 #define TXD2 17 PZEM004Tv30 pzem_r(&Serial2); float vr; float ir; float freq; float pf_r; float energy; float power; void setup() { Serial.begin(115200); Serial2.begin(9600, SERIAL_8N1, RXD2, TXD2); } void loop() { baca_pzem(); Serial.print("Volt: ");Serial.print(vr,2 );Serial.print("V, "); Serial.print("curr: ");Serial.print(ir,3);Serial.print("A, "); Serial.print("pf: ");Serial.print(pf_r);Serial.println("%, "); Serial.print("Power: ");Serial.print(power);Serial.print("W, "); Serial.print("Energy: ");Serial.print(energy,3);Serial.print("kWh, "); Serial.print("freq: ");Serial.print(freq,1);Serial.println("Hz, "); Serial.println(); delay(2000); } void baca_pzem(){ vr = pzem_r.voltage(); ir = pzem_r.current(); freq = pzem_r.frequency(); pf_r = pzem_r.pf(); power = pzem_r.power(); energy = pzem_r.energy(); }
Sensor di atas sudah berhasil di baca menggunakan esp32. Dimana sensor PZEM-004v30 di baca setiap 2 detik di atas. Untuk Wiring nya sebagai berikut
pin esp32 pin pzem-004t ----------------------------- GPIO16 tx GPIO17 rx 3.3v vcc GND gnd -----------------------------
Catatan Penting sensor PZEM-004Tv30
- Sensor pzem-004Tv30 ini bisa bekerja di level tegangan 3.3v dan 5v. di vcc nya sensor ini. jadi jika menggunakan esp32 atau microcontroller yang tegangan level nya di 3,3v maka gunakan lah 3.3v juga di vcc nya sensor. Begitu juga jika microcontroller nya di tegangan 5v. maka gunakan juga vcc nya di 5v
- Saya belum berhasil membaca sensor pzem-004Tv30 menggunakan software serial pada esp32
Semoga tulisa di atas bermanfaat, Thanks