當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 程序員小哈
[導(dǎo)讀]在DL-LN33模塊使用之前,我們需要對(duì)模塊進(jìn)行通信的波特率、地址、信道和網(wǎng)絡(luò)ID進(jìn)行設(shè)置,這樣我們首先要對(duì)模塊的通信協(xié)議進(jìn)行了解,本文重點(diǎn)分析一下模塊指令的格式,然后對(duì)模塊地址和組網(wǎng)信息進(jìn)行修改。

點(diǎn)擊上方“嵌入式從0到1”,選擇“置頂/星標(biāo)公眾號(hào)

干貨福利,第一時(shí)間送達(dá)!

在DL-LN33模塊使用之前,我們需要對(duì)模塊進(jìn)行通信的波特率、地址、信道和網(wǎng)絡(luò)ID進(jìn)行設(shè)置,這樣我們首先要對(duì)模塊的通信協(xié)議進(jìn)行了解,本文重點(diǎn)分析一下模塊指令的格式,然后對(duì)模塊地址和組網(wǎng)信息進(jìn)行修改。

接線

注意: 默認(rèn)購(gòu)買(mǎi)的PL2303TA線一般紅線為5V,需打開(kāi)藍(lán)蓋,將紅線更改為3.3V。

圖中所示的USB轉(zhuǎn)TTL的串口模塊都可以,但是使用的時(shí)候,注意: ZigBee模塊的工作電壓應(yīng)為2.5V~3.6V。

Uart通信協(xié)議

1. 串口參數(shù)

數(shù)據(jù)位:8位
起始位:1位
停止位:1位
校驗(yàn)位:無(wú)校驗(yàn)
波特率可以選用下面任意值:
2400、 4800、 9600、 14400、 19200、 28800、 38400、 57600、 115200、 230400、 125000、 250000、 500000。

模塊出廠默認(rèn)波特率為:115200

2. 數(shù)據(jù)包結(jié)構(gòu)定義

在通信過(guò)程中,最常見(jiàn)的應(yīng)用場(chǎng)景是單片機(jī)通過(guò) Uart 告訴模塊這樣的信息:
“將數(shù)據(jù) 00 AE 13 33 發(fā)往地址為 0003 的模塊,目標(biāo)端口為 90,源端口為 91?!?br>對(duì)于單片機(jī),需要將這些信息整理成一個(gè)包,通過(guò) Uart 發(fā)給模塊:
FE 08 91 90 03 00 00 AE 13 33 FF

此包的說(shuō)明如下表所示:

信息名 長(zhǎng)度 說(shuō)明 舉例
包頭 2 Byte 包頭由FE和包的長(zhǎng)度組成,長(zhǎng)度為包的數(shù)據(jù)長(zhǎng)度加4(源端口號(hào)1Byte+目的端口號(hào)1Byte+遠(yuǎn)程地址2Byte)。 FE 08
源端口號(hào) 1 Byte 包的源端口號(hào)。 0x91
目的端口號(hào) 1 Byte 包的目的端口號(hào)。 0x90
遠(yuǎn)程地址 2Byte 遠(yuǎn)程模塊的地址,當(dāng)發(fā)送數(shù)據(jù)給模塊時(shí),遠(yuǎn)程地址為目標(biāo)模塊的地址, 目標(biāo)地址為 0x0000 表示此包發(fā)給本模塊,目標(biāo)地址為 0xFFFF 的包會(huì)被發(fā)往本網(wǎng)絡(luò)中的所有節(jié)點(diǎn)。 03 00
數(shù)據(jù) 可變 想要傳輸?shù)臄?shù)據(jù)。 00 AE 13 33
包尾 1 Byte 固定為FF表示一個(gè)包傳輸完成。 FF

注: 遠(yuǎn)程地址即節(jié)點(diǎn)地址,長(zhǎng)度為2 Byte,使用小端模式進(jìn)行傳輸,即先傳輸?shù)?位,再傳輸高8位。

3. 轉(zhuǎn)義機(jī)制

  • 包尾是一個(gè)包的結(jié)束,值為 FF,如果收發(fā)過(guò)程中出現(xiàn)FF則會(huì)干擾包的正常接收。所以包中不能出現(xiàn)FF,如果需要發(fā)送FF則用 FE FD代替;
  • FE是包頭,也是轉(zhuǎn)義標(biāo)志,如果傳輸過(guò)程中出現(xiàn) FE,后面跟著一個(gè)小于64(因?yàn)樵撃K傳輸?shù)臄?shù)據(jù)包最大長(zhǎng)度為63)的數(shù)字,則會(huì)使接收方誤認(rèn)為收到了一個(gè)包頭。因此,在任何時(shí)候需要發(fā)送一個(gè)FE時(shí),則發(fā)送 FE FC代替;
  • 處理在包頭、包尾和數(shù)據(jù)長(zhǎng)度(數(shù)據(jù)長(zhǎng)度不會(huì)大于63)數(shù)據(jù)傳輸過(guò)程中遇到的任何FE/FF都需要轉(zhuǎn)義處理。

傳輸過(guò)程中如果遇到數(shù)據(jù)部分、地址或者端口號(hào)中出現(xiàn) FF,則使用 FE FD 來(lái)代替;如果出現(xiàn) FE,則用 FE FC 來(lái)代替。

以免傳輸過(guò)程中出現(xiàn)的包頭和包尾,使接收方誤判斷。在傳輸中這種替換稱(chēng)為“轉(zhuǎn)義”。

包長(zhǎng)度不會(huì)受到轉(zhuǎn)義的影響,例如發(fā)送的數(shù)據(jù)為 09 FF 時(shí),替換為 09 FE FD,但包頭中的數(shù)據(jù)長(zhǎng)度仍然按照 2+4 來(lái)計(jì)算,這樣,發(fā)送的包如下:

FE 06 91 90 03 00 09 FE FD FF

雖然一共傳輸了 7 個(gè)字節(jié),但包長(zhǎng)為 6。如果地址、端口號(hào)中出現(xiàn)了 FF、FE 也需要進(jìn)行轉(zhuǎn)義。

  • 要發(fā)送的數(shù)據(jù)是:FE 08 90 91 FF?00 20 FE?? FF?20 FF
  • 實(shí)際發(fā)送的數(shù)據(jù)是:FE 08 90 91 FE FD 00 20 FE FC FE FD 20 FF

4. 解析包策略上的規(guī)律

  • 凡是FE后面跟著的內(nèi)容必然特殊處理

    • 如果是小于63的數(shù)據(jù),則是收到了包頭。
    • 如果是FD和FC,則將此數(shù)據(jù)+2既是要發(fā)送的數(shù)據(jù),F(xiàn)D對(duì)應(yīng)FF,F(xiàn)C對(duì)應(yīng)FE。
  • 凡是遇到FF,一定是包尾。

第四篇網(wǎng)文,串口編程解析數(shù)據(jù)包時(shí),將會(huì)應(yīng)用此處的結(jié)論。

端口

DL-LN3X 模塊設(shè)計(jì)了端口的概念,接收方收到一個(gè)包時(shí),會(huì)根據(jù)包的端口號(hào),選擇對(duì)應(yīng)的程序處理包。

端口號(hào)的取值范圍是 0x00~0xFF,其中 0x00~0x7F 端口由模塊內(nèi)部程序占用, 0x80~0xFF 端口開(kāi)放給 Uart 連接的 MCU 或者電腦。

當(dāng) MCU 給一個(gè)模塊發(fā)送數(shù)據(jù)時(shí),如果源端口號(hào)填寫(xiě)了小于 0x80 的值,則包無(wú)法發(fā)出;如果目的端口號(hào)填寫(xiě)了小于 0x80 的值,接收方模塊的內(nèi)部程序?qū)⑻幚磉@個(gè)包并執(zhí)行相關(guān)的動(dòng)作,而不是從 Uart 發(fā)出這個(gè)包。

例如發(fā)送這個(gè)包:
FE 05 91 20 03 00 0A FF

則會(huì)讓地址為 03 00 的模塊自帶的紅燈點(diǎn)亮 1 秒,而他的 Uart 不會(huì)輸出數(shù)據(jù)。

FE 05 91 20 00 00 0A FF
讓自己模塊上的紅色LED點(diǎn)亮1秒。

修改通信的波特率、地址、網(wǎng)絡(luò)ID和信道,都是跟模塊自身的內(nèi)部端口進(jìn)行通信,即與自己的小于0x80的端口進(jìn)行通信,這些端口都是廠家預(yù)先內(nèi)置的端口,用于實(shí)現(xiàn)不同組網(wǎng)信息的查詢和修改。

紅燈閃爍控制端口

端口 0x20 用于控制模塊的紅色 LED 點(diǎn)亮,發(fā)送此包可以使模塊的紅色 LED 點(diǎn)亮一定時(shí)間。

模塊與USB轉(zhuǎn)TTL連接之后,利用此端口可以測(cè)試接線是否正確。

測(cè)試命令:FE 05 A3 20 02 00 32 FF
數(shù)據(jù)位的值0x32代表紅燈點(diǎn)亮的時(shí)間,該時(shí)間為100ms的倍數(shù),換算關(guān)系如下:

0x32 = 50 * 100ms = 5 S。

所以上面命令為點(diǎn)亮地址為0x0002的模塊紅燈5秒鐘。

FE 05 A3 20 00 00 32 FF
讓本模塊的LED點(diǎn)亮5 S。

應(yīng)用: 此功能可以用于測(cè)試一個(gè)指定地址的模塊是否包含在網(wǎng)絡(luò)中,如果想從許多節(jié)點(diǎn)中迅速找到某個(gè)特定地址的節(jié)點(diǎn),也可以使用此功能。

基本信息管理端口

設(shè)置/修改模塊信息

端口 0x21 用于配置模塊的基本參數(shù),包括波特率、地址、網(wǎng)絡(luò) ID和信道等。

此端口只接受遠(yuǎn)程地址填寫(xiě) 0x0000 的包,因此,這些信息的讀取和修改只能通過(guò)本模塊的 Uart 進(jìn)行,不能遠(yuǎn)程操作。

查詢組網(wǎng)信息

發(fā)送數(shù)據(jù) 長(zhǎng)度 意義
命令 1Byte 必須為以下值中的一個(gè):0x01 讀取地址;0x02 讀取網(wǎng)絡(luò)ID;0x03 讀取信道編號(hào);0x04 讀取Uart的波特率。

發(fā)送這個(gè)數(shù)據(jù)后,模塊會(huì)根據(jù)修改的內(nèi)容返回一個(gè)地址包、網(wǎng)絡(luò) ID 包、信道包或者波特率包。這些包將會(huì)攜帶對(duì)應(yīng)的配置信息。

通信的波特率

1. 設(shè)置波特率包

發(fā)送數(shù)據(jù) 長(zhǎng)度 意義
命令 1Byte 必須為0x14。
新波特率 1Byte 想要設(shè)置的新波特率讀數(shù)。

發(fā)送這個(gè)數(shù)據(jù)后,模塊的波特率將被修改為新的的值,除非此值不合法。操作完成后,此端口會(huì)返回一個(gè)響應(yīng)包。

測(cè)試指令:修改波特率
發(fā)送:FE 06 90 21 00 00 14 08 FF
返回:FE 05 21 90 00 00 00 FF
修改后模塊信息:波特率讀數(shù)為0x08(115200)

2. 查詢波特率

返回?cái)?shù)據(jù) 長(zhǎng)度 意義
命令 1Byte 必須為0x24。
波特率 1Byte 當(dāng)前波特率,如果節(jié)點(diǎn)曾經(jīng)收到過(guò)設(shè)置信息包,并且沒(méi)有進(jìn)行更新,則此處返回最新設(shè)置的波特率讀數(shù)。

測(cè)試指令:
發(fā)送:FE 05 90 21 00 00 04 FF
返回:FE 06 21 90 00 00 24 08 FF

模塊信息:波特率為0x08,查看下表即為 115200。

注意: 如果不發(fā)送復(fù)位指令,那么重新上電之后,修改的信息將無(wú)效。

3. 波特率--讀數(shù)對(duì)照表

波特率 讀數(shù)
波特率 讀數(shù)
2400 0x00
57600 0x07
4800 0x01
115200 0x08
9600 0x02
230400 0x09
14400 0x03
125000 0x0A
19200 0x04
250000 0x0B
28800 0x05
500000 0x0C
38400 0x06


設(shè)置說(shuō)明

如果不知道模塊配置的波特率,可以將 BaudReset 引腳連接到 GND,這樣便可以使用 115200 波特率對(duì)模塊進(jìn)行配置。

地址

1. 設(shè)置地址

發(fā)送數(shù)據(jù) 長(zhǎng)度 意義
命令 1Byte 必須為0x11。
新地址 2Byte 想要設(shè)置的新地址值,新地址必須合法。

發(fā)送這個(gè)數(shù)據(jù)后,模塊的地址將被修改為新地址給定的值,除非此值不合法。操作完成后,此端口會(huì)返回一個(gè)響應(yīng)包。

測(cè)試指令:修改地址為0x0001
發(fā)送:FE 07 90 21 00 00 11 01 00 FF
返回:FE 05 21 90 00 00 00 FF
修改后模塊信息:地址為0x0001

2. 查詢地址

返回?cái)?shù)據(jù) 長(zhǎng)度 意義
命令 1Byte 必須為0x21。
地址 2Byte 當(dāng)前地址,如果節(jié)點(diǎn)曾經(jīng)收到過(guò)設(shè)置信息包,并且沒(méi)有進(jìn)行更新,則此處返回最新設(shè)置的值。

測(cè)試指令:查詢地址
發(fā)送:FE 05 90 21 00 00 01 FF
返回:FE 07 21 90 00 00 21 01 00 FF
模塊信息:地址為0x0001。

網(wǎng)絡(luò)ID

1. 設(shè)置新網(wǎng)絡(luò)ID

信息名 長(zhǎng)度 說(shuō)明 舉例
包頭 2 Byte 包頭由FE和包的長(zhǎng)度組成,長(zhǎng)度為包的數(shù)據(jù)長(zhǎng)度加4。 FE 07
源端口號(hào) 1 Byte 包的源端口號(hào)。 0x91
目的端口號(hào) 1 Byte 包的目的端口號(hào)。 0x21
遠(yuǎn)程地址 2 Byte 目標(biāo)地址為 0x0000 表示此包發(fā)給本模塊。 00 00
數(shù)據(jù) 3 Byte 第一個(gè)字節(jié)固定為0x12,后兩個(gè)字節(jié)為新網(wǎng)絡(luò)ID 12 34 12
包尾 1 Byte 固定為FF表示一個(gè)包傳輸完成。 FF

測(cè)試指令:修改網(wǎng)絡(luò)ID為0x1234
發(fā)送:FE 07 90 21 00 00 12 34 12 FF

發(fā)送這個(gè)數(shù)據(jù)后,模塊的網(wǎng)絡(luò) ID 將被修改為新網(wǎng)絡(luò) ID 給定的值:0x1234,除非此值不合法。操作完成后,此端口會(huì)返回一個(gè)響應(yīng)包。

返回:FE 05 21 90 00 00 00 FF
修改后模塊信息:網(wǎng)絡(luò)ID為0x1234。

2. 查詢網(wǎng)絡(luò)ID包

返回?cái)?shù)據(jù) 長(zhǎng)度 意義
命令 1Byte 必須為0x22。
網(wǎng)絡(luò)ID 2Byte 當(dāng)前網(wǎng)絡(luò) ID,如果節(jié)點(diǎn)曾經(jīng)收到過(guò)設(shè)置信息包,并且沒(méi)有進(jìn)行更新,則此處返回最新設(shè)置的值。

測(cè)試指令:
發(fā)送:FE 05 90 21 00 00 02 FF
返回:FE 07 21 90 00 00 22 34 12 FF
模塊信息:網(wǎng)絡(luò)ID為0x1234。

信道

1. 設(shè)置信道

發(fā)送數(shù)據(jù) 長(zhǎng)度 意義
命令 1Byte 必須為0x13。
新信道 1Byte 想要設(shè)置的新信道值,新網(wǎng)絡(luò)信道必須合法。

發(fā)送這個(gè)數(shù)據(jù)后,模塊的網(wǎng)絡(luò) ID 將被修改為新網(wǎng)絡(luò) ID 給定的值,除非此值不合法。操作完成后,此端口會(huì)返回一個(gè)響應(yīng)包。

測(cè)試指令:修改信道為0x0F
發(fā)送:FE 06 90 21 00 00 13 0F FF
返回:FE 05 21 90 00 00 00 FF
修改后模塊信息:信道為0x0F

2. 查詢信道

返回?cái)?shù)據(jù) 長(zhǎng)度 意義
命令 1Byte 必須為0x23。
信道 1Byte 當(dāng)前信道,如果節(jié)點(diǎn)曾經(jīng)收到過(guò)設(shè)置信息包,并且沒(méi)有進(jìn)行更新,則此處返回最新設(shè) 置的值。

測(cè)試指令:
發(fā)送:FE 05 90 21 00 00 03 FF
返回:FE 06 21 90 00 00 23 0F FF
模塊信息:信道為0x0F

重啟命令包

設(shè)置信息包含設(shè)置地址,設(shè)置網(wǎng)絡(luò) ID,設(shè)置波特率,設(shè)置信道四種。

這些設(shè)置信息在更新以后,不會(huì)立即執(zhí)行,模塊會(huì)使用原有的參數(shù)繼續(xù)工作,此時(shí)如果希望寫(xiě)入的參數(shù)生效,則需發(fā)送重啟命令包給模塊。

在設(shè)置地址信息且沒(méi)有發(fā)送重啟命令的情況下,如果模塊斷電后再次啟動(dòng),設(shè)置的信息也將丟失。

一旦設(shè)置這些信息并發(fā)送重啟命令包,這些信息不會(huì)因?yàn)閿嚯姾腿魏涡问降膹?fù)位丟失。

發(fā)送重啟命令

發(fā)送數(shù)據(jù) 長(zhǎng)度 意義
命令 1Byte 必須為0x10,更新信息并重啟。

測(cè)試指令:重啟包
發(fā)送:FE 05 90 21 00 00 10 FF
返回:無(wú)
現(xiàn)象:模塊上的燈閃爍亮2S左右

發(fā)送這個(gè)重啟命令之后,模塊的最新參數(shù)將被固化。

參考閱讀

2.4G ZigBee無(wú)線自組網(wǎng)mesh網(wǎng)絡(luò)模塊簡(jiǎn)介


寫(xiě)文不易,對(duì)你有幫助的話,

請(qǐng)四連鼓勵(lì)一下,謝謝各位!

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉