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
Prośba o pomoc z kodem i wgraniem
-
klew
- Posts: 13907
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 134 times
- Been thanked: 137 times
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.
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 
-
robi7805
- Posts: 20
- Joined: Sat Dec 02, 2023 12:00 pm
-
robi7805
- Posts: 20
- Joined: Sat Dec 02, 2023 12:00 pm
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
-
klew
- Posts: 13907
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 134 times
- Been thanked: 137 times
Całości nie zrobisz zgodnie ze swoimi założeniami w GG.robi7805 wrote: Fri Dec 22, 2023 9:13 am a czy jest możliwość zrobienia tego w https://gui-generic-builder.supla.io
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 
-
klew
- Posts: 13907
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 134 times
- Been thanked: 137 times
ChatGPT nie zna biblioteki SuplaDevice i nie potrafi w niej programować. Coś tam zgaduje i próbuje, ale mu nie wychodzirobi7805 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
Najlepsze suple dla Twojego domu 
-
robi7805
- Posts: 20
- Joined: Sat Dec 02, 2023 12:00 pm
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
opisałbym o co chodzi dokładnie w wiadomości Pw
-
robi7805
- Posts: 20
- Joined: Sat Dec 02, 2023 12:00 pm
rozumiem a czy w arduino ide są wszystkie biblioteki potrzebne czy muszę jakąś recznie zainstaliwać
