
Нам понадобится:
Сама плата 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 и посмотреть полностью из чего состоит программа.
Ну а кому лень читать и интересно смотреть видео: