| Ваш IP: 18.206.175.155 | Online(28) - гости: 12, боты: 16 | Загрузка сервера: 2.55 ::::::::::::

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

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

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

  • Преобразователь температуры

    На рисунке показана схема простого преобразователя температуры окружающей среды в напряжение. Резистор NTC (ТКС) или терморезистор используется в качестве датчика. Если температура возрастет, одновременно изменяется сопротивление терморезистора, при этом происходит изменение выходного напряжения преобразователя на 0,5 в на 1ºC. Коэффициент преобразования зависит от типа сопротивление терморезистора. Если вы хотите выходное …Подробнее...
  • Кодововая и цветовая маркировка отечественных транзисторов

    Кодововая и цветовая маркировка отечественных транзисторов

    Отечественные транзисторы с корпусами малых размеров маркируются цветовой или кодовой маркировкой и лишь в редких случаях марка транзистора наносится полностью, как есть. При ремонте бытовой аппаратуры можно столкнуться с цветовой или кодовой маркировкой и для замены транзистора необходимо определить марку транзистора, сделать это можно указав в предложенной форме тип транзистора. …Подробнее...
  • Регулятор скорости вращения двигателя 12В 150Вт

    Регулятор скорости вращения двигателя 12В 150Вт

    На рисунке показана схема простого регулятора скорости вращения двигателя 12В  мощностью до 150 Вт. Устройство имеет токовый ограничитель на 15А. Основа уст-ва, это система широтно-импульсной модуляции выполненная на ИМС TL494, благодаря чему скорость вращения двигателя может быть в диапазоне от 0 до 100%. При помощи R6 можно регулировать скорость вращения …Подробнее...
  • Высококачественный усилитель мощности на LM1876

    Высококачественный усилитель мощности на LM1876

    Усилитель выполнен на микросхеме LM1876, имеет выходную мощность до 22 Вт при напряжении питания от ±10 до ±32 В. ИМС LM1876 имеет защиту от перегрева, перегрузки, и систему мягкого включения для избавления от щелчков при подаче питания. Технические характеристики: Выходная мощность при Rн = 8 Ом и Uпит ±22 В … 2х20 …Подробнее...
  • Секундомер на PIC16F877A

    Секундомер на PIC16F877A

    В схеме секундомера используется микроконтроллер PIC16F877А и индикатор LCD WH1602D. Временной диапазон от 0,1 секунд до 24 часов. Управление секундомера состоит из двух кнопок «Старт\стоп» и «Сброс». При подачи питания индикатор показывает нулевые значения, при нажатии на кнопку «Старт\стоп» начинается отсчет, при повторном нажатии кнопки во второй строке индикатора появляется промежуточное …Подробнее...