• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP8266 01 не создает web сервер

4ellovekkk

New member
Здравствуйте, решил собрать железку для управления электроприборами внутри одной wi-fi сети. Подключи все через Arduino nano по схеме vin к vcc через ams 1117, gnd-gnd и для прошивки на gnd пускаю gpio0, tx-tx,rx-rx,gpio2-d5, chpd подтянул к питанию. Также подключил реле in-d4, vcc-vin, gnd-gnd. При подключении к ноутбуку загораются красные лампочки на esp, arduino и реле. Прошивается без проблем на 115200, но молчит serial. Не получается по
пасть на страницу управления через браузер. Что делать? В чем проблема? Подскажите пожалуйста. Вот код:
Код:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

MDNSResponder mdns;


// Wi-Fi
const char* ssid = "HUAWEI-Hf7q";
const char* password = "Zzzqwer23745";

byte arduino_mac[] = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };
IPAddress ip(192, 168, 0, 110);
IPAddress gateway(192, 168, 1, 35);
IPAddress subnet(255, 255, 255, 0);

ESP8266WebServer server(10200);


int D4_pin = 5;


void setup(void) {
  // preparing GPIOs

  pinMode(D4_pin, OUTPUT);
  digitalWrite(D4_pin, LOW);


  delay(100);
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  WiFi.config(ip, gateway, subnet);


  Serial.println("");

  // Wait for connection
  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.on("/socket1On", []() {
    digitalWrite(D4_pin, HIGH);
    server.send(200, "text/html", webPage());
    delay(100);
  });
  server.on("/socket1Off", []() {
    digitalWrite(D4_pin, LOW);
    server.send(200, "text/html", webPage());
    delay(100);
 

tretyakov_sa

Moderator
Команда форума
Проверьте esp подключается к роутеру?
Порт сервера server(10200); Зачем такой?
В loop есть обработчик?
void loop() {
server.handleClient();
}
 
4ellovekkk, Вы вставили не всю программу сюда, setup() обрывается на середине, а loop() вообще отсутствует.
 

4ellovekkk

New member
4ellovekkk, Вы вставили не всю программу сюда, setup() обрывается на середине, а loop() вообще отсутствует.
вот целый код. извините лоханулся
Код:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

MDNSResponder mdns;


// Wi-Fi
const char* ssid = "HUAWEI-Hf7q";
const char* password = "Zzzqwer23745";

byte arduino_mac[] = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };
IPAddress ip(192, 168, 0, 110);
IPAddress gateway(192, 168, 1, 35);
IPAddress subnet(255, 255, 255, 0);

ESP8266WebServer server(80);


int D4_pin = 5;


void setup(void) {
  // preparing GPIOs

  pinMode(D4_pin, OUTPUT);
  digitalWrite(D4_pin, LOW);


  delay(100);
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  WiFi.config(ip, gateway, subnet);


  Serial.println("");

  // Wait for connection
  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.on("/socket1On", []() {
    digitalWrite(D4_pin, HIGH);
    server.send(200, "text/html", webPage());
    delay(100);
  });
  server.on("/socket1Off", []() {
    digitalWrite(D4_pin, LOW);
    server.send(200, "text/html", webPage());
    delay(100);

  

  });
  server.begin();
  Serial.println("HTTP server started");
}

void loop(void) {
  server.handleClient();
}

String webPage()
{
  String web;
  web += "<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/> <meta charset=\"utf-8\"><title>ESP 8266 Lamp</title><style>button{color:red;padding: 10px 27px;}</style></head>";
  web += "<h1 style=\"text-align: center;font-family: Open sans;font-weight: 100;font-size: 20px;\">ESP8266 Web Server</h1><div>";
 
  web += "<p style=\"text-align: center;margin-top: 0px;margin-bottom: 5px;\">----Lamp----</p>";
  if (digitalRead(D4_pin) == 1)
  {
    web += "<div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #43a209;margin: 0 auto;\">ON</div>";
  }
  else
  {
    web += "<div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #ec1212;margin: 0 auto;\">OFF</div>";
  }
  web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"socket1On\"><button>ON</button></a>&nbsp;<a href=\"socket1Off\"><button>OFF</button></a></div>";
 

  // ========REFRESH=============
  web += "<div style=\"text-align:center;margin-top: 20px;\"><a href=\"/\"><button style=\"width:158px;\">REFRESH</button></a></div>";
  // ========REFRESH=============


  web += "</div>";
  return (web);
}
 
2019-11-25 23_01_01-Greenshot.jpg Код работает. Вот окно Serial:
Код:
Opening port
Port open

.
Connected to OFF II
IP address: 192.168.88.239
MDNS responder started
HTTP server started
 
а у вас питание было от пк или от внешнего источника?
от USB компьютера.

и у вас есть вот эти строчки:
IPAddress ip(192, 168, 0, 110);
IPAddress gateway(192, 168, 1, 35);
IPAddress subnet(255, 255, 255, 0);
...
WiFi.config(ip, gateway, subnet);

Вероятно, вы хотите получить именно этот адрес от роутера. Но это не работает.
Мой роутер присваивает по DHCP совсем другой адрес (посмотрите скриншот выше).

И главная страница у вас пустая:
server.on("/", []() {
});
так что зайти можно только по
http://xxx.xxx.xxx.xxx/socket1Off

Ну и, на всякий случай, проверьте SSID и Password
 

4ellovekkk

New member
от USB компьютера.

и у вас есть вот эти строчки:
IPAddress ip(192, 168, 0, 110);
IPAddress gateway(192, 168, 1, 35);
IPAddress subnet(255, 255, 255, 0);
...
WiFi.config(ip, gateway, subnet);

Вероятно, вы хотите получить именно этот адрес от роутера. Но это не работает.
Мой роутер присваивает по DHCP совсем другой адрес (посмотрите скриншот выше).

И главная страница у вас пустая:
server.on("/", []() {
});
так что зайти можно только по
http://xxx.xxx.xxx.xxx/socket1Off

Ну и, на всякий случай, проверьте SSID и Password
advanced ip scaner показывает,что модуль подключен к сети, однако не заходит на страницуIMG_20191125_234307.jpg IMG_20191125_234317.jpg
 

tretyakov_sa

Moderator
Команда форума
вот целый код. извините лоханулся
Код:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

MDNSResponder mdns;


// Wi-Fi
const char* ssid = "HUAWEI-Hf7q";
const char* password = "Zzzqwer23745";

byte arduino_mac[] = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };
IPAddress ip(192, 168, 0, 110);
IPAddress gateway(192, 168, 1, 35);
IPAddress subnet(255, 255, 255, 0);

ESP8266WebServer server(80);


int D4_pin = 5;


void setup(void) {
  // preparing GPIOs

  pinMode(D4_pin, OUTPUT);
  digitalWrite(D4_pin, LOW);


  delay(100);
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  WiFi.config(ip, gateway, subnet);


  Serial.println("");

  // Wait for connection
  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.on("/socket1On", []() {
    digitalWrite(D4_pin, HIGH);
    server.send(200, "text/html", webPage());
    delay(100);
  });
  server.on("/socket1Off", []() {
    digitalWrite(D4_pin, LOW);
    server.send(200, "text/html", webPage());
    delay(100);

 

  });
  server.begin();
  Serial.println("HTTP server started");
}

void loop(void) {
  server.handleClient();
}

String webPage()
{
  String web;
  web += "<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/> <meta charset=\"utf-8\"><title>ESP 8266 Lamp</title><style>button{color:red;padding: 10px 27px;}</style></head>";
  web += "<h1 style=\"text-align: center;font-family: Open sans;font-weight: 100;font-size: 20px;\">ESP8266 Web Server</h1><div>";
 
  web += "<p style=\"text-align: center;margin-top: 0px;margin-bottom: 5px;\">----Lamp----</p>";
  if (digitalRead(D4_pin) == 1)
  {
    web += "<div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #43a209;margin: 0 auto;\">ON</div>";
  }
  else
  {
    web += "<div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #ec1212;margin: 0 auto;\">OFF</div>";
  }
  web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"socket1On\"><button>ON</button></a>&nbsp;<a href=\"socket1Off\"><button>OFF</button></a></div>";
 

  // ========REFRESH=============
  web += "<div style=\"text-align:center;margin-top: 20px;\"><a href=\"/\"><button style=\"width:158px;\">REFRESH</button></a></div>";
  // ========REFRESH=============


  web += "</div>";
  return (web);
}
Я загрузил этот код отключив WiFi.config(ip, gateway, subnet);
Все работает.
Здесь сделайте хотя бы так:
server.on("/", []() {
server.send(200, "text/html", "Ок");
});
 
Сверху Снизу