- 新增 wifi-connect 组件(AP 配网、DNS 劫持、Captive Portal) - 支持长按按键进入配网,网页配置路由器 SSID/密码 - 增加清除已保存 Wi-Fi 参数能力(API + 页面按钮) - 增加中文状态日志与中文注释,优化配网交互 - 补充组件文档:README、USER_GUIDE、QUICK_POSTER、BLOG
wifi-connect 组件说明
wifi-connect 是一个基于 ESP-IDF 的 Wi-Fi 配网组件,支持:
- 长按按键进入配网模式
- 启动 SoftAP + Captive Portal(网页配网)
- 手机连接热点后,通过网页扫描并选择路由器
- 保存 Wi-Fi 凭据到 NVS
- 下次开机自动重连
- 配网成功后自动关闭热点(可配置延迟)
面向最终用户的一页版操作说明见:USER_GUIDE.md
现场打印张贴版(四步卡)见:QUICK_POSTER.md
目录结构
wifi-connect.c:组件主实现(按键、APSTA、HTTP、DNS、状态机)include/wifi-connect.h:对外 APIKconfig.projbuild:组件配置项CMakeLists.txt:组件构建依赖
对外 API
头文件:include/wifi-connect.h
-
esp_err_t wifi_connect_init(void);- 初始化组件(NVS、Wi-Fi、事件、按键任务等)
- 尝试自动连接已保存网络
-
esp_err_t wifi_connect_start(void);- 启动配网(APSTA + HTTP + DNS)
-
esp_err_t wifi_connect_stop(void);- 停止配网(关闭热点与相关服务)
-
wifi_connect_status_t wifi_connect_get_status(void);- 获取当前状态:
idle / provisioning / connecting / connected / failed / timeout
- 获取当前状态:
-
esp_err_t wifi_connect_get_config(wifi_connect_config_t *config);- 读取已保存的 Wi-Fi 凭据
-
esp_err_t wifi_connect_clear_config(void);- 清除已保存的 Wi-Fi 凭据(SSID/密码)
快速使用
在 main/main.c:
#include "esp_check.h"
#include "wifi-connect.h"
void app_main(void)
{
ESP_ERROR_CHECK(wifi_connect_init());
}
运行后:
- 长按配置按键进入配网
- 手机连接
ESP32-xxxxxx热点 - 打开
http://192.168.4.1 - 选择 Wi-Fi 并输入密码提交
- 设备连接成功后自动关闭配网热点
如需清空历史凭据,可在配网页面点击“清除已保存”。
Kconfig 配置项
在 idf.py menuconfig 中:WiFi Connect 菜单
WIFI_CONNECT_BUTTON_GPIO:进入配网的按键 GPIOWIFI_CONNECT_BUTTON_ACTIVE_LEVEL:按键有效电平WIFI_CONNECT_DEBOUNCE_MS:按键去抖时间WIFI_CONNECT_LONG_PRESS_MS:长按触发时长WIFI_CONNECT_CONNECT_TIMEOUT_SEC:连接路由器超时WIFI_CONNECT_IDLE_TIMEOUT_SEC:配网页面空闲超时WIFI_CONNECT_MAX_SCAN_RESULTS:扫描网络最大数量WIFI_CONNECT_AP_MAX_CONNECTIONS:SoftAP 最大连接数WIFI_CONNECT_AP_GRACEFUL_STOP_SEC:联网成功后 AP 延迟关闭秒数
日志与状态说明(中文)
组件会输出统一中文状态日志,例如:
【状态】wifi-connect 初始化完成【状态】检测到按键长按:开始进入配网模式【状态】配网已启动:配网热点已开启,SSID=...【状态】开始连接路由器:收到配网请求,目标网络=...【状态】联网成功:已连接 ...,获取 IP=...【状态】配网已停止:热点已关闭,设备继续以 STA 模式运行
说明:ESP-IDF 驱动层(如 wifi:、esp_netif_lwip:)仍会输出英文日志,这是框架默认行为。
常见问题
1) 手机连上热点但不自动弹出页面
- 手动访问:
http://192.168.4.1 - 确认手机没有强制使用 HTTPS
- 查看串口是否有
配网已启动、DNS 劫持服务已启动日志
2) 提交后连接失败
- 检查密码是否正确
- 查看日志中的失败原因码(
连接失败,原因=...) - 检查路由器是否禁用了新设备接入
- 若曾保存过旧配置,可先在页面点击“清除已保存”后再重试
3) 成功后热点消失是否正常
- 正常。组件设计为连接成功后自动关闭配网热点
- 可通过
WIFI_CONNECT_AP_GRACEFUL_STOP_SEC调整关闭延时
依赖
由 CMakeLists.txt 声明:
esp_wifiesp_timeresp_eventesp_netifnvs_flashesp_http_serverlwipdriver
版本建议
- 推荐 ESP-IDF
v5.5.x - 当前项目验证环境:
esp-idf v5.5.2(ESP32-C3)