D1 mini/esp8266 WifiManager

Итак, у меня есть D1 mini, который я хочу подключить к Wi-Fi. Я нашел в Интернете следующий код, который должен запускать веб-сервер, который вы можете посетить, а затем подключиться к выбранному Wi-Fi через веб-сайт. Затем он запомнит настройки и попытается подключиться к этому Wi-Fi в следующий раз, прежде чем запустить веб-сервер — это как раз то, что мне нужно! Проблема в том, что когда я подключаюсь к Wi-Fi, d1 mini думает, что так и было, но когда я захожу на свой маршрутизатор и проверяю, он не подключен.

Я не могу понять, почему он думает, что подключен, но это не так. Может ли кто-нибудь мне помочь?

#include <FS.h>                   //это должно быть первым, иначе все рухнет и сгорит...
#include <ESP8266WiFi.h>          //https://github.com/esp8266/Arduino
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>          //https://github.com/tzapu/WiFiManager

void setup() {

  Serial.begin(115200);
  Serial.println();

  //WiFiManager

  WiFiManager wifiManager;

  //сбрасываем настройки - для тестирования
  wifiManager.resetSettings();

  IPAddress _ip = IPAddress(192, 168, 0, 35);
  IPAddress _gw = IPAddress(192, 168, 0, 1);
  IPAddress _sn = IPAddress(255, 255, 255, 0);

  wifiManager.setSTAStaticIPConfig(_ip, _gw, _sn);
  if (!wifiManager.autoConnect("WemosAP", "ConfigureMe")) {
    Serial.println("failed to connect, we should reset as see if it connects");
    delay(3000);
    ESP.reset();
    delay(5000);
  }
  //если вы доберетесь сюда, значит, вы подключены к Wi-Fi
  Serial.println("connected...yeey :)");
  Serial.println("local ip");
  Serial.println(WiFi.localIP());
}
void loop() {
}

Кстати: IP-адрес 192.168.0.35 свободен, и я проверил и шлюз, и маску подсети на своем ноутбуке, запустив ipconfig в cmd.

, 👍0

Обсуждение

удалить resetSettings(), @Juraj


1 ответ


Лучший ответ:

2

Похоже, что код просто сломан. Я нашел пример из библиотеки WifiManager, который называется «автоподключение». Кажется, это делает то же самое, просто тоже работает:

#include <ESP8266WiFi.h>          //https://github.com/esp8266/Arduino

//нужно для библиотеки
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include "WiFiManager.h"          //https://github.com/tzapu/WiFiManager

void configModeCallback (WiFiManager *myWiFiManager) {
  Serial.println("Entered config mode");
  Serial.println(WiFi.softAPIP());
  //если вы использовали автоматически сгенерированный SSID, распечатайте его
  Serial.println(myWiFiManager->getConfigPortalSSID());
}

void setup() {
  // поместите сюда свой код установки для однократного запуска:
  Serial.begin(115200);

  //WiFiManager
  //Локальная инициализация. Как только его дела будут завершены, нет необходимости держать его при себе.
  WiFiManager wifiManager;
  //сбрасываем настройки - для тестирования
  //wifiManager.resetSettings();

  //устанавливаем обратный вызов, который вызывается при сбое подключения к предыдущему Wi-Fi и переходе в режим точки доступа
  wifiManager.setAPCallback(configModeCallback);

  // извлекает ssid и передает его и пытается подключиться
  //если не подключается, то запускает точку доступа с указанным именем
  //здесь "АвтоподключениеAP"
  //и переходим в цикл блокировки в ожидании конфигурации
  if(!wifiManager.autoConnect()) {
    Serial.println("failed to connect and hit timeout");
    //сброс и попытка еще раз, или, может быть, переводим его в глубокий сон
    ESP.reset();
    delay(1000);
  } 

  //если вы доберетесь сюда, значит, вы подключены к Wi-Fi
  Serial.println("connected...yeey :)");

}

void loop() {
  // поместите сюда свой основной код для многократного запуска:

}
,