อยากทำโปรเจคเกี่ยวกับปลั๊กไฟรบรวนพี่ๆแนะนำหน่อยครับ pzem-004t + esp8266 nodemcu + Relay 5V + hi-link power supply 5v 10w


ที่ผมเขียนมามันถูกต้องแล้วใช่มั้ยครับหรือผมตกล่นตรงไหนอันนี้ผมกังวนที่สุดเลย55555
หรือพี่ๆมีใครเคยทำแนวๆนี้ช่วยแชร์ประสบการณ์หน่อยครับ

การต่อคิดว่าไม่มีปัญหาอะไรครับ ดูข้อมูลตัวอย่าง

ลองเอาโค้ตตัวอย่างไปเทสดู

#include <SoftwareSerial.h>
#include <PZEM004Tv30.h>

#define RELAY_PIN D8  // กำหนดขา D8 เพื่อสั่งเปิด/ปิดปลั๊กไฟ

// กำหนดพอร์ต Serial สำหรับการสื่อสารกับ PZEM-004T
SoftwareSerial pzemSerial(D5, D6); // TX -> D5, RX -> D6
PZEM004Tv30 pzem(&pzemSerial);

void setup() {
  Serial.begin(115200);  // Serial Monitor สำหรับ Debugging
  pzemSerial.begin(9600);  // Baud rate สำหรับการสื่อสารกับ PZEM-004T
  pinMode(RELAY_PIN, OUTPUT);  // กำหนดขา D8 เป็น OUTPUT เพื่อควบคุมรีเลย์
  digitalWrite(RELAY_PIN, LOW);  // เริ่มต้นปิดรีเลย์

  Serial.println("เริ่มต้นการอ่านค่าไฟฟ้า");
}

void loop() {
  // อ่านค่าไฟฟ้าจาก PZEM-004T
  float voltage = pzem.voltage();
  float current = pzem.current();
  float power = pzem.power();
  float energy = pzem.energy();

  // แสดงข้อมูลบน Serial Monitor
  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); Serial.println(" kWh");

  // ตัวอย่างการสั่งเปิด/ปิดปลั๊กไฟตามค่ากำลังไฟฟ้า
  if (power > 1000) {  // หากกำลังไฟเกิน 1000W สั่งเปิดรีเลย์
    digitalWrite(RELAY_PIN, HIGH);  // เปิดรีเลย์ (สั่ง ON)
    Serial.println("เปิดปลั๊กไฟ");
  } else {
    digitalWrite(RELAY_PIN, LOW);  // ปิดรีเลย์ (สั่ง OFF)
    Serial.println("ปิดปลั๊กไฟ");
  }

  delay(2000);  // อ่านค่าใหม่ทุกๆ 2 วินาที
}