A Co konkretnego się dzieje. Po wgraniu systemu moduł się nie uruchamia?
Posiadam pojedynczą wersję tego ustrojstwa.
Problem polega na tym, że sterowanie przekaźnikiem nie odbywa się przez GPIO tylko komendą UART. U siebie steruję przekaźnikiem z poziomu przeglądarki. Esp zaprogramowany za pomocą Ardunio Ide. W Twoim przypadku będzie konieczne dodanie obsługi drugiego przekaźnika do kodu. Kod do pojedynczego przekaźnika prezentuje się następująco:
/*
* NodeMCU/ESP8266 act as Client (WIFI-STA) and simplest Web Server
* to control GPIO (on-board LED)
* Connect to WIFI "nazwa sieci wifi", password = "haslo do wifi"
* check ip adress, and open browser
*/
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#define LoadPin 2// GPIO2
const char *ssid = "nazwa sieci wifi"; // wpisujemy własne dane
const char *password = "haslo do wifi"; // wpisujemy własne dane
int stateLED = LOW;
const byte miBufferON[] = {0xA0, 0x01, 0x01, 0xA2};
const byte miBufferOFF[] = {0xA0, 0x01, 0x00, 0xA1};
ESP8266WebServer server(80);
void handleRoot() {
response();
}
void handleLedOn() {
stateLED = LOW;
digitalWrite(LoadPin, stateLED);
Serial.write(miBufferON, sizeof(miBufferON));
response();
}
void handleLedOff() {
stateLED = HIGH;
Serial.write(miBufferOFF, sizeof(miBufferOFF));
digitalWrite(LoadPin, stateLED);
response();
}
const String HtmlHtml = "<html><head>"
"<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" /></head>";
const String HtmlHtmlClose = "</html>";
const String HtmlTitle = "<h1>RELAY</h1><br/>\n"; //wpisujemy własną nazwę przekaźnika
const String HtmlLedStateLow = "<big>is now <b>ON</b></big><br/>\n";
const String HtmlLedStateHigh = "<big>is now <b>OFF</b></big><br/>\n";
const String HtmlButtons =
"<a href=\"LEDOn\"><button style=\"display: block; width: 100%;\">ON</button></a><br/>"
"<a href=\"LEDOff\"><button style=\"display: block; width: 100%;\">OFF</button></a><br/>";
void response(){
String htmlRes = HtmlHtml + HtmlTitle;
if(stateLED == LOW){
htmlRes += HtmlLedStateLow;
}else{
htmlRes += HtmlLedStateHigh;
}
htmlRes += HtmlButtons;
htmlRes += HtmlHtmlClose;
server.send(200, "text/html", htmlRes);
}
void setup() {
Serial.begin(9600); // Start the Serial communication to send messages to the computer
delay(1000);
Serial.println('\n');
WiFi.mode(WIFI_STA);
delay(50000); //wait 50sec
WiFi.begin(ssid, password); // Connect to the network
Serial.print("Connecting to ");
Serial.print(ssid); Serial.println(" ...");
int i = 0;
while (WiFi.status() != WL_CONNECTED) { // Wait for the Wi-Fi to connect
delay(1000);
Serial.print(++i); Serial.print(' ');
}
server.on("/", handleRoot);
server.on("/LEDOn", handleLedOn);
server.on("/LEDOff", handleLedOff);
server.begin();
Serial.println('\n');
Serial.println("HTTP server beginned");
Serial.print("IP address:\t");
Serial.println(WiFi.localIP()); // Send the IP address of the ESP8266 to the computer
pinMode(LoadPin, OUTPUT);
digitalWrite(LoadPin, stateLED);
}
void loop() {
server.handleClient();
}
Spróbuje wieczorem sie tym zająć.
Czyli rozumiem że w Arduino wklejam ten kod i programuje jako płytke esp ?
Tak, programujesz samo ESP01 (bez płytki z przekaźnikiem). Pamiętaj o zastąpieniu swojego wifi i hasła w kodzie. Powodzenia
edit: Zanim zaczniesz zabawę zobacz ten film ESPMEGA -widziałem, że powstały nowsze wersje od prezentowanych na filmie. Warto zapoznać się z wątkiem link. Daj znać czy ESPMEGA robi robotę.
@g_adrian Czy ta plytka da rady potem ja kontrolowac przez np domoticz po tym zaprogramowaniu. Tak z ciekawosci pytam.
Poniewaz dawno tex kupilem to ustrojstwo i nie moglem rozszyfrowac jak tym sterowac.
Wiec chcialem to juz wyrzucic i nie tracic czasu. Ale nastepnego dnia powyrywalem pare rzeczy tam , podlaczylem relay-e pod gpio. 😉
I wgralem afe.
Mam jeszcze takie na cztery przekazniki dwie sztuki leza od tamtej pory w szufladzie.
Korzystam z Openhab, i nie ma najmniejszego problemu z integracją sterowania przekaźnikiem przez np. reguły. Co do Domoticz się nie wypowiem ale myślę, że nie będzie z tym problemu. Przy wolnej chwili sprawdzę jak i czy działa wspomniane przez zemnie wyżej espmega.
nastepnego dnia powyrywalem pare rzeczy tam , podlaczylem relay-e pod gpio.
Na płytce pewnie pozostał sam slot dla esp i przekaźnik 🤣. Ważne, że działa 👍
@krzysztofch czy to Openhab czy Domoticz to nie ma znaczenia , ale ja bym się skłaniał do skorzystania z innej opcji opisanej tu https://www.smartnydom.pl/forum/szybkie-pytanie-szybka-odpowiedz/konfiguracja-przycisku-w-domoticzu-po-mqqt-2/
Szybko bez problemów i jedna reguła w samym firmware załatwia wszystko.
Mam dokładnie taki moduł jak na pierwszym zdjęciu. Nie potrafię wprowadzić go w stan flashowania. Pomożecie? Chciałbym mu wrzucić suplę, ale coś mi nie idzie.
GPIO0 podczas włączania zasilania musi być zwarte do GND ( może być na stałe podczas flashowania).
@marcingajda - dzięki. A zdradzisz jeszcze które to GPI00? Ja to taki średni jestem w tym temacie i łopatologicznie do mnie trzeba. Które to?
Pierwszy z brzegu opis flashowania ESP01 : https://www.instructables.com/Flash-or-Upgrade-Firmware-on-ESP8266-ESP-01-Module/
@marcingajda Nie miałem zielonego pojęcia, że nie podpina się całego modułu, a tylko jego część - ESP01. Dziękuję.
Obejrzałem sobie taki filmik klik i dowiedziałem się z niego, że są dwie wersje - ESP01 i ESP01S. Oczywiście by nie było zbyt łatwo, przez swoją niewiedzę kupiłem ten bardziej skomplikowany - ESP01. Muszę do niego dolutować oporniki. Nie do końca jednak zrozumiałem czy one mają już tam pozostać, czy też mam je usunąć po wgraniu softu?
Teoretycznie tylko do wgrania softu, ale nie zaszkodziło by im , gdyby zostały ( o ile na tej płytce z przekaźnikiem ich nie ma). Jak ich nie ma , to podczas rebootu/resetu , włączania zasilania ESP po prostu bez tych rezystorów może nie wstać. Możesz to przetestować , czy płytka za każdym razem wstaje.
@marcingajda dzięki. Mnie nie przeszkadza wydanie kilku groszy na te dwa oporniki na układ.Tylko nie wiedziałem, czy to właśnie nie będzie potem jednak przeszkadzać. Teoretycznie nie powinno, skoro "ESP01S" je ma wbudowane, ale może jednak takie SMD zachowuję się ciut inaczej.
Jednak skoro piszesz by zostawić, zostawię. Dzięki jeszcze raz.