Код сканирования Wi-Fi для esp32 wroom 32
Я пытаюсь сканировать Wi-Fi в режиме sta_ap в своем модуле esp32 wroom 32, но он не сканирует новый Wi-Fi .Может ли кто-нибудь рассказать больше о том, как работает режим Wi-Fi в этом модуле и в чем проблема в моем коде.Тот же код работает в esp8266.
КОД:
#include <WiFi.h>
const char *ap_ssid = "ESP32";
const char *ap_password = "";
const char *sta_ssid = "KKACT";
const char *sta_password = "kk25990418";
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_AP_STA);
WiFi.disconnect();
delay(100);
Serial.print("Configuring access point...");
WiFi.softAP(ap_ssid, ap_password);
IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(myIP);
Serial.println();
Serial.print("Connecting to ");
Serial.println(sta_ssid);
WiFi.begin(sta_ssid, sta_password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
Serial.println("Now scanning wifi continously");
int n=WiFi.scanNetworks();
for (int i = 0; i < n; ++i)
{
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.RSSI(i));
Serial.print(")");
}
delay(2000);
}
@Ayush Yadav, 👍1
Обсуждение2 ответа
Лучший ответ:
Это вопрос, поднятый на github по этому поводу:
https://github.com/espressif/arduino-esp32/issues/3294
И проблема, похоже, в том, что неудачное подключение предотвращает сканирование, и решение заключается в следующем:
Итак, что я сделал, войдя в портал:
WiFi.mode(WIFI_OFF); // в противном случае Wifi.Scannetworks() завершится неудачно
delay(5000);
Это, по-видимому, останавливает процессы, препятствующие сканированию.
После этого немедленное сканирование работает без проблем.
итак ,где я должен добавить эту строку в конце такой настройки void?
`Серийный номер.println("");
Serial.println("подключен Wi-Fi");
Serial.println("IP-адрес: ");
Serial.println(WiFi.localIP());
Wi-Fi.режим(WIFI_OFF);
задержка(5000);
`, @Ayush Yadav
Вы делаете это неправильно. Для выполнения сканирования Wi-Fi:
- Он должен быть в
режиме WIFI_STA;
- Он должен быть отключен от точки доступа;
- После того, как вы закончите с отсканированными SSID, BSSID и RSSI, вам необходимо вызвать
WiFi.scanDelete ()
, если вы собираетесь выполнить сканирование снова, в противном случае вы получите тот же результат предыдущего сканирования.
Итак, вкратце, вот код:
#include <WiFi.h>
void setup() {
Serial.begin(115200);
Serial.println();
}
void loop() {
Serial.println("Scanning WiFi Networks...");
WiFi.mode(WIFI_STA);
WiFi.disconnect();
int n = WiFi.scanNetworks();
for (int i=0; i<n; i++) {
Serial.printf("%2d SSID=%-20s RSSI=%d\n", i+1, WiFi.SSID(i).c_str(), WiFi.RSSI(i));
}
WiFi.scanDelete();
delay(10000);
}
я попробовал WiFi.scanDelete(); но это не сработало ,я знаю ,что могу использовать режим wifi_sta, но в esp32 есть wifi_sta_ap, в котором есть как режим станции, так и режим точки доступа, поэтому он тоже должен работать в этом режиме. Я попробовал тот же код в esp8266,и он сработал, что-то в настройке void нарушает сканирование Wi-Fi., @Ayush Yadav
Вы используете свой код, просто добавив " WiFi.scanDelete ()", или вы используете мой пример?, @hcheung
я использую только ваш код, но с Wi-Fi.mode(WIFI_AP_STA );, @Ayush Yadav
- esp32 Stack canary watchpoint срабатывает
- WindowsError(31, "Устройство, подключенное к системе, не функционирует") в arduino
- Как очистить кучу памяти в esp32
- Не удается включить распознавание лиц на esp32 cam : CORRUPT HEAP: Bad head at 0x3ffe2eb4. Expected 0xabba1234 got 0x00000008 abort()
- NodeMCU 1.0 автоматически сбрасывается через некоторое время
- MD5 файла не соответствует данным во флэш-памяти. Ошибка ESP32 S3.
- Как назначить точке доступа ESP8266 имя хоста, которое может быть разрешено станциями?
- Adafruit esp32 Feather не удалось скомпилировать
А если вы отключитесь перед сканированием?, @Majenko
Я попытался отключиться в конце основного цикла void ,но результаты были те же, я получал список Wi-Fi, но новый Wi-Fi не обнаруживается или, возможно, не сканируется, @Ayush Yadav