I make a code that can read all the value of PZEM with shared pins. I can print it on serial command and get the value. The problem is that I don't know how to send this data to Blynk
This is my code:
#include <PZEM004Tv30.h>
#if !defined(PZEM_RX_PIN) && !defined(PZEM_TX_PIN)
#define PZEM_RX_PIN D5
#define PZEM_TX_PIN D6
#endif
#if !defined(PZEM_SERIAL)
#define PZEM_SERIAL Serial2
#endif
#define NUM_PZEMS 6 // Number PZEM used
PZEM004Tv30 pzems[NUM_PZEMS];
#define USE_SOFTWARE_SERIAL
#include <SoftwareSerial.h>
SoftwareSerial pzemSWSerial(PZEM_RX_PIN, PZEM_TX_PIN);
void setup() {
Serial.begin(115200);
// For each PZEM, initialize it
for(int i = 0; i < NUM_PZEMS; i++)
{
// Initialize the PZEMs with Software Serial
pzems[i] = PZEM004Tv30(pzemSWSerial, 0x10 + i);
}
}
void loop() {
// Print out the measured values from each PZEM module
for(int i = 0; i < NUM_PZEMS; i++){
// Print the Address of the PZEM
Serial.print("PZEM ");
Serial.print(i+1);
Serial.print(" - Address:");
Serial.println(pzems[i].getAddress(), HEX);
Serial.println("===================");
// Read the data from the sensor
float voltage = pzems[i].voltage();
float current = pzems[i].current();
float power = pzems[i].power();
float energy = pzems[i].energy();
float frequency = pzems[i].frequency();
float pf = pzems[i].pf();
// 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 if (isnan(frequency)) {
Serial.println("Error reading frequency");
} else if (isnan(pf)) {
Serial.println("Error reading power factor");
} 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.print("Frequency: "); Serial.print(frequency, 1); Serial.println("Hz");
Serial.print("PF: "); Serial.println(pf);
}
Serial.println("-------------------");
Serial.println();
}
Serial.println();
delay(2000);
}
This code came from the example inside arduinoIDE "PZEMMultipleDevice". Please help me so I can send this data to Blynk