Juni-Agustus, 2022

Sensor PZEM-004T Untuk Monitoring Daya

PZEM-004T

Sensor PZEM-004T adalah sensor yang dapat mengukur Arus, Tegangan, Power dan Energy dari listrik AC. Sensor ini mengeluarkan output dengan komunikasi serial. Jika kita ingin menghubungkan dengan Arduino maka komunikasi yang di gunakan adalah komunikasi serial.

Spesifikasi PZEM-004T

  1. Voltage
    • Range Pengukuran:80-260V
    • Resolusi:0.1V
    • Akurasi Pengukuran:0.5%
  2. Current
    • Range Pengukuran:0-100A
    • Resolusi:0.01A
    • Akurasi Pengukuran:0.5%
  3. Active Power
    • Range Pengukuran:0-23kW
    • Resolusi:0.01W
    • Akurasi Pengukuran:0.5%
  4. Power Factor
    • Range Pengukuran:0.00-1.00
    • Resolusi:0.01
    • Akurasi Pengukuran:1%
  5. Frequency
    • Range Pengukuran:45Hz-65Hz
    • Resolusi:0.01Hz
    • Akurasi Pengukuran:0.5%
  6. Active Energy
    • Range Pengukuran:0-9999.99kWh
    • Resolusi:1Wh
    • Akurasi Pengukuran:0.5%

Diagram Blok

Diagram Blok PZEM-004T

Wiring Diagram

Diagram Blok PZEM-004T Diagram Blok PZEM-004T

Program NodeMCU ESP8266

                
  #include ESP8266HTTPClient.h
  #include ESP8266WiFi.h
  #include PZEM004Tv30.h
  #include SoftwareSerial.h

  #if !defined(PZEM_RX_PIN) && !defined(PZEM_TX_PIN)
  #define PZEM_RX_PIN D1
  #define PZEM_TX_PIN D2
  #endif

  #ifndef STASSID
  #define STASSID "GalaxyTabA"
  #define STAPSK  "tvpd6938"
  #endif
  const char* ssid     = STASSID;
  const char* password = STAPSK;
  const char* host = "192.168.43.240";

  SoftwareSerial pzemSWSerial(PZEM_RX_PIN, PZEM_TX_PIN);
  PZEM004Tv30 pzem(pzemSWSerial);

  void setup() {
      Serial.begin(9600);

      //koneksi ke wifi
      WiFi.begin(ssid, password);
      Serial.println ("Connecting...");
      while(WiFi.status() != WL_CONNECTED)
      {
        Serial.println (".");
        delay (1000);
        
      }

      //apabila berhasil terkoneksi 
      Serial.println ("Connected");
  }

  void loop() {

      // Membaca data dari sensor
      float tegangan = pzem.voltage();
      float arus = pzem.current();
      float daya = pzem.power();

      // Cek data bisa dibaca atau tidak
      if(isnan(tegangan)){
          Serial.println("Gagal membaca tegangan");
      }else if (isnan(arus)) {
          Serial.println("Gagal membaca arus");
      } else if (isnan(daya)) {
          Serial.println("Gagal membaca daya");
      } 
      else {

          // Menampilkan data hasil pembacaan pada serial monitor 
          Serial.println("Tegangan: " + String (tegangan) ); 
          Serial.println("Arus: " + String (arus) );         
          Serial.println("Daya: " + String (daya) );

      }

      //kirim data ke server
      WiFiClient client;
      //inisialisasi port web server
      const int httpPort = 80;
      if ( !client.connect (host, httpPort) )
      {
        Serial.println ("Connection Failed");
        return;
      }

      //kondisi pasti terkoneksi
      //kirim data sensor ke database/web

      String Link;
      HTTPClient http;

      Link = "http://" + String (host) + "/monitoringdaya/kirimdata.php?tegangan=" + String (tegangan) + "&arus=" + String (arus) + "&daya=" + String (daya);
      //eksekusi alamat link
      http.begin (client, Link);
      http.GET();
      
      //baca respon setelah berhasil kirim nilai sensor
      String respon = http.getString ();
      Serial.println (respon);
      http.end ();   
      delay (5000);

  }
                
              

Hasil Project