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
-
Rafaello
- Posts: 108
- Joined: Sun May 29, 2016 1:34 pm
You do not have the required permissions to view the files attached to this post.
-
Maniek913
- Posts: 593
- Joined: Thu Feb 22, 2018 9:46 pm
Możesz przedstawić jak dopisałeś obsługę wyświetlacza?
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
SOP 2023 
SOP 2024
Czekam na kolejne Supla Offline Party
:
cz->b
+ila
SOP 2024
Czekam na kolejne Supla Offline Party
-
Rafaello
- Posts: 108
- Joined: Sun May 29, 2016 1:34 pm
Myślałem o tym, w sumie mam wolne GPIO12 i 14,lesny8 wrote: Thu Apr 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.
Last edited by Rafaello on Thu Apr 09, 2020 9:03 pm, edited 1 time in total.
-
Rafaello
- Posts: 108
- Joined: Sun May 29, 2016 1:34 pm
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
Code: Select all
#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
"[email protected]", // 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 ;
}
}
}
