| Ваш IP: 35.175.182.106 | Online(31) - гости: 21, боты: 10 | Загрузка сервера: 1.32 ::::::::::::

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 секунд

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

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

  • Индикатор магнитного поля — детектор скрытой проводки

    Вокруг проводников, по которым протекает переменный ток, создается не только переменное электрическое поле, но и переменное магнитное поле. Поэтому для обнаружения скрытой проводки можно регистрировать переменное магнитное поле. Индикатор магнитного поля содержит датчик магнитного поля В1, усилитель переменного тока на ОУ DA1 и компаратор напряжения на ОУ DA2. Если датчик …Подробнее...
  • Усилитель мощности низкой частоты с эффективной мощностью 125Вт

    Усилитель мощности низкой частоты с эффективной мощностью 125Вт

    Главные достоинство этого усилителя — относительная простота и малые габариты. Сдвоенный ОУ в режиме инвертирующего усилителя обеспечивает усиление 26дБ и размах выходного сигнала в +/-19В(при питающем напряжении +/-20В) между выводами 1 и 7 при полосе частот до 100кГц. Мостовой выходной каскад на  ДМОП-транзисторах с каналами n- и  p-  типов обеспечивают …Подробнее...
  • Маркировка резисторов с проволочными выводами

    Резисторы, в особенности малой мощности — чрезвычайно мелкие детали, резистор мощностью 0,125Вт имеет длину несколько миллиметров и диаметр порядка миллиметра. Прочитать на такой детали номинал с десятичной запятой невозможно. Поэтому, при указании номинала вместо десятичной точки пишут букву, соответствующую единицам измерения (К — для килоомов, М — для мегаомов, E …Подробнее...
  • Проводники, полупроводники и непроводники

    Проводники, полупроводники и непроводники

    ВСЁ ДЛЯ РАДИОЛЮБИТЕЛЕЙ: http://www.dessy.ru/index.html?partne… В этом выпуске: что такое проводник, что такое полупроводник, что такое непроводник, что такое изолятор или диэлектрик.Подробнее...
  • Автогенераторы на элементах ТТЛ

    Автогенераторы на элементах ТТЛ

    При помощи элементов ТТЛ можно изготовить автогенераторы у которых выходная частота превышает 30 МГц. Для того чтобы автогенератор быстро возбуждался и работал стабильно во всем диапазоне внешних воздействий, усилительная линейка должна быть не инвертирующей с большим коэффициентом усиления Ku, который по возможности следует стабилизировать. Схемы простых автогенераторов показаны на рисунках …Подробнее...