//===== Datastream Virtual Pin =====//
// V0 = แรงดันไฟฟ้า voltage
// V1 = กระแสไฟฟ้า current
// V2 = กำลังไฟฟ้า power
// V3 = พลังงาน energy
#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID “xxxxxxxxx”
#define BLYNK_TEMPLATE_NAME “xxxxxxxxxx”
#define BLYNK_FIRMWARE_VERSION “0.1.0”
#define BLYNK_DEBUG
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <PZEM004Tv30.h>
#if !defined(PZEM_RX_PIN) && !defined(PZEM_TX_PIN)
#define PZEM_RX_PIN 16
#define PZEM_TX_PIN 17
#endif
#if !defined(PZEM_SERIAL)
#define PZEM_SERIAL Serial2
#endif
#if defined(ESP32)
PZEM004Tv30 pzem(PZEM_SERIAL, PZEM_RX_PIN, PZEM_TX_PIN);
#elif defined(ESP8266)
#else
PZEM004Tv30 pzem(PZEM_SERIAL);
#endif
BlynkTimer timer;
int blynkIsDownCount = 0;
//=====Wi-Fi & Blynk Credential=====//
char auth[] = “xxxxxxxxxxxxxxxxxxxx”; // Blynk Authen Key
char ssid[] = “xxxxxxxxxx”; // SSID WiFi
char pass[] = “xxxxxxxxxx”; // รหัส Wifi
int SW_V4;a
void setup()
{
Serial.begin(115200);
Serial.println(“Starting…”);
WiFi.begin(ssid,pass);
while (WiFi.status() != WL_CONNECTED)
{
delay(250);
Serial.print(“.”);
}
Serial.println(“WiFi Connected”);
Serial.println(“IP Address: “);
Serial.println(WiFi.localIP());
Serial.println();
Blynk.begin(auth, ssid, pass);
timer.setInterval(30000L, reconnecting);
timer.setInterval(2000L,read_pzem);
}
//=====Read Pzem004t=====//
void read_pzem()
{
Serial.print(“Custom Address:”);
Serial.println(pzem.readAddress(), HEX);
// Read the data from the sensor
float voltage = pzem.voltage();
float current = pzem.current();
float power = pzem.power();
float energy = pzem.energy();
// Check if the data is valid
if(isnan(voltage)){
Serial.println(“Error reading voltage”);
} else if (isnan(current)) {
Serial.println(“Error reading current”);
} else if (isnan(power)) {
Serial.println(“Error reading power”);
} else if (isnan(energy)) {
Serial.println(“Error reading energy”);
} else {
// Print the values to the Serial console
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,3); Serial.println(” kWh”);
}
Serial.println();
Blynk.virtualWrite(V0,voltage);
Blynk.virtualWrite(V1,current);
Blynk.virtualWrite(V2,power);
Blynk.virtualWrite(V3,energy);
}
BLYNK_CONNECTED()
{
Serial.println(“.”); //per debug
Blynk.syncAll();
if (Blynk.connected())
{
Serial.println(“Blynk Connected”);
//pool_size1 = node3.writeSingleRegister(0x09,0x0100);
}
}
void reconnecting()
{
if (!Blynk.connected())
{
blynkIsDownCount++;
BLYNK_LOG(“blynk server is down! %d times”, blynkIsDownCount);
Blynk.connect(5000);
Blynk.syncAll();
}
}
void loop()
{
if (Blynk.connected()) {
Blynk.run();
}
timer.run();
}
*หมายเหตุ ใน Arduino IDE คอมไพล์ไม่ผ่านให้แก้เครื่องหมาย ” ” ให้ถูกต้อง
*** ปรับปรุง 27 มี.ค. 2568 ***