日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

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

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

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

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

接線

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

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

Uart通信協(xié)議

1. 串口參數(shù)

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

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

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

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

此包的說明如下表所示:

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

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

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

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

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

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

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

FE 06 91 90 03 00 09 FE FD FF

雖然一共傳輸了 7 個字節(jié),但包長為 6。如果地址、端口號中出現(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對應(yīng)FF,F(xiàn)C對應(yīng)FE。
  • 凡是遇到FF,一定是包尾。

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

端口

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

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

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

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

則會讓地址為 03 00 的模塊自帶的紅燈點(diǎn)亮 1 秒,而他的 Uart 不會輸出數(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)亮一定時間。

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

測試命令:FE 05 A3 20 02 00 32 FF
數(shù)據(jù)位的值0x32代表紅燈點(diǎn)亮的時間,該時間為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)用: 此功能可以用于測試一個指定地址的模塊是否包含在網(wǎng)絡(luò)中,如果想從許多節(jié)點(diǎn)中迅速找到某個特定地址的節(jié)點(diǎn),也可以使用此功能。

基本信息管理端口

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

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

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

查詢組網(wǎng)信息

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

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

通信的波特率

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

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

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

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

2. 查詢波特率

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

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

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

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

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

波特率 讀數(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è)置說明

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

地址

1. 設(shè)置地址

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

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

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

2. 查詢地址

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

測試指令:查詢地址
發(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

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

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

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

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

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

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

測試指令:
發(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ù) 長度 意義
命令 1Byte 必須為0x13。
新信道 1Byte 想要設(shè)置的新信道值,新網(wǎng)絡(luò)信道必須合法。

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

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

2. 查詢信道

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

測試指令:
發(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è)置信息在更新以后,不會立即執(zhí)行,模塊會使用原有的參數(shù)繼續(xù)工作,此時如果希望寫入的參數(shù)生效,則需發(fā)送重啟命令包給模塊。

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

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

發(fā)送重啟命令

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

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

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

參考閱讀

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


寫文不易,對你有幫助的話,

請四連鼓勵一下,謝謝各位!

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

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

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉