• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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", "Ок");
});
 
Сверху Снизу