PZEM004T - Volt , Current ไม่แสดงสถานะ

ไฟเข้า220vac ปกติคับ

ใช้ขาไหนรับอินพุต บน ESP ครับ

D01,D02ครับ

ถ้าอน่างนั้นก็ไม่น่าจะออกละครับ มันสลับขากันรึป่าว

#define FIRST_ADDRESS 0
#define MAX_ATTEMPTS 10
#define min(a,b) ((a)<(b)?(a):(b))

PZEM004T pzem(4, 5); // RX,TX d2,d6
IPAddress ip(192, 168, 1, 1);

Rx = 4
Tx = 5

image

ผมแก้จากd6มาd1คับเพราะนึกว่าขาpinเสีย

ผมอัฟcodeใหม่ไปเป็นd1คับ

เช็คหน่อย D01 ต่อ Tx หรือ Rx D02 ด้วยครับ

d1=tx
d2=rx

ตอนนี้ยังออกเป็น -1 อยู่ใช่ไหมครับ

1 Likes

เหมือนเดิมคับแต่เดียวงมต่อพรุ่งนี้นะคับพี่

ส่วนโค้ต void setup() เพิ่มการกำหนดขา 4,5 เป็น input เข้าไปด้วยครับ

void setup() {
pinMode(4, INPUT);
pinMode(5, INPUT);
}
#include <PZEM004Tv30.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SoftwareSerial.h> 
PZEM004Tv30 pzem(D5,D6);  // (RX,TX) connect to TX,RX of PZEM

float voltage_blynk=0;
float current_blynk=0;
float power_blynk=0;
float energy_blynk=0;
float frequency_blynk=0;
float pf_blynk=0;

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "*****************************************";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "*********";
char pass[] = "*********************";

unsigned long lastMillis = 0;

void setup() {
  Serial.begin(115200); 
  pinMode(D5, INPUT);
  pinMode(D6, OUTPUT);

   if (WiFi.begin(ssid, pass)) {
    while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(".");
      }
    }
  Serial.println("              ");
  Serial.println("WiFi connected");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  Blynk.begin(auth, ssid, pass);
}

void loop() {

    Blynk.run();
    
    float voltage = pzem.voltage();
    if(voltage != NAN){
        Serial.print("Voltage: "); Serial.print(voltage); Serial.println("V"); voltage_blynk =voltage;
    } else {
        Serial.println("Error reading voltage");
    }

    float current = pzem.current();
    if(current != NAN){
        Serial.print("Current: "); Serial.print(current); Serial.println("A"); current_blynk=current;
    } else {
        Serial.println("Error reading current");
    }

    float power = pzem.power();
    if(current != NAN){
        Serial.print("Power: "); Serial.print(power); Serial.println("W"); power_blynk=power;
    } else {
        Serial.println("Error reading power");
    }

    float energy = pzem.energy();
    if(current != NAN){
        Serial.print("Energy: "); Serial.print(energy,3); Serial.println("kWh"); energy_blynk =energy;
    } else {
        Serial.println("Error reading energy");
    }

    float frequency = pzem.frequency();
    if(current != NAN){
        Serial.print("Frequency: "); Serial.print(frequency, 1); Serial.println("Hz"); frequency_blynk =frequency;
    } else {
        Serial.println("Error reading frequency");
    }

    float pf = pzem.pf();
    if(current != NAN){
        Serial.print("PF: "); Serial.println(pf); pf_blynk =pf;
    } else {
        Serial.println("Error reading power factor");
    }

    Serial.println();
    delay(100);

     //Publish data every 10 seconds (10000 milliseconds). Change this value to publish at a different interval.
          if (millis() - lastMillis > 100) {
            lastMillis = millis();
            
            Blynk.virtualWrite(V1, voltage_blynk);
            Blynk.virtualWrite(V2, current_blynk  );            
            Blynk.virtualWrite(V3, power_blynk);
            Blynk.virtualWrite(V4, energy_blynk  );
            Blynk.virtualWrite(V5, frequency_blynk  );
            Blynk.virtualWrite(V6, pf_blynk  );
            Blynk.virtualWrite(V7, lastMillis  );      

          }         
}

ได้แล้วนะคับพอดีแก้ปัญหาเคสนี้นี้ ลงlibrary ไหม่เป็นpzem-004t v3.0คับ
แล้วแก้

ขอบคุณมากคับ

2 Likes

เยี่ยมครับ