| Ваш IP: 54.145.83.79 | Online(20) - гости: 10, боты: 10 | Загрузка сервера: 5.26 ::::::::::::

wi-fi модуль NodeMcu v3 с чипом ESP8266 (ESP-12e)(Удаленное управление нагрузкой)

Используя модуль NodeMcu v3 с чипом ESP8266 можно управлять устройствами из Интернета (так же локально), а точнее подключить к выходам модуля несколько реле которые будут включать или отключать нагрузку.

Если Вы не знаете как прошить модуль NodeMcu v3, то ознакомьтесь со следующей статьей wi-fi модуль NodeMcu v3 с чипом ESP8266 (ESP-12e)(Arduino IDE).

Загрузите следующий скетч при помощи Arduino IDE:

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
MDNSResponder mdns;
// впишите сюда данные, соответствующие вашей сети:
const char* ssid = "логин";
const char* password = "пароль";
ESP8266WebServer server(81);
 
int d0,d1,d2,d3,d4;
String webPage = "";
String d = "<tr><td align='center'>Состояние выходов</td><td align='center'>";
String dd = "</td><td align='center'><a href=\"obn\"><button>Обновить</button></a></td></html>";
 
void setup(void){
       webPage += "<!DOCTYPE HTML>";
       webPage += "<html>";
       webPage += "<meta charset='utf-8'><meta name='viewport' content='width=480, user-scalable=no' />";
     //webPage += "<meta http-equiv='Refresh' content='5; URL=/obn' />"; // автоматическое обновление страницы каждые 5 секунд
       webPage += "<TABLE align='center' width='350' BORDER='1' cellspacing='0' cellpadding='5'>";
       webPage += "<td align='center'>Номер выхода</td><td align='center'>Включить</td><td align='center'>Выключить</td>";
 
       webPage += "<tr><td align='center'>D0</td><td align='center'><a href=\"socket16On\"><button>ON</button></a></td>";
       webPage += "<td align='center'><a href=\"socket16Off\"><button>OFF</button></a></td>";
 
       webPage += "<tr><td align='center'>D1</td><td align='center'><a href=\"socket5On\"><button>ON</button></a></td>";
       webPage += "<td align='center'><a href=\"socket5Off\"><button>OFF</button></a></td>";
 
       webPage += "<tr><td align='center'>D2</td><td align='center'><a href=\"socket4On\"><button>ON</button></a></td>";
       webPage += "<td align='center'><a href=\"socket4Off\"><button>OFF</button></a></td>";
 
       webPage += "<tr><td align='center'>D3</td><td align='center'><a href=\"socket0On\"><button>ON</button></a></td>";
       webPage += "<td align='center'><a href=\"socket0Off\"><button>OFF</button></a></td>";
 
       webPage += "<tr><td align='center'>D4</td><td align='center'><a href=\"socket2On\"><button>ON</button></a></td>";
       webPage += "<td align='center'><a href=\"socket2Off\"><button>OFF</button></a></td>";
 
  pinMode(16, OUTPUT);digitalWrite(16, LOW);
  pinMode(5, OUTPUT);digitalWrite(5, LOW);
  pinMode(4, OUTPUT);digitalWrite(4, LOW);
  pinMode(0, OUTPUT);digitalWrite(0, LOW);
  pinMode(2, OUTPUT);digitalWrite(2, LOW);
 
  delay(1000);
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  Serial.println("");
 
  while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}
  Serial.println("");
  Serial.print("Connected to ");  
  Serial.println(ssid);
  Serial.print("IP address: ");  
  Serial.println(WiFi.localIP());
 
  if (mdns.begin("esp8266", WiFi.localIP())) {Serial.println("MDNS responder started");}
 
  server.on("/", [](){server.send(200, "text/html", webPage+d+d0+d1+d2+d3+d4+dd);});
  server.on("/obn", [](){server.send(200, "text/html", webPage+d+d0+d1+d2+d3+d4+dd);});
  server.on("/socket16On", [](){d0=1;server.send(200, "text/html", webPage+d+d0+d1+d2+d3+d4+dd);digitalWrite(16, HIGH);delay(300);});
  server.on("/socket16Off", [](){d0=0;server.send(200, "text/html", webPage+d+d0+d1+d2+d3+d4+dd);digitalWrite(16, LOW);delay(300);});
 
  server.on("/socket5On", [](){d1=1;server.send(200, "text/html", webPage+d+d0+d1+d2+d3+d4+dd);digitalWrite(5, HIGH);delay(300);});
  server.on("/socket5Off", [](){d1=0;server.send(200, "text/html",webPage+d+d0+d1+d2+d3+d4+dd);digitalWrite(5, LOW);delay(300);});
 
  server.on("/socket4On", [](){d2=1;server.send(200, "text/html", webPage+d+d0+d1+d2+d3+d4+dd);digitalWrite(4, HIGH);delay(300);});
  server.on("/socket4Off", [](){d2=0;server.send(200, "text/html", webPage+d+d0+d1+d2+d3+d4+dd);digitalWrite(4, LOW);delay(300);});
 
  server.on("/socket0On", [](){d3=1;server.send(200, "text/html",  webPage+d+d0+d1+d2+d3+d4+dd);digitalWrite(0, HIGH);delay(300);});
  server.on("/socket0Off", [](){d3=0;server.send(200, "text/html", webPage+d+d0+d1+d2+d3+d4+dd);digitalWrite(0, LOW);delay(300);});
 
  server.on("/socket2On", [](){d4=1;server.send(200, "text/html",  webPage+d+d0+d1+d2+d3+d4+dd);digitalWrite(2, HIGH);delay(300);});
  server.on("/socket2Off", [](){d4=0;server.send(200, "text/html", webPage+d+d0+d1+d2+d3+d4+dd);digitalWrite(2, LOW);delay(300);});
 
  server.begin();
  Serial.println("HTTP server started");
}
 
void loop(void){
  server.handleClient();
}

После загрузки скетча откройте монитор порта, далее нажмите кнопку «RST», после чего Вы увидите примерно следующее:

Как видно на примере модуль использует IP адрес 192.168.1.65, чтобы управлять устройствами из Интернета, Вам необходимо выполнить переадресацию портов на маршрутизаторе, а так же указать в настройках маршрутизатора, чтобы IP адрес модуля был постоянный.

Как видно на примерах, IP адрес 192.168.1.65 был помечен как постоянный, а при переадресации портов использует порт 81. По умолчанию используется порт 80, но так как этот порт был занят используется порт 81.

Теперь можно использовать можно использовать WEB страницу для управления нагрузкой в локальной сети, для этого введите в строке запроса браузера IP адрес:

http://192.168.1.65:81

(Если Вы используете порт 80, то указывать его в строке запроса не нужно)

 
WEB страница позволяет управлять выходами D0…D4, а так же выводит состояние выходов. При желании можно добавить еще несколько выходов для управления нагрузкой.

Для управления платой через Интернет необходимо использовать статический внешний IP, а в строке запроса браузера указывать следующее:

http://xxx.xxx.xxx.xxx:81

Где xxx.xxx.xxx.xxx Ваш внешний IP адрес.

Подключение цифрового датчика температуры 18B20

Следующий скетч аналогичен первому, при помощи его так же можно управлять нагрузкой используя цифровые выходы D0…D4 и дополнительно можно удаленно измерять температуру при помощи цифрового датчика 18B20 который подключен в цифровому входу D5.

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire oneWire(14);// вход датчика 18b20
DallasTemperature t(&oneWire);
MDNSResponder mdns;
// впишите сюда данные, соответствующие вашей сети:
const char* ssid = "логин";
const char* password = "пароль";
ESP8266WebServer server(81);
 
int d0,d1,d2,d3,d4;float temper;
String webPage = "";
String d = "<tr><td align='center'>Состояние выходов</td><td align='center'><a href=\"obn\"><button>Обновить</button></a></td><td align='center'>";
String tt= "</td><tr><td align='center'>Температура</td><td align='center'><a href=\"obn\"><button>Обновить</button></a></td><td align='center'>";
String ttt = " &#176;C</td></html>";
 
void setup(void){
       webPage += "<!DOCTYPE HTML>";
       webPage += "<html>";
       webPage += "<meta charset='utf-8'><meta name='viewport' content='width=480, user-scalable=no' />";
       webPage += "<TABLE align='center' width='350' BORDER='1' cellspacing='0' cellpadding='5'>";
     //webPage += "<meta http-equiv='Refresh' content='5; URL=/obn' />"; // автоматическое обновление страницы каждые 5 секунд
       webPage += "<td align='center'>Номер выхода</td><td align='center'>Включить</td><td align='center'>Выключить</td>";
 
       webPage += "<tr><td align='center'>D0</td><td align='center'><a href=\"socket16On\"><button>ON</button></a></td>";
       webPage += "<td align='center'><a href=\"socket16Off\"><button>OFF</button></a></td>";
 
       webPage += "<tr><td align='center'>D1</td><td align='center'><a href=\"socket5On\"><button>ON</button></a></td>";
       webPage += "<td align='center'><a href=\"socket5Off\"><button>OFF</button></a></td>";
 
       webPage += "<tr><td align='center'>D2</td><td align='center'><a href=\"socket4On\"><button>ON</button></a></td>";
       webPage += "<td align='center'><a href=\"socket4Off\"><button>OFF</button></a></td>";
 
       webPage += "<tr><td align='center'>D3</td><td align='center'><a href=\"socket0On\"><button>ON</button></a></td>";
       webPage += "<td align='center'><a href=\"socket0Off\"><button>OFF</button></a></td>";
 
       webPage += "<tr><td align='center'>D4</td><td align='center'><a href=\"socket2On\"><button>ON</button></a></td>";
       webPage += "<td align='center'><a href=\"socket2Off\"><button>OFF</button></a></td>";
 
 
  pinMode(16, OUTPUT);digitalWrite(16, LOW);
  pinMode(5, OUTPUT);digitalWrite(5, LOW);
  pinMode(4, OUTPUT);digitalWrite(4, LOW);
  pinMode(0, OUTPUT);digitalWrite(0, LOW);
  pinMode(2, OUTPUT);digitalWrite(2, LOW);
 
  t.begin();t.setResolution(11);//11 бит 
 
  delay(1000);
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  Serial.println("");
 
  while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}
  Serial.println("");
  Serial.print("Connected to ");  
  Serial.println(ssid);
  Serial.print("IP address: ");  
  Serial.println(WiFi.localIP());
 
  if (mdns.begin("esp8266", WiFi.localIP())) {Serial.println("MDNS responder started");}
 
  server.on("/", [](){server.send(200, "text/html", webPage+d+d0+d1+d2+d3+d4+tt+temper+ttt);});
  server.on("/obn", [](){t.requestTemperatures();temper=t.getTempCByIndex(0);server.send(200, "text/html", webPage+d+d0+d1+d2+d3+d4+tt+temper+ttt);});
 
  server.on("/socket16On", [](){d0=1;server.send(200, "text/html", webPage+d+d0+d1+d2+d3+d4+tt+temper+ttt);digitalWrite(16, HIGH);delay(300);});
  server.on("/socket16Off", [](){d0=0;server.send(200, "text/html", webPage+d+d0+d1+d2+d3+d4+tt+temper+ttt);digitalWrite(16, LOW);delay(300);});
 
  server.on("/socket5On", [](){d1=1;server.send(200, "text/html", webPage+d+d0+d1+d2+d3+d4+tt+temper+ttt);digitalWrite(5, HIGH);delay(300);});
  server.on("/socket5Off", [](){d1=0;server.send(200, "text/html",webPage+d+d0+d1+d2+d3+d4+tt+temper+ttt);digitalWrite(5, LOW);delay(300);});
 
  server.on("/socket4On", [](){d2=1;server.send(200, "text/html", webPage+d+d0+d1+d2+d3+d4+tt+temper+ttt);digitalWrite(4, HIGH);delay(300);});
  server.on("/socket4Off", [](){d2=0;server.send(200, "text/html", webPage+d+d0+d1+d2+d3+d4+tt+temper+ttt);digitalWrite(4, LOW);delay(300);});
 
  server.on("/socket0On", [](){d3=1;server.send(200, "text/html",  webPage+d+d0+d1+d2+d3+d4+tt+temper+ttt);digitalWrite(0, HIGH);delay(300);});
  server.on("/socket0Off", [](){d3=0;server.send(200, "text/html", webPage+d+d0+d1+d2+d3+d4+tt+temper+ttt);digitalWrite(0, LOW);delay(300);});
 
  server.on("/socket2On", [](){d4=1;server.send(200, "text/html",  webPage+d+d0+d1+d2+d3+d4+tt+temper+ttt);digitalWrite(2, HIGH);delay(300);});
  server.on("/socket2Off", [](){d4=0;server.send(200, "text/html", webPage+d+d0+d1+d2+d3+d4+tt+temper+ttt);digitalWrite(2, LOW);delay(300);});
 
  server.begin();
  Serial.println("HTTP server started");
}
 
void loop(void){
  server.handleClient();
}

Для снятия показаний температуры необходимо нажать кнопку «Обновить», wi-fi модуль NodeMcu снимет показания температуры с датчика и выведет их на WEB страницу.


webPage += «<meta http-equiv=’Refresh’ content=’5; URL=/obn’ />»; // автоматическое обновление страницы каждые 5 секунд

Раскомментируйте строчку если необходимо обновлять данные каждые 5 секунд

Добавить комментарий

Случайные статьи

  • Акустическое оформление НЧ динамической головки

    Динамический диапазон — 25…150Гц, автором применена НЧ головка 75ГДН-3. Корпус рис. 1.2. изготовлен из ДСП толщиной 20мм. Стенки корпуса соединены друг с другом рейками 20*20мм с помощью клея и шурупов. Акустическая панель с отверстиями под НЧ головку крепится внутри корпуса АС. Задняя стенка корпуса — съемная, на ней устанавливаются НЧ …Подробнее...
  • Замедлитель выключения света в салоне автомобиля

    После закрывания двери автомобиля при неработающем двигателе такой замедлитель будет гасить свет не сразу , а через 10-15 секунд. При этом при работающем двигателе замедлитель не должен будет работать. По питанию схема включена параллельно осветительной лампе Л1. Контакты реле К1 блокируют выключатель освещения П1.  при неработающем двигателе при открывании двери …Подробнее...
  • Приемник УКВ ЧМ на микросхеме 174ХА34

    Приемник работает в диапазоне 65…108 МГц и имеет чувствительность не хуже 5 мкВ\В. Номинальное напряжение питания — 3В. Весь высокочастотный тракт включая ЧМ детектор, УВЧ и гетеродин, собран на одной специализированной микросхеме DA1 типа К174ХА34. Эта микросхема представляет собой УВЧ, смеситель, гетеродин, УПЧ, усилитель-ограничитель, ЧМ детектор, систему шумо-понижения и сжатия …Подробнее...
  • Предварительный делитель частоты

    На рисунке показано уст-во (делитель частоты) которое предназначено для расширения верхнего предела диапазона измерения частотомеров до 250 МГц, путем деления частоты на 100. Так же это уст-во совместимо с осциллографом для увеличения диапазона частот. Делитель частоты собран на одной стороне фольгированного стеклотекстолита, а на второй стороне остается фольга не тронутой, …Подробнее...
  • MAX639, MAX640, MAX653 — понижающие, импульсные стабилизаторы

    MAX639, MAX640, MAX653 — понижающие, импульсные стабилизаторы

    MAX639, MAX640, MAX653 (5В/3.3В/3В) — понижающие DC/DC преобразователи с низким потребляемым током покоя. Максимальный выходной ток преобразователя до 225 мА. Система управления и ограничения тока с частотно – импульсной модуляцией (ЧИМ) обеспечивает устройствам преимущества, свойственные преобразователям с широтно – импульсной модуляцией (ШИМ), т.е. высокую эффективность при больших нагрузках, в то …Подробнее...