Witam,
pochwalę się tym co udało mi się zmajstrować przy mojej głównej rozdzielni, jako że licznik mam w granicy, do trzech PZEMów dodałem jeszcze LCD 20x4 który na bieżąco pokazuje moc czynną oraz pobraną energię dla każdej fazy oraz sumarycznie dla trzech. Dodatkowo jeszcze dorzuciłem jeden przekaźnik, dla sterowania oświetleniem elewacji.
3xPZEM-004T + LCD20x4 + relay
- Robert Błaszczak
- Posty: 3944
- Rejestracja: sob gru 22, 2018 8:55 pm
- Lokalizacja: Zielona Góra
- Kontakt:
Również gratuluję. Całkiem zacnie to wygląda.
Pozdrawiam
Robert Błaszczak
Moja prywatna strona: www.blaszczak.pl
Robert Błaszczak
Moja prywatna strona: www.blaszczak.pl
Super, widzę że ogarnąłeś temat
Od siebie mam jeszcze taki pomysł do rozważenia, może dodaj sobie przycisk monostabilny fizyczny i zdefiniuj go w programie na jakimś wolnym GPIO, po uruchomieniu którego przez zadany czas będzie działał wyświetlacz i pokazywał pomiary. Podczas codziennego użytkowania przecież nie będziesz na niego patrzył, więc po co ma niepotrzebnie świecić i zżerać prąd
Od siebie mam jeszcze taki pomysł do rozważenia, może dodaj sobie przycisk monostabilny fizyczny i zdefiniuj go w programie na jakimś wolnym GPIO, po uruchomieniu którego przez zadany czas będzie działał wyświetlacz i pokazywał pomiary. Podczas codziennego użytkowania przecież nie będziesz na niego patrzył, więc po co ma niepotrzebnie świecić i zżerać prąd
Czekam na kolejne Supla Offline Party
Myślałem o tym, w sumie mam wolne GPIO12 i 14,lesny8 pisze: ↑czw kwie 09, 2020 8:09 pm Super, widzę że ogarnąłeś temat
Od siebie mam jeszcze taki pomysł do rozważenia, może dodaj sobie przycisk monostabilny fizyczny i zdefiniuj go w programie na jakimś wolnym GPIO, po uruchomieniu którego przez zadany czas będzie działał wyświetlacz i pokazywał pomiary. Podczas codziennego użytkowania przecież nie będziesz na niego patrzył, więc po co ma niepotrzebnie świecić i zżerać prąd
może po świętach dorzucę faktycznie przycisk, jak nie poradzę sobie ze szkicem, poproszę was o pomoc.
Ostatnio zmieniony czw kwie 09, 2020 9:03 pm przez Rafaello, łącznie zmieniany 1 raz.
Bardzo proszę, poniżej mój kod z obsługą wyświetlacza na bazie kodu od kolegi @klew. Zresztą bez wspomnianego kolegi w ogóle ten kod by nie powstał. @klew jeszcze raz dzięki
Kod: Zaznacz cały
#include <SPI.h>
#include <SuplaDevice.h>
#include <supla/sensor/three_phase_PzemV3.h>
#include <supla/control/relay.h>
// ESP8266 based board:
#include <supla/network/esp_wifi.h>
Supla::ESPWifi wifi("XXXXX", "XXXXXX");
// LCD
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define BACKLIGHT_PIN 3
LiquidCrystal_I2C lcd(0x27, 20, 4);
PZEM004Tv30 pzem1(3, 4);
PZEM004Tv30 pzem2(3, 5);
PZEM004Tv30 pzem3(3, 1);
unsigned long previousMillis = 0 ;
const long interval = 5000 ;
void setup() {
Serial.begin(9600);
// Replace the falowing GUID with value that you can retrieve from https://www.supla.org/arduino/get-guid
char GUID[SUPLA_GUID_SIZE] = {XXXXXXXXXXXXXX};
// Replace the following AUTHKEY with value that you can retrieve from: https://www.supla.org/arduino/get-authkey
char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {XXXXXXXXXXXXXXXX};
wifi.enableSSL(false);
new Supla::Sensor::ThreePhasePZEMv3(3, 4, 3, 5, 3, 1);
new Supla::Control::Relay(13);
SuplaDevice.begin(GUID, // Global Unique Identifier
"xxxx.supla.org", // SUPLA server address
"xxxxx@email.com", // Email address used to login to Supla Cloud
AUTHKEY); // Authorization key
// LCD
Wire.begin(0,2);
lcd.begin(20,4);
lcd.init();
lcd.backlight();
lcd.home();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Moc: ");
lcd.setCursor(19, 0);
lcd.print("W");
lcd.setCursor(0, 1);
lcd.print("Ene: ");
lcd.setCursor(17, 1);
lcd.print("kWh");
lcd.setCursor(0, 2);
lcd.print("Moc cal: ");
lcd.setCursor(19, 2);
lcd.print("W");
lcd.setCursor(0, 3);
lcd.print("Ene cal: ");
lcd.setCursor(17, 3);
lcd.print("kWh");
}
void loop() {
SuplaDevice.iterate();
{
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
lcd.setCursor(5, 0);
lcd.print(" ");
lcd.setCursor(5, 1);
lcd.print(" ");
lcd.setCursor(9, 2);
lcd.print(" ");
lcd.setCursor(9, 3);
lcd.print(" ");
float moc1 = pzem1.power();
float moc2 = pzem2.power();
float moc3 = pzem3.power();
lcd.setCursor(5, 0);
lcd.print(moc1, 0); lcd.print(" "); lcd.print(moc2, 0); lcd.print(" "); lcd.print(moc3, 0);
float ener1 = pzem1.energy();
float ener2 = pzem2.energy();
float ener3 = pzem3.energy();
lcd.setCursor(5, 1);
lcd.print(ener1, 0); lcd.print(" "); lcd.print(ener2, 0); lcd.print(" "); lcd.print(ener3, 0);
float moc = pzem1.power() + pzem2.power() + pzem3.power();
lcd.setCursor(9, 2);
lcd.print(moc, 2);
float ener = pzem1.energy() + pzem2.energy() + pzem3.energy();
lcd.setCursor(9, 3);
lcd.print(ener, 2);
previousMillis = currentMillis ;
}
}
}