栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

EPS32实现WIFI自动重连的两种方法

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

EPS32实现WIFI自动重连的两种方法

一:定时检查连接

要在连接丢失后重新连接到 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 

// 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;
  }
}
二:WIFI事件自动连接

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/990005.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号