Cannot get Multiple PZEM004Ts to work
Opened this issue · 3 comments
Hello, I was wondering if anyone else has some code that made multiple PZEM004Ts to work? I can't seem to make 2 work at the moment, I plan to incorporate 9 PZEM004Ts into my project, and I am starting out with 2 for the meantime, in order to make a proof of concept of my project.
The devices that I am using are 9 PZEM004T (1 - V1.0, 6 - V2.0, and 2 - V3.0), Arduino Mega 2560, Fotek SSR-60DA Solid State Relays, and some electrical outlets.
I am trying my very best to make only two work but all the articles that I have come across are not working for me. I have tried using different libraries, mixing and matching power analyzers, and using example codes from other articles and forum posts.
Might I also suggest adding an example code in the library that utilizes 2 power analyzers and a guide on how to make multiple ones work? Many thanks!
Attached is a slightly modified code that I acquired from #10 (PZEM_Local2Instances.txt)
`#include <SoftwareSerial.h>
#include <PZEM004T.h>
#define txMain 11 //Single pin for all Meters
#define rx1 10 //Meter 1
#define rx2 9 //Meter 2
//PZEM004T pzem1(rx1, txMain); // RX,TX
IPAddress ip1(192, 168, 1, 1);
//PZEM004T pzem2(rx2, txMain); // RX,TX
IPAddress ip2(192, 168, 1, 10);
void setup() {
Serial.begin(9600);
// pzem.setAddress(ip);
}
void loop() {
PZEM004T pzem1(rx1, txMain); // RX,TX
Serial.println ("METER 1:");
float v1 = pzem1.voltage(ip1);
if (v1 < 0.0) v1 = 0.0;
Serial.print(v1); Serial.print("V1; ");
float i1 = pzem1.current(ip1);
if (i1 >= 0.0) {
Serial.print(i1);
Serial.print("A1; ");
}
float p1 = pzem1.power(ip1);
if (p1 >= 0.0) {
Serial.print(p1);
Serial.print("W1; ");
}
float e1 = pzem1.energy(ip1);
if (e1 >= 0.0) {
Serial.print(e1);
Serial.print("Wh1; ");
}
Serial.println();
delay(1500);
PZEM004T pzem2(rx2, txMain); // RX,TX
Serial.println ("METER 2:");
float v2 = pzem2.voltage(ip2);
if (v2 < 0.0) v2 = 0.0;
Serial.print(v2); Serial.print("V2; ");
float i2 = pzem2.current(ip2);
if (i2 >= 0.0) {
Serial.print(i2);
Serial.print("A2; ");
}
float p2 = pzem2.power(ip2);
if (p2 >= 0.0) {
Serial.print(p2);
Serial.print("W2; ");
}
float e2 = pzem2.energy(ip2);
if (e2 >= 0.0) {
Serial.print(e2);
Serial.print("Wh2; ");
}
Serial.println();
delay(1500);
}`
@crizangel i'd be interested in knowing whether you have been able to make this work...
thanks and best
@crizangel I was able to run multiple PZEM v3.0's over single UART port with a bit of hacking for current libs. Though I decided to write a new lib from scratch specially designed to run multiple devices. Currently still in progress. I'm going to make it publicly available once ready.