Нам понадобится:
Сама плата nodemcu: http://ali.pub/1qdz7a
nodemcu shield: http://ali.pub/1qdzd4
Реле: http://ali.pub/1qrtft
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
В данном примере показано, как с помощью платы nodemcu управлять релейными модулями.
Схема для подключения релейного модуля показана в начале статьи.
После подключения всех компонентов необходимо скопировать программный код приведенный ниже и вставить его в программу Arduino IDE и загрузить этот программный код в саму плату Arduino.
#include <ESP8266WiFi.h> // Имя и пароль вашей сети WiFi const char* ssid = "test"; const char* password = "test"; // Создаем сервер и порт для прослушки 80 WiFiServer server(80); void setup() { Serial.begin(115200); delay(10); // Подготовка GPIO pinMode(5, OUTPUT); digitalWrite(5, 1); pinMode(4, OUTPUT); digitalWrite(4, 1); pinMode(0, OUTPUT); digitalWrite(0, 1); pinMode(2, OUTPUT); digitalWrite(2, 1); // Подключаемся к сети WiFi 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"); // Запуск сервера server.begin(); Serial.println("Server started"); // Вывод полученного IP адреса Serial.println(WiFi.localIP()); } void loop() { // Проверка подключения WiFiClient client = server.available(); if (!client) { return; } // Ожидание данных Serial.println("new client"); while (!client.available()) { delay(1); } // Чтение первой строки запроса String req = client.readStringUntil('\r'); Serial.println(req); client.flush(); // Работа с GPIO if (req.indexOf("/1/0") != -1) digitalWrite(5, 0); else if (req.indexOf("/1/1") != -1) digitalWrite(5, 1); else if (req.indexOf("/2/0") != -1) digitalWrite(4, 0); else if (req.indexOf("/2/1") != -1) digitalWrite(4, 1); else if (req.indexOf("/3/0") != -1) digitalWrite(0, 0); else if (req.indexOf("/3/1") != -1) digitalWrite(0, 1); else if (req.indexOf("/4/0") != -1) digitalWrite(2, 0); else if (req.indexOf("/4/1") != -1) digitalWrite(2, 1); else if (req.indexOf("/5") != -1) { Serial.println("TEST OK"); String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nTest OK. Uptime: "; // Подстчет UpTime int Sec = (millis() / 1000UL) % 60; int Min = ((millis() / 1000UL) / 60UL) % 60; int Hours = ((millis() / 1000UL) / 3600UL) % 24; int Day = ((millis() / 1000UL) / 3600UL / 24UL); s += Day; s += "d "; s += Hours; s += ":"; s += Min; s += ":"; s += Sec; s += "</html>\n"; client.print(s); client.stop(); return; } else // Если неверный запрос написать об ошибке { Serial.println("invalid request"); String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nInvalid request"; s += "</html>\n"; client.print(s); client.stop(); return; } client.flush(); // Формирование ответа String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO set OK"; s += "</html>\n"; // Send the response to the client client.print(s); delay(1); Serial.println("Client disonnected"); }
Ссылка на скетч: https://yadi.sk/d/kU7ndqWQ3Lvpkq
Сначала в этом скетче нужно изменить
// Имя и пароль вашей сети WiFi const char* ssid = "test"; const char* password = "test";
На свои ssid и пароль от вашей wi-fi сети.
Далее пользуясь распиновкой:
Определить к каким GPIO у вас подключено реле и в этих строчках заменить их на свои, или если у вас все подключено также как у меня, то ничего менять ненужно.
Меняется это здесь:
// Работа с GPIO if (req.indexOf("/1/0") != -1) digitalWrite(5, 0); else if (req.indexOf("/1/1") != -1) digitalWrite(5, 1); else if (req.indexOf("/2/0") != -1) digitalWrite(4, 0); else if (req.indexOf("/2/1") != -1) digitalWrite(4, 1); else if (req.indexOf("/3/0") != -1) digitalWrite(0, 0); else if (req.indexOf("/3/1") != -1) digitalWrite(0, 1); else if (req.indexOf("/4/0") != -1) digitalWrite(2, 0); else if (req.indexOf("/4/1") != -1) digitalWrite(2, 1);
После того как залили скетч, в мониторе ком порта должен показаться ip адрес который получила плата NodeMCU. если у вас не получается посмотреть в ком порте, то можно воспользоваться сканированием сети.
Демонстрация работы данной программы можно увидеть в видео приведенном в конце статьи.
Подробнее в Видео: