Нам понадобится:
Сама плата nodemcu: http://ali.pub/1qdz7a
nodemcu shield: http://ali.pub/1qdzd4
Реле: http://ali.pub/1qrtft
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
В данной статье показан пример использования платы NodeMCU. А именно управление нагрузкой с помощью релейного модуля из 4 реле и приложения на мобильный телефон андроид.
Подключаем все контакты по схеме
После подключения всех компонентов необходимо скопировать программный код приведенный ниже и вставить его в программу 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); // присваиваем статичесий IP адрес WiFi.mode(WIFI_STA); // режим клиента WiFi.config(IPAddress(192,168,1,131),IPAddress(192,168,1,111),IPAddress(255,255,255,0),IPAddress(192,168,1,1)); 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/XU-WI08r3M32gF
Сначала в этом скетче нужно изменить
// Имя и пароль вашей сети WiFi const char* ssid = "test"; const char* password = "test";
Затем в строчке меняем ip адрес на свой:
WiFi.mode(WIFI_STA); // режим клиента WiFi.config(IPAddress(192,168,1,131),IPAddress(192,168,1,111),IPAddress(255,255,255,0),IPAddress(192,168,1,1));
Где первое это ip адрес устройства, 2 это шлюз, 3 это маска подсети, 4 это адрес dhcp сервера
После заливки скетча, переходя по адресу http://192.168.1.131/1/0 и http://192.168.1.131/1/1 мы будем включать и выключать реле, и следовательно меняя 1 на 2,3,4 мы будем управлять другими реле, например http://192.168.1.131/3/1
Теперь давайте перейдем к созданию приложения:
перейдя по ссылке: http://ai2.appinventor.mit.edu и залогинившись, мы поподаем в программу создания приложений для андроид.
Мое приложение выглядит так:
Тяжело здесь описать, что нужно добавлять, постараюсь перечислить что нужно накидать на экран.
Для управления 4мя реле нам нужно:
Из вкладки слева User interface накидать на экран 8 Button, для надписей над кнопками нам нужно 4 Label
Из вкладки слева Connectivity Добавить блок Web
Для установки двух кнопок в одной плоскости нам понадобится блок HorizontalArrangement в вкладке слева Layout
Для точечной настройки каждого добавленного блока, нужно выбрать тот блок который мы хотим отредактировать справа в вкладке Components
И в вкладке справа Properies раскроются все настройки которые применимы к этому объекту.
Общее окно выглядит вот так:
После косметических настроек перейдем в правом верхнем углу во вкладку Blocks
Здесь будем программировать с помощью блок-схем.
Для начала в вкладке слева Blocks выберем первую кнопку с которой будем работать и выберем блок: when Button1 . Click
Далее в тойже вкладке Blocks нажмем на Web и почти в самом низу выберем блок set Web1. Url to
и добавим его к when Button1 . Click
Далее перейдем в туже вкладку Blocks далее Text и выберем самый первый блок который выглядит вот так ” ” присоединим его к et Web1. Url to и напишем в нем адрес для включения реле “http://192.168.1.131/1/0”
Далее в тойже вкладке Blocks нажмем на Web выберем пурпурного цвета блок call Web1. Get и присоединим его к when Button1 . Click
На этом настройка кнопки закончена, такие же действия нужно проделать со всеми кнопками и должно получиться вот так:
Само приложение можно скачать по ссылке:https://yadi.sk/d/BY4kEIYQ3M36LL
Исходники можно посмотреть по этой ссылке: https://yadi.sk/d/ehabE3C_3M36Yo по этой ссылке скачается файл с расширением .aia и его можно добавить в MIT app invertor и посмотреть полностью из чего состоит программа.
Ну а кому лень читать и интересно смотреть видео: