Как отключить или остановить точку доступа в ESP8266?
Я создал код для ESP8266 12E с Arduino IDE, в котором он будет работать как "Режим станции" или "Режим точки доступа" по Wi-Fi, в зависимости от ситуации. Все работает нормально, за исключением случаев, когда устройство было настроено как точка доступа, даже когда я выключаю устройство, а затем снова включаю и принудительно инициализирую Wifi как "Режим станции", сеть точки доступа остается активной.
Пример: Предположим, что я включил ESP8266 и инициализировал Wi-Fi как точку доступа, и назвал сеть Wi-Fi как "MY_WIFI_TEST". Давайте теперь предположим, что я выключил ESP8266 и заставил его включиться как "Режим станции". ESP8266 обычно подключается к моей сети (сети моего маршрутизатора шлюза 192.168.1.1), но сохраняет сеть "MY_WIFI_TEST" активной (предыдущая сеть в качестве точки доступа). Вы не можете подключиться к этой сети, но она остается активной.
Как я могу отключить или остановить сеть точки доступа?
Мой тестовый код:
#include <ESP8266WiFi.h>
bool access_point_init(){
// Режим точки доступа
Serial.begin(115200);
IPAddress ip(192,168,1,254);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
char* ssid = "myssidname";
char* password = "12345678";
WiFi.softAPConfig(ip, gateway, subnet);
bool ret = WiFi.softAP(ssid, password);
return ret;
}
void wifi_station_init(){
// Режим станции
Serial.begin(115200);
Serial.printf("\n");
WiFi.begin(net_ssid, net_pwd_ssid);
IPAddress ip(192,168,1,10);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
WiFi.config(ip, gateway, subnet);
k = 0;
while ((WiFi.status() != WL_CONNECTED) && (k < 80)){
delay(250);
Serial.print('.');
k++;
}
Serial.printf("\n");
Serial.printf("IP address: ");
Serial.println(WiFi.localIP());
}
void setup()
{
bool my_condition = false;
//...
// my_condition = Функция загрузки();
//...
if (my_condition) {
access_point_init();
} else {
wifi_station_init();
}
}
@wBB, 👍9
3 ответа
Я уже решил, используя функцию библиотечного Wi-Fi, специфичную для подключений в режиме "Точка доступа":
WiFi.softAPdisconnect (true);
Ссылка: softapdisconnect подключать
Я исправил это, добавив команду ниже перед запуском точки доступа.
WiFi.режим (WIFI_AP);
Я пытался отключить softAP в новом Arduino Uno R4 Wi-Fi, чтобы переименовать его и перезапустить. Я поместил показания изменяющегося датчика в имя точки доступа, чтобы увидеть их значение, просто выполнив сканирование сети, не подключаясь к ней.
Библиотека wifi.h для UNO R4 не реализует SOFTAPDISCONNECT. В примере сервера AP_SIMPLEWEB я обнаружил, что добавление следующей функции отключает точку доступа и позволяет перезапустить ее с другим именем.
void endAccessPoint() {
using namespace std;
string res = "";
modem.begin();
modem.write(string(PROMPT(_DISCONNECTSOFTAP)),res,"%s%d\r\n" ,CMD_WRITE(_DISCONNECTSOFTAP),1);
}
- ESP8266 не подключается к Wi-Fi
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Можно ли отключить WiFi на ESP8266?
- ESP8266 — действительно ли у него по умолчанию плохой радиус действия Wi-Fi?
- Как подключить ESP8266 с помощью адаптера ESP-01 к Arduino Uno?
- ESP8266 на Wi-Fi без пароля, возможно?
- ESP8266 Аналоговое чтение мешает Wi-Fi?
- Каково использование зарезервированных контактов и контактов SDD2, SDD3 NodeMCU?