物聯網 WIFI 一鍵配置原理(smartconfig) ESP8266/QCA4004 參考
物聯網 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
接下來我們來分析一下原理
物聯網智慧單品路線:智慧硬體+APP+雲
APP將要配置上的路由的wifi使用者名稱、密碼進入智慧硬體,目前各個WIFI晶片廠家基本採用以下幾種方式
1)TI 的smartconfig
2)AP模式: APP 配置 手機連線到 智慧硬體(WIFI晶片 的AP),構建成一個區域網,當然該區域網是不能上網的,但是區域網內的各個裝置的通訊是OK
此時 該區域網內一般有三個裝置(WIFI晶片工作在AP模式 或者是AP+STATION模式)手機和智慧硬工作在STATION模式。
smartconfig
所謂的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)給裝置,直接給使用者提供免配置體驗(實際是後臺替你做了一鍵配置的流程)。