大家好,我是雜燴君。
當(dāng)下,很多嵌入式設(shè)備都需要通過(guò)配網(wǎng)來(lái)與網(wǎng)絡(luò)連接,從而實(shí)現(xiàn)遠(yuǎn)程控制、數(shù)據(jù)傳輸等功能。
下面,我們就來(lái)深入了解一下嵌入式設(shè)備配網(wǎng)的相關(guān)知識(shí)。
一、熱門配網(wǎng)方案解析
配網(wǎng)方式有多種,常見的有:
1、smartconfig
smartconfig配網(wǎng)的原理是利用手機(jī)等終端設(shè)備將網(wǎng)絡(luò)信息(SSID 和密碼等信息)通過(guò)廣播的方式發(fā)送出去,嵌入式設(shè)備通過(guò)監(jiān)聽周圍的無(wú)線信號(hào),解析出網(wǎng)絡(luò)信息,從而實(shí)現(xiàn)配網(wǎng)。
smartconfig配網(wǎng)設(shè)備創(chuàng)建熱點(diǎn),設(shè)備直接從周圍的無(wú)線環(huán)境中獲取網(wǎng)絡(luò)信息,操作更加簡(jiǎn)便。
- ? 優(yōu)點(diǎn):操作簡(jiǎn)單,用戶體驗(yàn)好;適用于各種復(fù)雜的網(wǎng)絡(luò)環(huán)境。
- ? 缺點(diǎn):對(duì)設(shè)備的無(wú)線接收能力要求較高,可能存在信息解析失敗的情況。
2、SoftAP
AP(Access Point)模式配網(wǎng),也稱為熱點(diǎn)模式配網(wǎng)。其原理是嵌入式設(shè)備自身創(chuàng)建一個(gè)無(wú)線熱點(diǎn),用戶通過(guò)手機(jī)或其他終端設(shè)備連接到這個(gè)熱點(diǎn),然后在終端設(shè)備上輸入目標(biāo)網(wǎng)絡(luò)(如家庭 WiFi)的信息,設(shè)備接收到這些信息后,就會(huì)嘗試連接到目標(biāo)網(wǎng)絡(luò)。
- ? 優(yōu)點(diǎn):簡(jiǎn)單直接,不需要額外的網(wǎng)絡(luò)環(huán)境支持。
- ? 缺點(diǎn):每次配網(wǎng)都需要設(shè)備進(jìn)入 AP 模式,操作相對(duì)繁瑣;設(shè)備創(chuàng)建的熱點(diǎn)覆蓋范圍有限。
- ? 適用場(chǎng)景:適用于小型、簡(jiǎn)單的嵌入式設(shè)備,如智能插座、智能燈泡等。
3、Combo配網(wǎng)模式
Combo 配網(wǎng)模式融合了多種配網(wǎng)方式的優(yōu)勢(shì),其中 WiFi、藍(lán)牙配網(wǎng)方式憑借其獨(dú)特的組合,為用戶帶來(lái)了高效且穩(wěn)定的配網(wǎng)體驗(yàn)。其核心在于設(shè)備同時(shí)搭載 WiFi 及藍(lán)牙模塊,APP 借助藍(lán)牙將設(shè)備所需連接的路由器 SSID 及密碼發(fā)送給設(shè)備。
- ? 優(yōu)點(diǎn):藍(lán)牙技術(shù)在近距離通信上具有穩(wěn)定性高、功耗低的特點(diǎn),能有效避免無(wú)線信號(hào)干擾,確保網(wǎng)絡(luò)信息準(zhǔn)確傳輸;而 WiFi 則負(fù)責(zé)設(shè)備后續(xù)的高速網(wǎng)絡(luò)連接,保障數(shù)據(jù)傳輸效率。兩者結(jié)合,不僅提升了配網(wǎng)成功率,還降低了用戶手動(dòng)輸入信息的錯(cuò)誤率,簡(jiǎn)化了操作步驟。
- ? 缺點(diǎn):設(shè)備需集成兩種通信模塊,增加了硬件成本和設(shè)備功耗,同時(shí)也對(duì)軟件的兼容性和穩(wěn)定性提出了更高要求。
- ? 適用場(chǎng)景:適用于對(duì)配網(wǎng)穩(wěn)定性和用戶體驗(yàn)要求較高的中高端嵌入式設(shè)備,智能家庭中樞、智能穿戴設(shè)備等。
4、其它
NFC 配網(wǎng):利用 NFC(Near Field Communication)技術(shù),通過(guò)近距離接觸來(lái)傳輸網(wǎng)絡(luò)信息。用戶只需將支持 NFC 的手機(jī)靠近嵌入式設(shè)備,手機(jī)就會(huì)將網(wǎng)絡(luò)信息傳輸給設(shè)備,實(shí)現(xiàn)快速配網(wǎng)。例如,一些智能門鎖就支持 NFC 配網(wǎng),用戶在安裝門鎖時(shí),通過(guò)手機(jī)的 NFC 功能即可輕松完成配網(wǎng)。
聲波識(shí)別配網(wǎng):將網(wǎng)絡(luò)信息編碼成特定頻率的聲波,通過(guò)手機(jī)等設(shè)備播放出來(lái),嵌入式設(shè)備通過(guò)麥克風(fēng)接收聲波并解析出網(wǎng)絡(luò)信息。這種方式在一些對(duì)無(wú)線信號(hào)敏感的環(huán)境中具有一定的優(yōu)勢(shì),如醫(yī)院、工廠等。
二、WiFi相關(guān)知識(shí)
WiFi 的起源可以追溯到上世紀(jì) 90 年代,它是基于 IEEE 802.11 標(biāo)準(zhǔn)的無(wú)線局域網(wǎng)技術(shù)。
1、802.11 協(xié)議標(biāo)準(zhǔn)
802.11 協(xié)議族包含了多個(gè)成員,如 802.11a、802.11b、802.11g、802.11n、802.11ac、802.11ax(WiFi 6)等。
不同后綴的標(biāo)準(zhǔn)在工作頻段和傳輸速率上存在差異。例如,802.11a 工作在 5G 頻段,傳輸速率最高可達(dá) 54Mbps;802.11b 工作在 2.4G 頻段,傳輸速率最高可達(dá) 11Mbps。
802.11 協(xié)議族部分成員關(guān)系:
2、WiFi 相關(guān)術(shù)語(yǔ)
WiFi 相關(guān)術(shù)語(yǔ)很多,相互關(guān)聯(lián)構(gòu)成完整體系。
LAN(Local Area Network):局域網(wǎng),是在有限范圍內(nèi)(如一個(gè)辦公室、一棟樓)建立的計(jì)算機(jī)網(wǎng)絡(luò),用于實(shí)現(xiàn)設(shè)備之間的通信和資源共享。?
WAN(Wide Area Network):廣域網(wǎng),覆蓋范圍較大,通常用于連接不同的局域網(wǎng),實(shí)現(xiàn)更大范圍的網(wǎng)絡(luò)通信。?
Band(頻段):指 WiFi 工作的頻率范圍,常見的有 2.4G 頻段和 5G 頻段。?
Channel(信道):在頻段內(nèi)劃分的不同頻率范圍,用于無(wú)線信號(hào)的傳輸。?
Channel Width(信道寬度):指信道占用的頻率帶寬,不同的 802.11 標(biāo)準(zhǔn)支持不同的信道寬度,如 20MHz、40MHz、80MHz 等。?
無(wú)線 AP(Access Point):無(wú)線接入點(diǎn),是一種無(wú)線網(wǎng)絡(luò)設(shè)備,用于將無(wú)線客戶端連接到有線網(wǎng)絡(luò),起到橋梁的作用。?
Station(STA):無(wú)線客戶端,如手機(jī)、筆記本電腦等設(shè)備,通過(guò)無(wú)線方式連接到無(wú)線 AP。?
SSID(Service Set Identifier):服務(wù)集標(biāo)識(shí)符,即無(wú)線網(wǎng)絡(luò)的名稱,用戶通過(guò)搜索 SSID 來(lái)找到并連接到相應(yīng)的無(wú)線網(wǎng)絡(luò)。?
BSSID(Basic Service Set Identifier):基本服務(wù)集標(biāo)識(shí)符,是無(wú)線 AP 的 MAC 地址,用于唯一標(biāo)識(shí)一個(gè)無(wú)線 AP。?
BSS(Basic Service Set):基本服務(wù)集,由一個(gè)無(wú)線 AP 和與其連接的所有無(wú)線客戶端組成的網(wǎng)絡(luò)。?
MAC(Media Access Control):媒體訪問(wèn)控制,是網(wǎng)絡(luò)設(shè)備的物理地址,用于在數(shù)據(jù)鏈路層進(jìn)行設(shè)備識(shí)別。
3、WiFi 信道與頻段
三、配網(wǎng)實(shí)踐
SmartLink是一個(gè)在Linux下實(shí)現(xiàn)的smartconfig。手機(jī)發(fā)送UDP廣播報(bào)文,待配網(wǎng)設(shè)備掃描所有的可用無(wú)線信道,找到發(fā)送smartConfig的報(bào)文,并鎖定在這一信道上開始接受數(shù)據(jù)。
倉(cāng)庫(kù)鏈接:
https://github.com/jolin90/smartconfig
1、相關(guān)知識(shí)補(bǔ)充
(1)網(wǎng)卡工作模式
- ? 廣播模式:物理地址(MAC)是0Xffffff的幀為廣播幀,工作在廣播模式的網(wǎng)卡接收廣播幀。? 多播模式:如果將網(wǎng)卡設(shè)置為多播模式,它可以接收所有的多播傳送幀,而不論他是不是組內(nèi)成員。? 直接模式:只接收目的地址是自己MAC地址的幀。? 混雜模式:工作在混雜模式下的網(wǎng)卡接收所有流經(jīng)網(wǎng)卡的幀。
查看、設(shè)置、取消混雜模式命令如:
ifconfig wlan0?#查看wlan0是否為混雜模式
ifconfig wlan0 promisc?#設(shè)置wlan0為混雜模式
ifconfig wlan0 -promisc?#取消wlan0混雜模式
(2)通信方式
通信方式分類:
- ? 單播:?jiǎn)闻_(tái)主機(jī)與單臺(tái)主機(jī)之間的通信;? 廣播:?jiǎn)闻_(tái)主機(jī)與網(wǎng)絡(luò)中所有主機(jī)的通信;? 組播:?jiǎn)闻_(tái)主機(jī)與選定的一組主機(jī)的通信;
IP 網(wǎng)絡(luò)的組播一般通過(guò)組播 IP 地址來(lái)實(shí)現(xiàn),組播 IP 地址就是 D 類 IP 地址,即 224.0.0.0 至 239.255.255.255 之間的IP地址。
2、SmartLink使用
下載得到:
我們使用arm板子來(lái)做實(shí)驗(yàn)。首先,需要交叉編譯,執(zhí)行命令:
make CC=arm-linux-gnueabihf-gcc
把編譯生成的smartlink可執(zhí)行程序傳到板子里。運(yùn)行時(shí)需要跟上接口的名稱。如:
./smartlink wlan0
然后執(zhí)行如下命令重新編譯:
make clean
make
生成的mcast_app可執(zhí)行程序在pc上運(yùn)行,模擬手機(jī)APP發(fā)送。運(yùn)行時(shí)需要傳入WiFi名稱及密碼。如:
./mcast_app Tenda_552F18 0987654321
測(cè)試時(shí)需要先運(yùn)行mcast_app,再運(yùn)行smartlink。smartlink收到WiFi名稱及密碼時(shí)會(huì)打印出來(lái)。
運(yùn)行結(jié)果如:
這里,使用mcast_app來(lái)模擬手機(jī)APP。smartlink也提供了一個(gè)簡(jiǎn)易的安卓手機(jī)APP,也可以使用APP進(jìn)行測(cè)試:
3、SmartLink組播包協(xié)議分析
上面演示了SmartLink的使用,下面簡(jiǎn)單介紹一些SmartLink的組播包協(xié)議。
APP發(fā)送特定協(xié)議的組播包數(shù)據(jù)給設(shè)備,設(shè)備收到后進(jìn)行解析獲取路由器SSID及密碼。其協(xié)議如:
每個(gè)數(shù)據(jù)包6個(gè)字節(jié),
- ? 第1~3字節(jié):組播包地址,為固定值0x01 0x00 0x5e。? 第4字節(jié):數(shù)據(jù)包序號(hào)。? 第5字節(jié):指定數(shù)據(jù)。? 第6個(gè)字節(jié):指定數(shù)據(jù)。
每次傳輸若干字節(jié)。舉例說(shuō)明:
SSID為"TP-LINK_hys" ,PSW為"12345678",發(fā)送組播地址如下:
0x01 0x00 0x5e 0x00 ?0x48 ?0x35
0x01 0x00 0x5e 0x01 ?0x68 ?0x2b
0x01 0x00 0x5e 0x02 ?0x5c ?0x31
0x01 0x00 0x5e 0x03 ?0x0b ?0x08
0x01 0x00 0x5e 0x04 ?'T' ?'1'
0x01 0x00 0x5e 0x05 ?'P' ?'2'
0x01 0x00 0x5e 0x06 ?'-' ?'3'
0x01 0x00 0x5e 0x07 ?'L' ?'4'
0x01 0x00 0x5e 0x08 ?'I' ?'5'
0x01 0x00 0x5e 0x09 ?'N' ?'6'
0x01 0x00 0x5e 0x0a ?'K' ?'7'
0x01 0x00 0x5e 0x0b ?'_' ?'8'
0x01 0x00 0x5e 0x0c ?'h' ?0x00
0x01 0x00 0x5e 0x0d ?'y' ?0x00
0x01 0x00 0x5e 0x0e ?'s' ?0x00
0x01 0x00 0x5e 0x40 ?0x1c ?0x03
其中:
(1)第1~3包數(shù)據(jù),為特征碼包,后三個(gè)字節(jié)由組播IP映射為為組播MAC。取組播IP的后23位作為MAC,映射圖如:
圖片來(lái)源:jasonj33的博客
組播地址相關(guān)介紹可閱讀博文:https://blog.csdn.net/wjz110201/article/details/114628203
這里,手機(jī)APP設(shè)置的組播IP固定如:
#define?IPADDR_KEY0?"224.0.72.53"? ?/*key0:01:00:5e:00:48:35 */
#define?IPADDR_KEY1?"224.1.104.43"??/*key1:01:00:5e:01:68:2b */
#define?IPADDR_KEY2?"224.2.92.49"? ?/*key2:01:00:5e:02:5c:31 */
組播IP映射為組播MAXC,得到:
取后23位即為0.72.53對(duì)應(yīng)16進(jìn)制為00:48:35
取后23位即為1.104.43對(duì)應(yīng)16進(jìn)制為01:68:2b
取后23位即為2.92.49對(duì)應(yīng)16進(jìn)制為02:5c:31?
(2)第4包數(shù)據(jù)放的是SSID及PSW的長(zhǎng)度。
(3)第5~15包數(shù)據(jù)放的則是SSID及PSW。
(4)第16包數(shù)據(jù)為校驗(yàn)碼,采用連續(xù)異或校驗(yàn)的方式:
Crc=Crc^0x01^(byte)0x5e^0x40