You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ESP32网络断开时如何基于事件实现WiFi自动重连?

ESP32 基于事件的WiFi自动重连实现

连接性处理是ESP32固件开发中的重要环节,基于事件的重连方案稳定性表现良好。网上流传的一段常用示例代码无法直接运行,以下是修复后的可运行版本:

#include <WiFi.h>

const char* ssid = "你的WiFi名称";
const char* password = "你的WiFi密码";

void WiFiStationConnected(WiFiEvent_t event, WiFiEventInfo_t info){
  Serial.println("成功接入WiFi热点!");
}

void WiFiGotIP(WiFiEvent_t event, WiFiEventInfo_t info){
  Serial.println("WiFi已连接");
  Serial.println("IP地址:");
  Serial.println(WiFi.localIP());
}

void WiFiStationDisconnected(WiFiEvent_t event, WiFiEventInfo_t info){
  Serial.println("已断开与WiFi热点的连接");
  Serial.print("断开原因:");
  Serial.println(info.disconnected.reason);
  Serial.println("正在尝试重新连接...");
  WiFi.begin(ssid, password);
}

void setup(){
  Serial.begin(115200);

  // 清除旧的WiFi配置
  WiFi.disconnect(true);

  delay(1000);

  // 注册WiFi事件回调(适配新版Arduino-ESP32框架)
  WiFi.onEvent(WiFiStationConnected, ARDUINO_EVENT_WIFI_STA_CONNECTED);
  WiFi.onEvent(WiFiGotIP, ARDUINO_EVENT_WIFI_STA_GOT_IP);
  WiFi.onEvent(WiFiStationDisconnected, ARDUINO_EVENT_WIFI_STA_DISCONNECTED);
  
  WiFi.begin(ssid, password);
    
  Serial.println();
  Serial.println();
  Serial.println("等待WiFi连接... ");
}

void loop(){
  delay(1000);
}

关键修复点

  • 事件类型适配:新版Arduino-ESP32框架已将原SYSTEM_EVENT_*系列事件宏替换为ARDUINO_EVENT_WIFI_STA_*,这是原代码无法运行的核心原因
  • 完善调试信息:在断开事件中添加了具体断开原因的打印,便于排查连接问题
  • 保留配置清除逻辑:清除旧WiFi配置可避免残留参数影响新连接流程

内容的提问来源于stack exchange,提问作者Tashfi Nowroz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 23:48:22