• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Предложение Измеритель мощности

ale48666

New member
На базе ESP8266 ESP-12 , PZEM-004T и управляемого реле, сделать дистанционный мониторинг и накопление данных электросчётчиков в СНТ по WiFi путём ежемесячного обхода сомнительных участков. Считывать показания предполагается с предварительной селекцией из нескольких доступных в данный момент счетчиков. Интересует информация - ежемесячное потребление электричества с последующим анализом в EXCEL
При необходимости ограничивать неплательщиков в потреблении. За работоспособную документацию (скетч, схема, консультация по настройке) для устаревшего электронщика с руками готов заплатить согласованную сумму АССИГНАЦИЯМИ. Сайт Измеритель мощности с WiFi, цветным дисплеем и логгером на базе PZEM-004T - самопал.pro моя "настольная книга", но пока на мониторе порта имею: v=0, a=0, p=0 и т.д., Rx и Tx перекрестил, Tx у PZEM-004T через R=10к подтянул к +5В.
 
Последнее редактирование:

ale48666

New member
это коммерческий прибор контроля или хобби?
Аттестовать прибор в Госрегистрации вряд ли удастся, а для отслеживания правлением потребления и последующей оплаты эл. энергии в СНТ я думаю очень может быть востребованным. Так что коммерческая перспектива весьма радужная. Но об этой стороне вопроса, я думаю, говорить пока преждевременно.
 

ale48666

New member
Полагаю что с этого надо начинать, так как технически нет проблем.
если энергетики захотят, то можно сделать
Ну что ж давайте крошить "не убитого" медведя. Оцените стоимость проработки проекта. Для обмена конфиденциальной информацией, я в личку кину свой E-mail.
 

CodeNameHawk

Moderator
Команда форума

nikolz

Well-known member
надо запитать этот модуль от 3.3 и TX-RX RX-TX к ESP
-----------
уточняю
цифровое питание сделать 3.3
а аналоговое сделать 5
-------------------------------------
VDD Digital power supply 2.4 ...5.25 V
AVDD Analog power supply 4.75 ... 5.25 V
вот datasheet микросхемы которая в этом модуле:
http://www.sdicmicro.com/DataSheet/SD3004 datasheet v0.2c.pdf
 
Последнее редактирование:

ale48666

New member
#include <SoftwareSerial.h> // Arduino IDE <1.6.6
#include <PZEM004T.h>
PZEM004T pzem(10,11); // (RX,TX) connect to TX,RX of PZEM
IPAddress ip(192,168,1,1);
unsigned long LstRd =0;
byte Ncycle = 1;
#define RdDly 1000 // задержка мс между обращениями к PZEM004T
void setup() {
Serial.begin(115200);
pzem.setAddress(ip);
LstRd = millis();
}
void loop() {
if (Ncycle == 1 && millis() - LstRd > RdDly)
{
Ncycle++; LstRd = millis();
Serial.print("V=");
float v = pzem.voltage(ip); if (v < 0.0) v = 0.0; Serial.print(v);
Serial.print(" ("); Serial.print(millis()- LstRd); Serial.print(") ");
}
if (Ncycle == 2 && millis() - LstRd > RdDly)
{
Ncycle++; LstRd = millis();
Serial.print("I=");
float i = pzem.current(ip); if(i < 0.0) i = 0.0; Serial.print(i);
Serial.print(" ("); Serial.print(millis()- LstRd); Serial.print(") ");
}

if (Ncycle == 3 && millis() - LstRd > RdDly)
{
Ncycle++; LstRd = millis();
Serial.print("P=");
float p = pzem.power(ip); if(p < 0.0) p = 0.0; Serial.print(p);
Serial.print(" ("); Serial.print(millis()- LstRd); Serial.print(") ");
}

if (Ncycle == 4 && millis() - LstRd > RdDly)
{
Ncycle = 1; LstRd = millis();
Serial.print("E=");
float e = pzem.energy(ip); if(e < 0.0) e = 0.0; Serial.print(e);
Serial.print(" ("); Serial.print(millis()- LstRd); Serial.print(") ");
Serial.println();
}

}
Выполнил все рекомендации, Esp(Tx)-Pzem(Rx) соедены через R=100Ом соответственно
Pztm(Tx)-Esp(Rx) также соедены через R=100Ом, результат во вложениях.
 

Вложения

Последнее редактирование:

sharikov

Active member
Любителям PZEM-004T желающим выжить
стоит посмотреть на зазор до изолированных цепей оптронов.

Безграмотным напомню что гальваническая изоляция от сети по самому мягкому классу должна выдерживать 2,5КВ что требует зазор не менее 5,25мм. Найдите его в PZEM-004T.
Придурки которые разводили плату PZEM-004T забыли убрать заливку из под оптронов.
 

nikolz

Well-known member
#include <SoftwareSerial.h> // Arduino IDE <1.6.6
#include <PZEM004T.h>
PZEM004T pzem(10,11); // (RX,TX) connect to TX,RX of PZEM
IPAddress ip(192,168,1,1);
unsigned long LstRd =0;
byte Ncycle = 1;
#define RdDly 1000 // задержка мс между обращениями к PZEM004T
void setup() {
Serial.begin(115200);
pzem.setAddress(ip);
LstRd = millis();
}
void loop() {
if (Ncycle == 1 && millis() - LstRd > RdDly)
{
Ncycle++; LstRd = millis();
Serial.print("V=");
float v = pzem.voltage(ip); if (v < 0.0) v = 0.0; Serial.print(v);
Serial.print(" ("); Serial.print(millis()- LstRd); Serial.print(") ");
}
if (Ncycle == 2 && millis() - LstRd > RdDly)
{
Ncycle++; LstRd = millis();
Serial.print("I=");
float i = pzem.current(ip); if(i < 0.0) i = 0.0; Serial.print(i);
Serial.print(" ("); Serial.print(millis()- LstRd); Serial.print(") ");
}

if (Ncycle == 3 && millis() - LstRd > RdDly)
{
Ncycle++; LstRd = millis();
Serial.print("P=");
float p = pzem.power(ip); if(p < 0.0) p = 0.0; Serial.print(p);
Serial.print(" ("); Serial.print(millis()- LstRd); Serial.print(") ");
}

if (Ncycle == 4 && millis() - LstRd > RdDly)
{
Ncycle = 1; LstRd = millis();
Serial.print("E=");
float e = pzem.energy(ip); if(e < 0.0) e = 0.0; Serial.print(e);
Serial.print(" ("); Serial.print(millis()- LstRd); Serial.print(") ");
Serial.println();
}

}
Выполнил все рекомендации, Esp(Tx)-Pzem(Rx) соедены через R=100Ом соответственно
Pztm(Tx)-Esp(Rx) также соедены через R=100Ом, результат во вложениях.
вопрос какой?
или нет вопросов.
 

nikolz

Well-known member
К вам нет.
А вообще есть: когда наконец перестанут рекомендовать гумно, причем опасное для жизни гумно.
К вам нет.
А вообще есть: когда наконец перестанут рекомендовать гумно, причем опасное для жизни гумно.
вроде бы не вас спрашивал.
-----------------------------
Если вам рекомендуют посмотреть, это не означает что это надо кушать.
Вы как дете малое. Все в рот тяните.
-----------------------------
посмотреть - это значить и анализировать, что смотрите, чтобы учиться как надо а как не надо делать.
Шариков Вы наш.
 
Последнее редактирование:

ale48666

New member
Код:
#include <SoftwareSerial.h> // Arduino IDE <1.6.6
#include <PZEM004T.h>
PZEM004T pzem(10,11);  // (RX,TX) connect to TX,RX of PZEM
IPAddress ip(192,168,1,1);
unsigned long LstRd =0;
byte Ncycle = 1;
#define RdDly  1000  // задержка мс между обращениями к PZEM004T
void setup() {
  Serial.begin(115200);
  pzem.setAddress(ip);
  LstRd = millis();
}
void loop() {
  if (Ncycle == 1 && millis() - LstRd > RdDly)
  {
  Ncycle++; LstRd = millis();
  Serial.print("V=");
  float v = pzem.voltage(ip); if (v < 0.0) v = 0.0; Serial.print(v);
  Serial.print(" ("); Serial.print(millis()- LstRd); Serial.print(") ");
  }
  if (Ncycle == 2 && millis() - LstRd > RdDly)
  {
  Ncycle++; LstRd = millis();
  Serial.print("I=");
  float i = pzem.current(ip); if(i < 0.0) i = 0.0; Serial.print(i);
  Serial.print(" ("); Serial.print(millis()- LstRd); Serial.print(") ");
  }
 
  if (Ncycle == 3 && millis() - LstRd > RdDly)
  {
  Ncycle++; LstRd = millis();
  Serial.print("P=");
  float p = pzem.power(ip); if(p < 0.0) p = 0.0; Serial.print(p);
  Serial.print(" ("); Serial.print(millis()- LstRd); Serial.print(") ");
  }
 
  if (Ncycle == 4 && millis() - LstRd > RdDly)
  {
  Ncycle = 1; LstRd = millis();
  Serial.print("E=");
  float e = pzem.energy(ip); if(e < 0.0) e = 0.0; Serial.print(e);
  Serial.print(" ("); Serial.print(millis()- LstRd); Serial.print(") ");
  Serial.println();
  }
 
}
[IMG]https://esp8266.ru/forum/data/attachments/6/6901-26ff61c0f414368b797b24c2c40b53a1.jpg[/IMG]
[IMG]https://esp8266.ru/forum/data/attachments/6/6903-9bbbd88a761f9970a42f2d40d80ab8d4.jpg[/IMG]
вопрос какой?
или нет вопросов.
 
Сверху Снизу