物联网 WIFI 一键配置原理(smartconfig) ESP8266/QCA4004
嵌入式爱好者(小子图)
· 2015-09-05 11:07
自从物联网问世以来,如何使得物 能够联网有了很多的方式,目前运用非常广的WIFI,今天就总结下自这个方面,也对于有需要的盆友也希望有抛砖引玉之效果。
来看个知乎上的提问,很有意思!
问题:
买了BroadLink的智能插座,发现有一个很神奇的一键配置功能。简单的说就是:当智能插座还没有连上WiFi的时候,此时通过手机App可以将WiFi的SSID及密码一键配置到智能插座上去。
知乎有人回答,看到比较好的解答是:
解析一键配置,其大体工作原理如下:
1.
设备进入初始化状态,开始收听附近的 WiFi 数据包。
2.
手机/平板设置 WiFi 名字和密码后,发送 UDP 广播包。
3.
设备通过 UDP 包(长度)获取配置信息,切换网络模式,连接上家里 WiFi,配置完成。
Broadlink最新的插座SP2 和RM2,e-Air等用的是Marvell
Easy-Connect方案
提到的 Broadlink,第一代智能插座产品 Sp1 使用的是 TI 的方案:430 单片机+
CC3000 WiFi 芯片(具体芯片 MSP430F5309 +CC3000MOD)。
到了第二代插座产品 Sp2 使用的是 Marvell 的方案:Cortex-M3 单片机 + 低功耗 Wifi 芯片(具体芯片 88MC200
+ 88W8782)。
接下来我们来分析一下原理
物联网智能单品路线:
智能硬件+APP+云
APP将要配置上的路由的wifi用户名、密码进入智能硬件,目前各个WIFI芯片厂家基本采用以下几种方式
1)TI 的smartconfig
2)AP模式: APP 配置 手机连接到 智能硬件(WIFI芯片 的AP),构建成一个局域网,当然该局域网是不能上网的,但是局域网内的各个设备的通信是OK
此时 该局域网内一般有三个设备(WIFI芯片工作在AP模式 或者是AP+STATION模式)手机和智能硬工作在STATION模式。
smartconfig也就是所谓的一键配置,速度比AP模式快,为什么呢?请看下面分解。
所谓的smartconfig就是:
l
手机APP端发送包含WIFI 用户名 WIFI密码的 UDP广播包或者组播包;
l
智能终端的WIFI芯片可以接收到该UDP包,只要知道UDP的组织形式,就可以通过接收到的UDP包解密 出WIFI 用户名、密码;
l
然后智能硬件配置到指定的WIFI AP 上。
AP模式比较不好的就是配置时间比smartconfig要长,手机连接的WIFI接入点会变化,如果配置不成功,手机就无法上网,需要在手动配置WIFI,手机才能上网。
ESP8266 芯片:SDK提供两种连接方式,
1)smartconfig
采用UDP广播模式(UDP接收IP地址是255.255.255.255)esp8266先scan 下AP ,得到AP的相关信息,如工作的channel,然后配置wifi芯片工作在刚才scan到的channel上去接收UDP包,如果没有接收到,继续配置ESP8266工作在另外的channel上,如此循环,直到收到UDP包为止,为什么要提前进行SCAN 下WIFI AP呢?就是为了提高配置效率。假设当前网络中只有两个AP,一个AP工作在CHANEL1,另外个
ap工作在channel13,我们现在需要配置智能硬件连接到AP2 ,就是channel13上,如果不提前scan就需要从1--13扫描浪费时间。就是需要从channel1-chane2---...channnel13一直扫描了,如果扫描了AP,芯片马上从AP CHANNNEL1 到channel13加快获取到UDP包;
2) AP接入
AP 是 (Wireless) AccessPoint 的缩写,即 (无线) 访问接入点。简单来讲就像是无线路由器一样,设备打开后进入 AP 模式,在手机的网络列表里面,可以搜索到类似 TPLINK_XXX 的名字(SSID)。
QCA4004 跟ESP8266不同,它不进行行前期AP扫描,直接从信道1-2--。。13 循环配置区接收UDP包,并且UDP包采用组播。
PS:
这些看似不同的方案实质上思路是一致的,如刚才提到的 Broadlink,第一代智能插座产品 Sp1 使用的是 TI 的方案:430单片机+ CC3000 WiFi 芯片(具体芯片MSP430F5309 + CC3000MOD)。
到了第二代插座产品 Sp2 使用的是 Marvell 的方案:Cortex-M3 单片机 + 低功耗 Wifi 芯片(具体芯片88MC200 + 88W8782)。
至于 Broadlink 要换方案的原因,抛开价格,功耗因素,WiFi 兼容性这块也值得去考虑。对比这 2 个方案还会发现 Marvell 的芯片兼容性要胜出一些(Marvell 的 88W8782 支持 IEEE 802.11 a/b/g/n,TI 的 CC3000 只支持 IEEE802.11 b/g)。
随着无线路由器双频 WiFi(可以有两个WiFi 名字,其中一个 5G,一个 2.4G)的越来越多,也许下一次智能硬件公司更换 WiFi 方案时,设备支持 5G 也会是个选择因素了(换个支持 5G 的芯片方案)。
再往下畅想,对于手机厂商来讲,可以进一步的优化基于一键配置的连接 WiFi 方式:借助于手机共享自身连入的 wifi(SSID)给设备,直接给用户提供免配置体验(实际是后台替你做了一键配置的流程)。