Увидел на aliexpress реле с wi-fi модулем esp8266-01 всего за ~200 руб.
https://ru.aliexpress.com/item/ESP8266-5V-WiFi-relay-module-Things-smart-home-remote-control-switch-phone-APP/32812243370.html
Обрадовался т.к. нужно было устройство для удаленной перезагрузки фермы.
Как оказалось рано! Это незаконченное “корявое” решение.
Незаконченное – без дополнительного оборудования использовать это реле (со стандартной прошивкой) невозможно, управлять реле можно только по uart.
Еще минус – при подаче на реле напряжения (при включении), реле кратковременно замыкает контакты. (что для меня очень неудобно т.к. как я уже и говорил реле будет замыкать контакты “reset” компьютера)
Для управления реле и управления WiFi модуля esp8266-01, прошивки WiFi модуля esp8266-01, пришлось купить устройство с чипом CH340G.
https://ru.aliexpress.com/item/OPEN-SMART-USB-to-ESP8266-ESP-01-Wi-Fi-Adapter-Module-w-CH340G-Driver/32795568611.html
Со стандартной прошивкой – реле не автономно, т.е. после включения, WEB Server автоматически не стартует, к нему нужно подключаться по serial и запускать WEB Server командами:
AT+CIPMUX=1 – multi connection
AT+CIPSERVER=1 – по умолчанию порт 333
По управлению реле со стандартной прошивкой можно ознакомиться по ссылкам:
https://www.hackster.io/makerrelay/esp8266-wifi-5v-1-channel–relay–delay–module–iot–smart–home–e8a437
http://www.avmarket.eu/modul–przekaznika–wifi–esp8266-5vdc–p-4312.html
мои настройки:
AT+RESTORE -сброс к заводским настройкам
AT+GMR – узнать версию прошивки
AT+UART=9600,8,1,0,0 – перевод со 115200 на 9600
AT+CWMODE=1 – клиент, подключается к другим точкам доступа.
AT+RST -перезагрузка модуля
AT+CWJAP=”имя сети”,”пароль”
AT+CIPMUX=1 – multi – connection
AT+CIPSERVER=1 – по умолчанию порт 333
AT+CIFSR – узнать IP адрес
AT+CIPMODE=0 – режим передачи данных – “0” сервер может отправлять данные клиенту и может принимать данные от клиента.
В двух словах, запускаем программу USR-TCP232-Test-V1.3, подключаемся как TCP Client к ip адресу сервера, ставим галочку Send as HEX и посылаем команды: A00101A2 – open relay, A00100A1 – close relay.
Чтобы не “городить огород” и сделать устройство автономным, решил прошивать WiFi модуль прошивкой Arduino IDE.
Где скачать, как установить и настроить Arduino IDE в инете много статей – этот вопрос рассматривать не будем. Можно посмотреть, например, здесь: https://geektimes.ru/post/271754/
Пример управления этим реле c помощью esp8266-01 нашел здесь:
https://esp8266.ru/forum/threads/esp-01-relay–vkljuchenie–rele.2716/
Модифицировал стандартый пример esp8266 WiFi WEB Server из Arduino IDE.
И вот рабочий пример прошивки:
#include <ESP8266WiFi.h> #include <Arduino.h> const char* ssid = "SSID"; const char* password = "Password"; // Create an instance of the server // specify the port to listen on as an argument WiFiServer server(80); void setup() { Serial.begin(9600); delay(10); // prepare GPIO2 pinMode(2, OUTPUT); digitalWrite(2, 0); // Connect to WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); // Start the server server.begin(); Serial.println("Server started"); // Print the IP address Serial.println(WiFi.localIP()); } void toggleRelay(bool relayState) { //if (relayState) //{ const byte miBufferON[] = {0xA0, 0x01, 0x01, 0xA2}; Serial.write(miBufferON, sizeof(miBufferON)); delay(1000); const byte miBufferOFF[] = {0xA0, 0x01, 0x00, 0xA1}; Serial.write(miBufferOFF, sizeof(miBufferOFF)); // } // else //{ //To disable the Relay send it by serial port: // const byte miBufferOFF[] = {0xA0, 0x01, 0x00, 0xA1}; // Serial.write(miBufferOFF, sizeof(miBufferOFF)); // val = 0; // } } void loop() { // Check if a client has connected WiFiClient client = server.available(); if (!client) { return; } // Wait until the client sends some data Serial.println("new client"); while(!client.available()){ delay(1); } // Read the first line of the request String req = client.readStringUntil('\r'); Serial.println(req); client.flush(); // Match the request int val; //if (req.indexOf("/gpio/0") != -1) //toggleRelay(false); //else if (req.indexOf("/gpio/1") != -1) //toggleRelay(true); if (req.indexOf("/gpio/1") != -1) toggleRelay(true); else { Serial.println("invalid request"); client.stop(); return; } // Set GPIO2 according to the request //digitalWrite(2, val); client.flush(); // Prepare the response String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nReley Blinked"; //s += (val)?"high":"low"; s += "</html>\n"; // Send the response to the client client.print(s); delay(1); Serial.println("Client disonnected"); // The client will actually be disconnected // when the function returns and 'client' object is detroyed }
Т.е. при наборе: http://ip_web_server/gpio/1 – реле замкнет контакты на 1 сек.
Ставим переключатель в режим программирования и Заливаем скетч
Надеюсь, данная статья сэкономит кому-нибудь время.