Как правильно использовать возможности 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");
}
}
Вот проблемы:
Веб-страница работает нормально, когда модуль подключен к WiFi и я перехожу по IP-адресу из браузера, но когда включен режим SoftAP и я подключаюсь к точке доступа и захожу на 192.168.1.1, это не так. не работа. Следующая проблема может быть связана с этим.
Я не думаю, что правильно использую WiFi.mode(). В настоящее время я установил его на WIFI_AP_STA, но после того, как возникла проблема 1, я попытался изменить его на WIFI_AP и WIFI_STA по отдельности, поскольку мне нужен был каждый режим, но это все равно не сработало.
@skillz21, 👍0
Обсуждение1 ответ
Следующее может не решить ваши проблемы, но на всякий случай поможет... Я использовал ESP8266 как в режиме станции, так и в режиме точки доступа. Оба работали. В режиме точки доступа это работало, но ESP8266 игнорировал мои инструкции по установке имени и пароля для точки доступа, пока я не понял следующее. . Пароль должен быть не менее 8 символов, иначе инструкция будет проигнорирована. . в IDE надо стереть настройки flash И WiFI, иначе будет "лень" и использовать предыдущие настройки
- Несколько клиентских серверов через Wi-Fi
- Как получить параметры запроса от ESPAsyncWebServer?
- контент» не захватывается
- Как разрешить междоменные запросы на ESP8266 WebServer
- Почему мы используем client.flush() в коде, когда мы подключаем Esp8266 к Интернету или серверу?
- Создание веб-сервера на Wemos D1 mini pro
- Управление реле 5В с помощью Wemos D1 R1
- ESP8266 отправляет веб-страницу клиенту, но html-коды отображаются в браузере вместо веб-страницы
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