学习目的及目标
· 掌握SmartConfig原理和工作过程
· 掌握乐鑫ESP32的SmartConfig的程序设计
WIFI设备配网方法
· WiFi设备处于AP模式,配置工具连上这个AP,对这个AP发送联网信息,WiFi设备收到后,切换到STA模式,利用收到的信息联网。此方法优势是成功率基本在100%,缺点是配置过程复杂,做出的产品不易操作。
· Airkiss微信配网,玩玩可以,项目不考虑。
· SmartConfig模式,采用UDP广播模式(UDP接收IP地址是255.255.255.255)。WiFi设备先scan环境下AP,得到AP的相关信息,如工作的channel,然后配置WiFi芯片工作在刚才scan到的channel上去接收UDP包,如果没有接收到,继续配置工作在另外的channel上,如此循环,直到收到UDP包为止。随意此种办法的致命缺点是成功率只有70%,而且有些路由器不支持;优点显而易见,一键完成。
· UDP广播配网,类似SmartConfig,自己实现可以自由一些。
· 网页、硬件接口等配网方式,不想说他。
SmartConfig特点
SmartConfig又名快连,当前设备在没有和其他设备建立任何实际性通信链接的状态下,一键配置该设备接入WIFI。
SmartConfig实际应用场景
现状:当手机端接入路由器的WIFI,未联网设备没有任何实质性通信链接(信息孤立)。
目的:如果未联网设备也想接入这个路由器的WIFI。
分析:肯定需要有人告诉未联网设备,路由器的WIFI的账号(ssid)和密码(password)。
手段:目前我们只有手机端的资源可以利用,所以只能手机端告诉设备未联网设备。
未联网设备在没有任何链接的情况下,手机端是如何告知未联网设备信息,这个方法就是SmartConfig。流程如下图所示:
软件设计
ESP32的SmartConfig主逻辑
ESP32的SmartConfig详细过程逻辑
ESP32的SmartConfig接口介绍
· SmartConfig配置类型设置函数:esp_smartconfig_set_type();
· SmartConfig开始一键配置函数esp_smartconfig_start();
· SmartConfig停止一键配置函数esp_smartconfig_stop();
更多更详细接口请参考官方指南。
ESP32的SmartConfig总结
初始化wifi配置后,程序会根据WIFI的实时状态,在回调函数中给出状态返回,所以只需要在回调中进行相关操作,STA开始事件触发SC开始进行一键配置,在SC的回调中处理SC配置过程的事件。
SmartConfig任务编写
配置工具设置->注册smartconfig回调函数->等待回调事件
SmartConfig的回调函数解析
WiFi连接的回调函数解析
效果展示
SmartConfig总结
· SC工作模式也是初始化+回调的状态机结构,逻辑清晰简单,方便学习和使用。
· Wifi回调和SC回调相互协调工作,保证产品顺利配网成功。
· 配网工具有很多,我这里(IOS)测试使用两个,安卓使用后者。并且官方有源码。
· 此处没有将配网信息保存,产品中要保存,下次就不用再配了,如果配错了,可以加按键操作清楚配置信息,官方已经把这个功能做好了,自己怼怼。
· 源码地址:https://github.com/xiaolongba/wireless-tech
开源地址:https://github.com/HX-IoT/