NodeMCU + PZEM004t

Прошу помощи в создании блока для NodeMCU

Ответить
Аватара пользователя
Cancertanly
Сержант
Сообщения: 214
Зарегистрирован: 06.04.2016{, 19:59}
Репутация: 20
Откуда: bish
Имя: Антон

NodeMCU + PZEM004t

#1

Сообщение Cancertanly » 11.07.2018{, 07:58}

Подскажите пожалуйста, где я ошибаюсь? Создаю новый проект для NodeMCU, вставляю ПБ от ув.Boroda, подключаю выходы ПБ к входу отправки в UART, жму компилировать, но выскакивает ошибка:
СпойлерПоказать
2018-07-11.png
вставляю скетч из примера ссылка :
СпойлерПоказать

Код: Выделить всё

#include <PZEM004T.h>

/*
   An example on how to use ESP8266 hardware serial with PZEM004T
   Note: ESP8266 UART0 pins GPIO1 (TX) and GPIO3 (RX) are usually connected
   to an onboard USB2serial converter, it can affect PZEM communication.
   It's better not to share USB2serial pins for PZEM communication
   Default UART0 pins could be swapped to gpio13(rx),gpio15(tx)
   Note: gpio15 pin must be pulled lOW on esp start, otherwise it won't boot from eeprom.
   PZEM004T always pulls it's RX pin HIGH via optocoupler's led, so make sure to workaround it anyhow while esp boots up
*/


HardwareSerial hwserial(UART0);     // Use hwserial UART0 at pins GPIO1 (TX) and GPIO3 (RX)
PZEM004T pzem(&hwserial);           // Attach PZEM to hwserial
IPAddress ip(192,168,1,1);

bool pzemrdy = false;

void setup() {
   hwserial.swap();           // (optionally) swap hw_serial pins to gpio13(rx),15(tx)
   Serial1.begin(115200);     /* Since UART0 is occupied with PZEM004T, we use UART1 to output data to serial monitor
                                 UART1 uses hwserial at pin GPIO2
                              */
   while (!pzemrdy) {
      Serial1.println("Connecting to PZEM...");
      pzemrdy = pzem.setAddress(ip);
      delay(1000);
   }
}

void loop() {

  float v = pzem.voltage(ip);
  if (v < 0.0) v = 0.0;
   Serial1.print(v);Serial1.print("V; ");

  float i = pzem.current(ip);
   if(i >= 0.0){ Serial1.print(i);Serial1.print("A; "); }

  float p = pzem.power(ip);
   if(p >= 0.0){ Serial1.print(p);Serial1.print("W; "); }

  float e = pzem.energy(ip);
   if(e >= 0.0){ Serial1.print(e);Serial1.print("Wh; "); }

  Serial1.println();

  delay(3000);
}
происходит то же самое
FLProg_ru
https://t.me/flrog_ru ...................................................FLProg_v7.3.4
https://t.me/soft_duino

starshoy81
Лейтенант
Сообщения: 530
Зарегистрирован: 05.04.2016{, 23:30}
Репутация: 29
Откуда: Санкт-Петербург
Имя: Илья

NodeMCU + PZEM004t

#2

Сообщение starshoy81 » 12.07.2018{, 12:01}

Cancertanly, так у вас библиотека прерываний для avr используется в подключенной библиотеке, а вы пытаетесь в есп загрузить. Читайте, что вам компилятор пишет про ошибки. В настройках можно включить подробный лог компилятора и лучше отслеживать что там происходит.
Во втором случае - куда вы этот код вставляете и какая ошибка при компиляции выходит?

Ответить

Вернуться в «Помогите, а то я "нимагу"»