如何用esp32扫描可连接的WiFi并连接
时间: 2024-04-14 15:28:08 浏览: 38
要使用ESP32扫描并连接可连接的WiFi网络,你可以使用ESP32的WiFi库。下面是一个示例代码,演示了如何扫描可连接的WiFi网络并连接到选定的网络:
```cpp
#include <WiFi.h>
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
void setup() {
Serial.begin(115200);
// 初始化WiFi模块
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(1000);
Serial.println("Scanning WiFi networks...");
// 扫描可连接的WiFi网络
int networkCount = WiFi.scanNetworks();
if (networkCount == 0) {
Serial.println("No WiFi networks found.");
}
else {
Serial.print(networkCount);
Serial.println(" WiFi networks found:");
for (int i = 0; i < networkCount; ++i) {
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.RSSI(i));
Serial.print(")");
Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN) ? " " : "*");
delay(10);
}
// 连接到WiFi网络
WiFi.begin(ssid, password);
Serial.print("Connecting to ");
Serial.println(ssid);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("\nConnected to WiFi.");
}
}
void loop() {
// 空循环
}
```
在这个示例中,我们首先初始化ESP32的WiFi模块,并设置为STA(Station)模式。然后,我们断开任何已连接的WiFi网络,并进行延时等待。接下来,我们调用`WiFi.scanNetworks()`来扫描可连接的WiFi网络,并使用`WiFi.SSID()`、`WiFi.RSSI()`和`WiFi.encryptionType()`方法来获取网络的名称、信号强度和加密类型。如果找到了可连接的WiFi网络,我们使用`WiFi.begin()`方法来连接到选定的网络,并使用`WiFi.status()`检查连接状态。在连接成功之前,我们在循环中等待并打印"."。一旦连接成功,我们将打印"Connected to WiFi."。
请注意,你需要将`your_SSID`和`your_PASSWORD`替换为你要连接的WiFi网络的名称和密码。确保ESP32与选定的网络兼容,并且密码正确。
同样,要运行这个示例代码,你需要将ESP32连接到计算机,并通过串口监视器查看输出结果。