PRJ - ESP32 Scan WiFi#
From: ESP32 Useful Wi-Fi Library Functions (Arduino IDE) —— Random Nerd Tutorials
原文非常全面,此处只重点摘录了网络扫描部分。
Scan Wi-Fi Networks#
Key Steps#
WiFi.mode(WIFI_STA) : Station mode
WiFi.scanNetworks() 后,得到的返回值是 wifi networks 的个数。
WiFi.SSID(i),
WiFi.RSSI(i)
WiFi.scanNetworks 的 API 设计的非常好记。首先,它返回的n 在后面遍厉时马上会用。对于每个 WiFi AP,都可以用类似下标的形式去访问它们的 SSID 和 RSSI。
Code List#
/*
Example from WiFi > WiFiScan
Complete details at https://RandomNerdTutorials.com/esp32-useful-wi-fi-functions-arduino/
*/
#include "WiFi.h"
void setup() {
// Serial.begin(115200);
Serial.begin(9600);
// Set WiFi to station mode and disconnect from an AP if it was previously connected
WiFi.mode(WIFI_STA); // 1
WiFi.disconnect();
delay(100);
Serial.println("Setup done");
}
void loop() {
Serial.println("scan start");
// WiFi.scanNetworks will return the number of networks found
int n = WiFi.scanNetworks(); // 2
Serial.println("scan done");
if (n == 0) {
Serial.println("no networks found");
} else {
Serial.print(n);
Serial.println(" networks found");
for (int i = 0; i < n; ++i) {
// Print SSID and RSSI for each network found
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i)); // 3
Serial.print(" (");
Serial.print(WiFi.RSSI(i)); // 4
Serial.print(")");
Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN)?" ":"*");
delay(10);
}
}
Serial.println("");
// Wait a bit before scanning again
delay(5000);
}
Next#
实验结果表明, WiFi 的 RSSI 值很不稳定。
该方法可以在不需要接入 WiFi 网时,一次批量扫描 ESP32 可接收信号范围内的大量 WiFi 网络。