Prośba o pomoc z kodem i wgraniem

robi7805
Posts: 20
Joined: Sat Dec 02, 2023 12:00 pm

Post

Witam wszystkich forumowiczów od paru dni walczę z arduino ide próbuje wgrać kod do wemosa ciągle problemy z bibliotekami lub kodem czy ktoś pomoże?
zadanie kodu: monitorowanie napięcia sieci 3 fazowej każdej fazy osobno i płynne sterowanie konwerterami pwm ( na każdą fazę inny) w zależności od napięcia (np. 248V=0% a 252V=100%) dodatkowo gdy temperatura przekroczy np. 85 stopni na czujniku konwertery mają ustawić się na 0% . Łączność z suplą żeby był podgląd i możliwość zmiany parametrów

Elementy które posiadam:
ESP8266 WeMos D1 mini ESP-12F WiFi
Konwerter PWM na napięcie 0-10V 1KHz-3KHz
PZEM-004T TTL Modbus RTU moc cos fi V3.0
Czujnik temperatury DS18B20

kod:

#include <SoftwareSerial.h>
#include <PZEM004Tv30.h>
#include <WiFi.h>
#include <SuplaDevice.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define RX D6
#define TX D5

SoftwareSerial pzem1(RX, TX);
SoftwareSerial pzem2(RX, TX);
SoftwareSerial pzem3(RX, TX);

PZEM004Tv30 pzem004_1(&pzem1);
PZEM004Tv30 pzem004_2(&pzem2);
PZEM004Tv30 pzem004_3(&pzem3);

#define PWM_PIN_1 D1
#define PWM_PIN_2 D2
#define PWM_PIN_3 D3

const char* ssid = "XXXXX";
const char* password = "XXXXX";
const char* GUID = "XXXXXX";
const char* email = "XXXXXXXX";
const char* supla_password = "XXXXXXX";

SuplaDevice supla;

#define ONE_WIRE_BUS 4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup() {
Serial.begin(9600);
pzem1.setRX(D6);
pzem1.setTX(D7);
pzem2.setRX(D8);
pzem2.setTX(D9);
pzem3.setRX(D10);
pzem3.setTX(D11);
pinMode(PWM_PIN_1, OUTPUT);
pinMode(PWM_PIN_2, OUTPUT);
pinMode(PWM_PIN_3, OUTPUT);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
supla.begin(GUID, email, supla_password);
sensors.begin();
}

void loop() {
sensors.requestTemperatures();
float temperature = sensors.getTempCByIndex(0);

if (temperature > 85) {
analogWrite(PWM_PIN_1, 0);
analogWrite(PWM_PIN_2, 0);
analogWrite(PWM_PIN_3, 0);
} else {
float voltage1 = pzem004_1.voltage(0);
float voltage2 = pzem004_2.voltage(0);
float voltage3 = pzem004_3.voltage(0);

int pwm1 = map(voltage1, 248, 252, 0, 255);
int pwm2 = map(voltage2, 248, 252, 0, 255);
int pwm3 = map(voltage3, 248, 252, 0, 255);

analogWrite(PWM_PIN_1, pwm1);
analogWrite(PWM_PIN_2, pwm2);
analogWrite(PWM_PIN_3, pwm3);
}

Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println("C");

supla.loop();
delay(1000);
}



Czy ktoś mógłby sprawdzić czy w kodzie jest wszystko ok? i czy mógłby ktoś przekonwerterować ten kod na plik bin bo z arduino ide nie mogę dać sobie rade
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Podziel sobie to zadanie na mniejsze i rób krok po kroku.

W bibliotece SuplaDevice są przykłady dla termometrów DS18B20, jest przykład dla PZEM-a.

Metody użyte w kodzie są "wymyślone". Nie wiem na czym się wzorowałeś, ale to nie ma prawa działać.

Zacznij od przykładu z termometrem i spróbuj to uruchomić. Potem spróbuj uruchomić sobie PZEM-a itd.
Najlepsze suple dla Twojego domu :mrgreen:
robi7805
Posts: 20
Joined: Sat Dec 02, 2023 12:00 pm

Post

a czy jest możliwość zrobienia tego w https://gui-generic-builder.supla.io
robi7805
Posts: 20
Joined: Sat Dec 02, 2023 12:00 pm

Post

powiem tak do tej pory jak coś wgrywałem to za pomocą powyższej strony kiedyś na arduino ide wgrałem sobie termometr ale kod znalazłem na jakimś forum z opisem krok po kroku . a teraz prubowałem sie wspomóc ChatGPT ale wizę że nic z tego
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

robi7805 wrote: Fri Dec 22, 2023 9:13 am a czy jest możliwość zrobienia tego w https://gui-generic-builder.supla.io
Całości nie zrobisz zgodnie ze swoimi założeniami w GG.

Na pewno powinno dać się:
1. Ustawić PZEM-y
2. Ustawić termometr
3. Wyjścia PWM możesz spróbować ustawić jako Dimmery (tam jest sterowanie 0-100% suwakiem)

Jakieś reakcje i zależności też da się ustawić w GG, ale raczej nie znajdziesz tam czegoś takiego jak "płynne sterowanie konwerterami pwm ( na każdą fazę inny) w zależności od napięcia (np. 248V=0% a 252V=100%)"
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

robi7805 wrote: Fri Dec 22, 2023 9:20 am powiem tak do tej pory jak coś wgrywałem to za pomocą powyższej strony kiedyś na arduino ide wgrałem sobie termometr ale kod znalazłem na jakimś forum z opisem krok po kroku . a teraz prubowałem sie wspomóc ChatGPT ale wizę że nic z tego
ChatGPT nie zna biblioteki SuplaDevice i nie potrafi w niej programować. Coś tam zgaduje i próbuje, ale mu nie wychodzi :P
Najlepsze suple dla Twojego domu :mrgreen:
robi7805
Posts: 20
Joined: Sat Dec 02, 2023 12:00 pm

Post

a czy Byłby Pan tak miły i napisał taki kod? np do arduino ide ? byłbym wdzięczny chodzi mi o płynną automatyczną regulację a nie na zasadzie wł/wył
robi7805
Posts: 20
Joined: Sat Dec 02, 2023 12:00 pm

Post

opisałbym o co chodzi dokładnie w wiadomości Pw
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Na forum sobie nie panujemy :)

Niestety kolejkę rzeczy do zrobienia mam bardzo długą i nie podejmuję się takich tematów.
Najlepsze suple dla Twojego domu :mrgreen:
robi7805
Posts: 20
Joined: Sat Dec 02, 2023 12:00 pm

Post

rozumiem a czy w arduino ide są wszystkie biblioteki potrzebne czy muszę jakąś recznie zainstaliwać

Return to “Ogólna dyskusja”