Как правильно использовать возможности Wi-Fi ESP8266?

Я создаю проект с ESP8266 (Arduino IDE), который требует, чтобы он обслуживал веб-страницу для клиента. Модуль будет подключен к сети Wi-Fi по умолчанию, но когда эта сеть Wi-Fi недоступна, мне нужно, чтобы он включил свою программную точку доступа, чтобы пользователь мог получить доступ к этой веб-странице, подключившись к точке доступа. Когда сеть WiFi станет доступной, я хочу, чтобы модуль повторно подключился к сети WiFi и отключил SoftAP.

Вот кусок кода в моем скетче, который отвечает за работу с Wi-Fi:

void wifi() {  
  if(WiFi.status() != WL_CONNECTED){
    WiFi.mode(WIFI_AP_STA);

    if((unsigned long)(millis() - waitUntil) >= interval){            //эту секцию я использовал как альтернативу функции delay(), задержка 3 секунды
      WiFi.begin(ssid, password);
      waitUntil = waitUntil + interval;

      if(WiFi.status() == WL_CONNECTED){
        Serial.println("Connection successful! ");
        Serial.print("IP: ");
        Serial.print(WiFi.localIP());
        WiFi.softAPdisconnect(true);
      }
    }
  }

  if(WiFi.status() != WL_CONNECTED && softAPEnabled == false){
    Serial.println("WiFi not connected, enabling SoftAP...");

    WiFi.softAP(softAP_ssid, softAP_password);

    softAPEnabled = true;

    Serial.println("SoftAP ON");
  }
  else if(WiFi.status() == WL_CONNECTED && softAPEnabled == true){
    WiFi.softAPdisconnect(true);
    softAPEnabled = false;
    Serial.println("SoftAP OFF");
  }
}

Вот проблемы:

  1. Веб-страница работает нормально, когда модуль подключен к WiFi и я перехожу по IP-адресу из браузера, но когда включен режим SoftAP и я подключаюсь к точке доступа и захожу на 192.168.1.1, это не так. не работа. Следующая проблема может быть связана с этим.

  2. Я не думаю, что правильно использую WiFi.mode(). В настоящее время я установил его на WIFI_AP_STA, но после того, как возникла проблема 1, я попытался изменить его на WIFI_AP и WIFI_STA по отдельности, поскольку мне нужен был каждый режим, но это все равно не сработало.

, 👍0

Обсуждение

192.168.0.1 и 192.168.1.1 обычно используются коммерческими маршрутизаторами в качестве собственных локальных адресов. Может ли выбранный вами адрес станции конфликтовать с этим?, @JRobert

IP-адрес SoftAP по умолчанию с ядром Arduino не 192.168.1.1. Используйте WiFi.softAPIP(); для печати IP, @Juraj

@Juraj Спасибо за это. Я взгляну., @skillz21

@Juraj Кроме того, я потратил слишком много времени на поиск функций WiFi.h. У вас случайно нет ссылки на сайт со списком всех функций WiFi.h?, @skillz21

https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/soft-access-point-class.html, @Juraj

https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WiFi/src/ESP8266WiFiAP.h, @Juraj


1 ответ


1

Следующее может не решить ваши проблемы, но на всякий случай поможет... Я использовал ESP8266 как в режиме станции, так и в режиме точки доступа. Оба работали. В режиме точки доступа это работало, но ESP8266 игнорировал мои инструкции по установке имени и пароля для точки доступа, пока я не понял следующее. . Пароль должен быть не менее 8 символов, иначе инструкция будет проигнорирована. . в IDE надо стереть настройки flash И WiFI, иначе будет "лень" и использовать предыдущие настройки

,