esp8266 airkiss 配网

💡 原文中文,约2400字,阅读约需6分钟。
📝

内容提要

本文介绍了使用Arduino进行WiFi智能配置的代码,核心功能包括初始化WiFi、存储和加载配网信息。通过smartConfig,设备可自动连接指定WiFi并保存SSID和密码,代码还包含重启机制以防连接失败。

🔎

延伸解读

配网信息持久化:EEPROM 存储与标志位设计

代码使用结构体 config_type 保存 SSID、密码和 magic 标志,并通过 EEPROM 读写实现掉电保存。magic 设为 0xAA 表示已配网,加载时若标志不匹配则触发 SmartConfig。这种设计让设备重启后能自动恢复连接,无需重复配网。注意 EEPROM 写入前需调用 EEPROM.begin(512),且结构体大小不能超过分配空间。

SmartConfig 流程与超时重启机制

doSmartconfig 函数先停止可能存在的 SmartConfig,再启动并循环等待 smartConfigDone。循环中每 300ms 检查一次,若成功则复制 SSID 和密码并保存。同时用 cnt 计数,达到 600 次(约 3 分钟)仍未成功则调用 delayRestart(0) 立即重启。这避免了设备因配网失败而永久卡死,但重启后若仍无有效配置,会再次进入配网模式。

WiFi 初始化与主机名设置

initWiFi 函数根据存储的 SSID 和密码连接路由器,并设置主机名格式为 HOST_NAME_XXXXXX,其中后六位取自 MAC 地址,便于在路由器端识别设备。连接过程中会断开现有连接、切换 STA 模式并阻塞等待直到连接成功。若路由器不可用,设备将一直停留在 while 循环中,实际使用时需考虑增加超时处理。

❓

Q&A

如何使用Arduino进行WiFi智能配置?

使用Arduino进行WiFi智能配置的核心代码包括初始化WiFi和存储配网信息,通过smartConfig,设备可以自动连接指定的WiFi并保存SSID和密码。

什么是smartConfig,它的作用是什么?

smartConfig是一种技术,允许设备自动连接到指定的WiFi网络并保存SSID和密码,简化了WiFi配置过程。

代码中如何处理连接失败的情况?

代码中包含重启机制,如果在600次尝试后仍未连接成功,将调用delayRestart函数重启设备。

如何保存和加载配网信息?

配网信息通过EEPROM存储,使用saveConfig函数保存信息,loadConfig函数加载信息并检查配网标志。

初始化WiFi时,设备如何连接到路由器?

初始化WiFi时,设备会根据存储的SSID和密码调用WiFi.begin函数连接到路由器网络。

代码中定义的结构体有什么作用?

代码中定义的结构体用于存储配网信息,包括SSID、密码和配网标志,以便在设备重启后恢复连接。

🏷️

标签

➡️

继续阅读