Сегодня расскажу о простом Wi-Fi реле основаны на ESP-01S (ESP8266). С помощью данного реле, можно удаленно отключать свет, электроприборы и многое другое.
Технические параметры
► Модель ESP8266: ESP-01S
► Напряжение питания: DC 5 В
► Рабочий ток: 250 мА
► Вывод управления реле: GPIO0
► Нагрузка переменного тока: 10 А, 250 В
► Нагрузка постоянного тока: 10 А, 30 В
► Габариты пульта: 37 мм х 25 мм
Общие сведения о модуле реле для ESP8266-01S (ESP-01S)
С помощью данного модуля можно управлять любым устройством по сети Wi-Fi,
в качестве передающего устройства используется контроллер ESP8266-01S (ESP-01S). Модуль собран на зеленом стеклотекстолите габаритами 37 см на 25 см, большую часть платы занимает реле SRD-5DVC-SL-C, такое же используется в обычных модулях реле на один и два канала. Рядом с реле небольшая электрическая обвязка, необходимая для нормального переключения этого реле. Так как управление реле осуществляя напряжение 5В, а для ESP01 необходимо напряжение 3.3 В на плате предусмотрен стабилизатор напряжения AMS1117 рядом установлены керамические конденсаторы. На плате предусмотрена кнопка RESET с помощью которой можно перегрузить модуль, рядом установлен светодиод показывающий включение реле.
Настройка Wi-Fi реле
Необходимые детали:
► Беспроводной Wi-Fi модуль ESP8266-01S (ESP-01S) x 1 шт.
► Модуль реле для ESP8266-01S x 1 шт.
► Адаптер для ESP-01 (USB, CH340G, ESP8266) x 1 шт.
► Блок питания на 5В
Прошивка ESP-01S:
Первым делом, необходимо прошить модуль ESP-01S (ES8266), для этого берем USB адаптер на CH340G (с небольшой доработкой, которая включаем в себя перемычку между GND и GPIO0). Устанавливаем модуль ESP-01S в USB адаптер CH340G и подключаем его в USB разъем компьютера (в системе должен появится новый последовательный порт (COMx).
Программа написана в среде IDE Arduino, для работы с чипами ESP8266. Теперь осталось загрузить скетч в программу IDE и загрузить в модуль ESP-01S.
#include <ESP8266WiFi.h> // Подключаем библиотеку ESP8266WiFi const char* ssid = "Название Вашей Сети"; // Название Вашей WiFi сети const char* password = "Пароль от вашей сети";// Пароль от Вашей WiFi сети #define RELAY 0 // Пин к которому подключен датчик WiFiServer server(80); // Указываем порт Web-сервера void setup(){ delay(2200); Serial.begin(115200); // Скорость передачи 115200 pinMode(RELAY,OUTPUT); // Указываем вывод RELAY как выход digitalWrite(RELAY, LOW); // Устанавливаем RELAY в LOW (0В) Serial.println(); // Печать пустой строки Serial.print("Connecting to "); // Печать "Подключение к:" Serial.println(ssid); // Печать "Название Вашей WiFi сети" WiFi.begin(ssid, password); // Подключение к WiFi Сети while (WiFi.status() != WL_CONNECTED) // Проверка подключения к WiFi сети { delay(500); // Пауза 500 мкс Serial.print("."); // Печать "." } Serial.println(""); // Печать пустой строки Serial.println("WiFi connected"); // Печать "WiFi connected" server.begin(); // Запуск сервера Serial.println("Server started"); // Печать "Server starte" Serial.print("Use this URL to connect: "); // Печать "Use this URL to connect:" Serial.print(WiFi.localIP()); // Печать выданого IP адресса } void loop(){ WiFiClient client = server.available(); // Получаем данные, посылаемые клиентом if (!client) { return; } Serial.println("new client"); // Отправка "new client" while(!client.available()) // Пока есть соединение с клиентом { delay(1); // пауза 1 мс } String request = client.readStringUntil('\r'); Serial.println(request); client.flush(); int value = LOW; if (request.indexOf("/RELAY=ON") != -1) { Serial.println("RELAY=ON"); digitalWrite(RELAY,LOW); value = LOW; } if (request.indexOf("/RELAY=OFF") != -1) { Serial.println("RELAY=OFF"); digitalWrite(RELAY,HIGH); value = HIGH; } client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<head><title>ESP8266 RELAY Control</title></head>"); client.print("Relay is now: "); if(value == HIGH) { client.print("OFF"); } else { client.print("ON"); } client.println("<br><br>"); client.println("Turn <a href=\"/RELAY=OFF\">OFF</a> RELAY<br>"); client.println("Turn <a href=\"/RELAY=ON\">ON</a> RELAY<br>"); client.println("</html>"); delay(1); Serial.println("Client disonnected"); Serial.println(""); }
Определение IP (ESP-01S):
Далее, необходимо узнать IP модуля, для этого открываем окно «Мониторинг порта» с выставленной скоростью «115200», в моем случаи сеть выдала «192.168.22.100».
Теперь устанавливаем прошитый модуль ESP-01S в модуль WiF-Fi реле, подключаем питание и открываем любой браузер, вводим IP-адрес (192.168.22.100) и нажимаем Enter.
Вот и все.
Пример второй принцип подключения тот же
#include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <ESP8266mDNS.h> // GPIO, куда подцелено реле uint8_t PowerPin = 0; bool PowerOn = false; // Имя хоста const char* host = "esp8266-power"; // Вместо звездочек свои параметры WiFi сети const char* ssid = "samp"; const char* password = "9115067185"; ESP8266WebServer server(80); void setup() { // Последовательный порт для отладки Serial.begin(115200); Serial.printf("\n\nFree memory %d\n",ESP.getFreeHeap()); // Инициализация выхода реле pinMode(PowerPin , OUTPUT); digitalWrite(PowerPin , PowerOn); // Подлючение к WiFi WiFi.mode(WIFI_AP_STA); WiFi.begin(ssid, password); if(WiFi.waitForConnectResult() == WL_CONNECTED){ // Запуск WEB-сервера MDNS.begin(host); server.on ( "/", HTTP_handleRoot ); server.onNotFound ( HTTP_handleRoot ); server.begin(); //Serial.printf( "HTTP server ok! Open https://%s.local in your browser\n", host); Serial.println(WiFi.localIP()); } else { Serial.printf("WiFi started is fail"); } } void loop() { server.handleClient(); delay(50); } /* * Оработчик главной страницы сервера */ void HTTP_handleRoot(void) { bool stat = false; if( server.hasArg("stat") ){ if( strncmp(server.arg("stat").c_str(),"1",1) == 0 )stat = true; } else { stat = PowerOn; } String out = ""; out = "<html>\ <head>\ <meta charset="utf-8" />\ <title>WiFi розетка</title>\ <style>\ body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }\ </style>\ </head>\ <body>\ <h1>WiFi розетка. Версия 1.0</h1>\n"; if( stat ){ out+="\ <h2>Состояние: Включено</br>\ <a href="/?stat=0">Выключить</a></h2>\ "; } else { out+="\ <h2>Состояние: Выключено</br>\ <a href="/?stat=1">Включить</a><h2>\ "; } out+= "\ </body>\ </html>"; server.send ( 200, "text/html", out ); if( stat != PowerOn ){ PowerOn = stat; digitalWrite(PowerPin , PowerOn); if( PowerOn )Serial.println("Power is ON"); else Serial.println("Power is OFF"); } }