И снова битва с энкодером!

Я видел схемы модификаций, в которых питание переводится на 5V (от UART).

Ну, вот, опять проблемы со знаниями и моей подплинтусной квалификацией. Интереса ради попытался загрузить взятые отсюда: GitHub - olehs/PZEM004T: Arduino communication library for Peacefair PZEM-004T Energy monitor библиотеки и скетч (естественно, библиотеки установил в нужной папке ардуины).
При компиляции ответ:


‘Serial1’ was not declared in this scope
Не используется: D:\Programs\Arduino\libraries\SoftwareSerial-master
exit status 1


Скетч:

#include <SoftwareSerial.h> 
#include "PZEM004T.h"
PZEM004T pzem(&Serial1);
IPAddress ip(192,168,1,1);
void setup() {
  Serial.begin(115200);
  pzem.setAddress(ip);
}
void loop() {
  float v = pzem.voltage(ip);
  if (v < 0.0) v = 0.0;
  Serial.print(v);Serial.print("V; ");
  float i = pzem.current(ip);
  if(i >= 0.0){ Serial.print(i);Serial.print("A; "); }
 
  float p = pzem.power(ip);
  if(p >= 0.0){ Serial.print(p);Serial.print("W; "); }
 
  float e = pzem.energy(ip);
  if(e >= 0.0){ Serial.print(e);Serial.print("Wh; "); }
  Serial.println();
   delay(1000);
}

В скопированном сообщении об ошибке вот такой текст:
"Arduino: 1.8.19 (Windows 10), Плата:“Arduino Uno”
PZEM004T:4:16: error: ‘Serial1’ was not declared in this scope PZEM004T pzem(&Serial1); ^~~~~~~ D:\ArduinoValkyrieWattmeter\PZEM004T\PZEM004T.ino:4:16: note: suggested alternative: ‘Serial’ PZEM004T pzem(&Serial1); ^~~~~~~ Serial Несколько библиотек найдено для “SoftwareSerial.h” Используется: D:\Programs\Arduino\hardware\arduino\avr\libraries\SoftwareSerial Не используется: D:\Programs\Arduino\libraries\SoftwareSerial-master exit status 1 ‘Serial1’ was not declared in this scope Этот отчёт будет иметь больше информации с
включенной опцией Файл → Настройки →
“Показать подробный вывод во время компиляции”
"
Заранее спасибо за помощь!

Serial1 надо сначала обьявить. Т.е вызвать конструктор

Третья строка

Откуда на Уно Serial1?

Друзья, не сочтите за жлобство: дайте балбесу маленький фрагмент скетча, который устранит проблему. Только просьба - с комментами, чтобы я мог разобраться!

Вы не упомянули, в чем именно состоит проблема.
Если Вам нужно тупо избавиться от диагностики ошибки, то самый простой способ - убрать “1” в “Serial1”.
Исправление чуть сложнее - описать Serial1.
Можно избавиться от ошибки, и вообще не меняя ни одного символа в тексте скетча, а заменив контроллер с Uno на Mega.

Спасибо! Попробую сначала первое. Не выйдет - закажу мегу :slight_smile:

#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);

void setup() {
  Serial.begin(9600);
  pzem.setAddress(ip);
}

PS ты по своей специальности точно знаешь одного взгляда достаточно, чтобы сказать - “букет” )))
PPS взято из примера

IP-адрес служит идентификатором в PZEM-004 , но не в PZEM-004T.

если ты о мной размещённом коде - это не ко мне, к автору библиотеки, код выдран из примера

Уточню - в PZEM-004T v3.0, который сейчас предлагается на рынке, протокол другой, не тот, что в библиотеке.

тут проблема более глобальная оказывается, чем неправильная инициализация софтового сериала

Вот правильная библиотека. В примерах работа с софт сериалом . Для уны подойдёт. PZEM-004T-v30/examples/PZEMSoftwareSerial/PZEMSoftwareSerial.ino at master · mandulaj/PZEM-004T-v30 · GitHub

Но лучше использовать esp32. Бонусом можно управлять и следить с телефона через вифи.

Ради интереса посмотрел в оф.сторе на Али: на фото v1.0, в описании и документации приложенной - всё для v3.0. Поэтому покупка 004T - фортуна-лотерея, но скорее всего, полагаю, будет прислан v3.0.

выапкнт

1 лайк

Я ориентировался на модбас в описании. Пришли 3.0 , ка к надо . Например https://aliexpress.ru/item/1005004389563403.html 760 руб и модбас в описании.

653 руб. Просто аттракцион невиданной щедрости.

Лучше бы Вы все-таки сформулировали существо проблемы.
Потому как предложенные мной разные способы разрешают различные проблемы, а не одну и ту же. Соответственно каждый из способов подходит только для “своей” проблемы. И, кроме того, нет никакой уверенности, что у Вас именно какая-то из трех предположенный мною проблем. Возможно, у Вас какая-то четвертая.
В общем, настоятельно рекомендую подходить к разрешению проблем осознанно. А начинать нужно, как всегда, с формулировки проблемы.