• 正文
    • 一、熱門配網(wǎng)方案解析
    • 二、WiFi相關(guān)知識
    • 三、配網(wǎng)實踐
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

嵌入式設(shè)備配網(wǎng):從基礎(chǔ)到實戰(zhàn)!

16小時前
529
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

大家好,我是雜燴君。

當(dāng)下,很多嵌入式設(shè)備都需要通過配網(wǎng)來與網(wǎng)絡(luò)連接,從而實現(xiàn)遠(yuǎn)程控制數(shù)據(jù)傳輸等功能。

下面,我們就來深入了解一下嵌入式設(shè)備配網(wǎng)的相關(guān)知識。

一、熱門配網(wǎng)方案解析

配網(wǎng)方式有多種,常見的有:

1、smartconfig

smartconfig配網(wǎng)的原理是利用手機(jī)等終端設(shè)備將網(wǎng)絡(luò)信息(SSID 和密碼等信息)通過廣播的方式發(fā)送出去,嵌入式設(shè)備通過監(jiān)聽周圍的無線信號,解析出網(wǎng)絡(luò)信息,從而實現(xiàn)配網(wǎng)。

smartconfig配網(wǎng)設(shè)備創(chuàng)建熱點,設(shè)備直接從周圍的無線環(huán)境中獲取網(wǎng)絡(luò)信息,操作更加簡便。

    ? 優(yōu)點:操作簡單,用戶體驗好;適用于各種復(fù)雜的網(wǎng)絡(luò)環(huán)境。
    ? 缺點:對設(shè)備的無線接收能力要求較高,可能存在信息解析失敗的情況。

2、SoftAP

AP(Access Point)模式配網(wǎng),也稱為熱點模式配網(wǎng)。其原理是嵌入式設(shè)備自身創(chuàng)建一個無線熱點,用戶通過手機(jī)或其他終端設(shè)備連接到這個熱點,然后在終端設(shè)備上輸入目標(biāo)網(wǎng)絡(luò)(如家庭 WiFi)的信息,設(shè)備接收到這些信息后,就會嘗試連接到目標(biāo)網(wǎng)絡(luò)。

    ? 優(yōu)點:簡單直接,不需要額外的網(wǎng)絡(luò)環(huán)境支持。
    ? 缺點:每次配網(wǎng)都需要設(shè)備進(jìn)入 AP 模式,操作相對繁瑣;設(shè)備創(chuàng)建的熱點覆蓋范圍有限。
    ? 適用場景:適用于小型、簡單的嵌入式設(shè)備,如智能插座、智能燈泡等。

3、Combo配網(wǎng)模式

Combo 配網(wǎng)模式融合了多種配網(wǎng)方式的優(yōu)勢,其中 WiFi、藍(lán)牙配網(wǎng)方式憑借其獨特的組合,為用戶帶來了高效且穩(wěn)定的配網(wǎng)體驗。其核心在于設(shè)備同時搭載 WiFi 及藍(lán)牙模塊,APP 借助藍(lán)牙將設(shè)備所需連接的路由器 SSID 及密碼發(fā)送給設(shè)備。

    ? 優(yōu)點:藍(lán)牙技術(shù)在近距離通信上具有穩(wěn)定性高、功耗低的特點,能有效避免無線信號干擾,確保網(wǎng)絡(luò)信息準(zhǔn)確傳輸;而 WiFi 則負(fù)責(zé)設(shè)備后續(xù)的高速網(wǎng)絡(luò)連接,保障數(shù)據(jù)傳輸效率。兩者結(jié)合,不僅提升了配網(wǎng)成功率,還降低了用戶手動輸入信息的錯誤率,簡化了操作步驟。
    ? 缺點:設(shè)備需集成兩種通信模塊,增加了硬件成本和設(shè)備功耗,同時也對軟件的兼容性和穩(wěn)定性提出了更高要求。
    ? 適用場景:適用于對配網(wǎng)穩(wěn)定性和用戶體驗要求較高的中高端嵌入式設(shè)備,智能家庭中樞、智能穿戴設(shè)備等。

4、其它

NFC 配網(wǎng):利用 NFC(Near Field Communication)技術(shù),通過近距離接觸來傳輸網(wǎng)絡(luò)信息。用戶只需將支持 NFC 的手機(jī)靠近嵌入式設(shè)備,手機(jī)就會將網(wǎng)絡(luò)信息傳輸給設(shè)備,實現(xiàn)快速配網(wǎng)。例如,一些智能門鎖就支持 NFC 配網(wǎng),用戶在安裝門鎖時,通過手機(jī)的 NFC 功能即可輕松完成配網(wǎng)。

聲波識別配網(wǎng):將網(wǎng)絡(luò)信息編碼成特定頻率的聲波,通過手機(jī)等設(shè)備播放出來,嵌入式設(shè)備通過麥克風(fēng)接收聲波并解析出網(wǎng)絡(luò)信息。這種方式在一些對無線信號敏感的環(huán)境中具有一定的優(yōu)勢,如醫(yī)院、工廠等。

二、WiFi相關(guān)知識

WiFi 的起源可以追溯到上世紀(jì) 90 年代,它是基于 IEEE 802.11 標(biāo)準(zhǔn)的無線局域網(wǎng)技術(shù)。

1、802.11 協(xié)議標(biāo)準(zhǔn)

802.11 協(xié)議族包含了多個成員,如 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ù)語

WiFi 相關(guān)術(shù)語很多,相互關(guān)聯(lián)構(gòu)成完整體系。

LAN(Local Area Network):局域網(wǎng),是在有限范圍內(nèi)(如一個辦公室、一棟樓)建立的計算機(jī)網(wǎng)絡(luò),用于實現(xiàn)設(shè)備之間的通信和資源共享。?

WAN(Wide Area Network)廣域網(wǎng),覆蓋范圍較大,通常用于連接不同的局域網(wǎng),實現(xiàn)更大范圍的網(wǎng)絡(luò)通信。?

Band(頻段):指 WiFi 工作的頻率范圍,常見的有 2.4G 頻段和 5G 頻段。?

Channel(信道):在頻段內(nèi)劃分的不同頻率范圍,用于無線信號的傳輸。?

Channel Width(信道寬度):指信道占用的頻率帶寬,不同的 802.11 標(biāo)準(zhǔn)支持不同的信道寬度,如 20MHz、40MHz、80MHz 等。?

無線 AP(Access Point)無線接入點,是一種無線網(wǎng)絡(luò)設(shè)備,用于將無線客戶端連接到有線網(wǎng)絡(luò),起到橋梁的作用。?

Station(STA):無線客戶端,如手機(jī)、筆記本電腦等設(shè)備,通過無線方式連接到無線 AP。?

SSID(Service Set Identifier):服務(wù)集標(biāo)識符,即無線網(wǎng)絡(luò)的名稱,用戶通過搜索 SSID 來找到并連接到相應(yīng)的無線網(wǎng)絡(luò)。?

BSSID(Basic Service Set Identifier):基本服務(wù)集標(biāo)識符,是無線 AP 的 MAC 地址,用于唯一標(biāo)識一個無線 AP。?

BSS(Basic Service Set):基本服務(wù)集,由一個無線 AP 和與其連接的所有無線客戶端組成的網(wǎng)絡(luò)。?

MAC(Media Access Control):媒體訪問控制,是網(wǎng)絡(luò)設(shè)備的物理地址,用于在數(shù)據(jù)鏈路層進(jìn)行設(shè)備識別。

3、WiFi 信道與頻段

三、配網(wǎng)實踐

SmartLink是一個在Linux下實現(xiàn)的smartconfig。手機(jī)發(fā)送UDP廣播報文,待配網(wǎng)設(shè)備掃描所有的可用無線信道,找到發(fā)送smartConfig的報文,并鎖定在這一信道上開始接受數(shù)據(jù)。

倉庫鏈接:

https://github.com/jolin90/smartconfig

1、相關(guān)知識補(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)通信方式

通信方式分類:

    ? 單播:單臺主機(jī)與單臺主機(jī)之間的通信;? 廣播:單臺主機(jī)與網(wǎng)絡(luò)中所有主機(jī)的通信;? 組播:單臺主機(jī)與選定的一組主機(jī)的通信;

IP 網(wǎng)絡(luò)的組播一般通過組播 IP 地址來實現(xiàn),組播 IP 地址就是 D 類 IP 地址,即 224.0.0.0 至 239.255.255.255 之間的IP地址。

2、SmartLink使用

下載得到:

我們使用arm板子來做實驗。首先,需要交叉編譯,執(zhí)行命令:

make CC=arm-linux-gnueabihf-gcc

把編譯生成的smartlink可執(zhí)行程序傳到板子里。運(yùn)行時需要跟上接口的名稱。如:

./smartlink wlan0

然后執(zhí)行如下命令重新編譯:

make clean
make

生成的mcast_app可執(zhí)行程序在pc上運(yùn)行,模擬手機(jī)APP發(fā)送。運(yùn)行時需要傳入WiFi名稱及密碼。如:

./mcast_app Tenda_552F18 0987654321

測試時需要先運(yùn)行mcast_app,再運(yùn)行smartlink。smartlink收到WiFi名稱及密碼時會打印出來。

運(yùn)行結(jié)果如:

這里,使用mcast_app來模擬手機(jī)APP。smartlink也提供了一個簡易的安卓手機(jī)APP,也可以使用APP進(jìn)行測試:

3、SmartLink組播包協(xié)議分析

上面演示了SmartLink的使用,下面簡單介紹一些SmartLink的組播包協(xié)議。

APP發(fā)送特定協(xié)議的組播包數(shù)據(jù)給設(shè)備,設(shè)備收到后進(jìn)行解析獲取路由器SSID及密碼。其協(xié)議如:

每個數(shù)據(jù)包6個字節(jié),

    ? 第1~3字節(jié):組播包地址,為固定值0x01 0x00 0x5e。? 第4字節(jié):數(shù)據(jù)包序號。? 第5字節(jié):指定數(shù)據(jù)。? 第6個字節(jié):指定數(shù)據(jù)。

每次傳輸若干字節(jié)。舉例說明:

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ù),為特征碼包,后三個字節(jié)由組播IP映射為為組播MAC。取組播IP的后23位作為MAC,映射圖如:

圖片來源: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對應(yīng)16進(jìn)制為00:48:35
取后23位即為1.104.43對應(yīng)16進(jìn)制為01:68:2b
取后23位即為2.92.49對應(yīng)16進(jìn)制為02:5c:31?

(2)第4包數(shù)據(jù)放的是SSID及PSW的長度。

(3)第5~15包數(shù)據(jù)放的則是SSID及PSW。

(4)第16包數(shù)據(jù)為校驗碼,采用連續(xù)異或校驗的方式:

Crc=Crc^0x01^(byte)0x5e^0x40

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

本公眾號專注于嵌入式技術(shù),包括但不限于C/C++、嵌入式、物聯(lián)網(wǎng)、Linux等編程學(xué)習(xí)筆記,同時,公眾號內(nèi)包含大量的學(xué)習(xí)資源。歡迎關(guān)注,一同交流學(xué)習(xí),共同進(jìn)步!