要在连接丢失后重新连接到 Wi-Fi,您可以使用 WiFi.reconnect() 尝试重新连接到之前连接的接入点:
WiFi.reconnect()
或者,您可以使用 WiFi.disconnect() WiFi.begin(ssid,password).
WiFi.disconnect();//断开连接
WiFi.begin(ssid, password);//重新连接
或者,您也可以尝试使用以下命令重新启动 ESP32 ESP.restart() 当连接丢失时。
您可以将类似于下面的代码段的内容添加到 loop() 定时时检查电路板是否已连接,并在失去连接时尝试重新连接。
unsigned long currentMillis = millis();
// 定时检查WIFI是否连接,如果无连接则重连
if ((WiFi.status() != WL_CONNECTED) && (currentMillis - previousMillis >=interval)) {
Serial.print(millis());
Serial.println("Reconnecting to WiFi...");
WiFi.disconnect();
WiFi.reconnect();
previousMillis = currentMillis;
}
完整示例:
#include二:WIFI事件自动连接// Replace with your network credentials (STATION) const char* ssid = "REPLACE_WITH_YOUR_SSID"; const char* password = "REPLACE_WITH_YOUR_PASSWORD"; unsigned long previousMillis = 0; unsigned long interval = 30000; void initWiFi() { WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.print("Connecting to WiFi .."); while (WiFi.status() != WL_CONNECTED) { Serial.print('.'); delay(1000); } Serial.println(WiFi.localIP()); } void setup() { Serial.begin(115200); initWiFi(); Serial.print("RRSI: "); Serial.println(WiFi.RSSI()); } void loop() { unsigned long currentMillis = millis(); // 定时重连 if ((WiFi.status() != WL_CONNECTED) && (currentMillis - previousMillis >=interval)) { Serial.print(millis()); Serial.println("Reconnecting to WiFi..."); WiFi.disconnect(); WiFi.reconnect(); previousMillis = currentMillis; } }
ESP32 能够处理不同的 Wi-Fi 事件。使用 Wi-Fi 事件,您无需经常检查 Wi-Fi 状态。当某个事件发生时,它会自动调用相应的处理函数。
SYSTEM_EVENT_STA_CONNECTED:ESP32 以站模式连接到接入点/热点(您的路由器);
SYSTEM_EVENT_STA_DISCONNECTED:ESP32 站与接入点断开连接。
转到下一部分以查看应用示例。
失去连接后重新连接到 Wi-Fi 网络(Wi-Fi 事件)
Wi-Fi 事件可用于检测连接丢失并在之后立即尝试重新连接(使用SYSTEM_EVENT_AP_STADISCONNECTED事件)。这是一个示例代码:
#include联系我们const char* ssid = "REPLACE_WITH_YOUR_SSID"; const char* password = "REPLACE_WITH_YOUR_PASSWORD"; //连接事件 void WiFiStationConnected(WiFiEvent_t event, WiFiEventInfo_t info){ Serial.println("Connected to AP successfully!"); } //获取IP事件 void WiFiGotIP(WiFiEvent_t event, WiFiEventInfo_t info){ Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } //断开连接事件 void WiFiStationDisconnected(WiFiEvent_t event, WiFiEventInfo_t info){ Serial.println("Disconnected from WiFi access point"); Serial.print("WiFi lost connection. Reason: "); Serial.println(info.disconnected.reason); Serial.println("Trying to Reconnect");
扫码或者点这里加群了解更多!
敲门板砖:‘齐护’
Created by qdprobot



