亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊

您現在的位置是:首頁 > 技術閱讀 >  串口編程解析DL-LN33 ZigBee模塊數據包

串口編程解析DL-LN33 ZigBee模塊數據包

時間:2024-02-09

點擊上方“嵌入式從0到1”,選擇“置頂/星標公眾號

干貨福利,第一時間送達!

實現功能

  • 模塊0x0002通過PC端的串口助手發送數據包“FE 06 A0 A1 01 00 01 00 FF”,點亮最小系統板上的LED指示燈;
  • 模塊0x0002通過PC端的串口助手發送數據包“FE 06 A0 A1 01 00 01 01 FF”,熄滅最小系統板上的LED指示燈;
  • 按最小系統板上的白色按鍵,實現通過0x0001模塊點亮0x0002模塊上的紅燈亮5S。

原理圖

最小系統板底板與ZigBee模塊連接原理圖
ZigBee模塊底板連接原理圖

此底板與ZigBee模塊連接之后,只需要一根Micro USB線即可實現對ZigBee模塊的各種功能調試,此底板相當于一個USB轉TTL線的作用,底板上的主芯片為CH340C。

測試網絡是否正常

通過與地址0x0002模塊相連的COM14發送測試數據,

例如發送:

FE 05 91 20 00 00 32 FF

或者:

FE 05 91 20 02 00 32 FF

讓自己模塊上的紅色LED點亮5秒。

==>證明硬件連接沒有問題。

然后測試網絡是否正常,發送測試數據:

FE 05 91 20 01 00 32 FF

此指令將使地址0x0001的模塊亮5S。

==>證明網絡是正常的。

PC 串口助手發送數據

如下圖所示,發送如下數據包:

FE 06 A0 A1 01 00 01 00 FF

地址0x0002的模塊收到數據包之后,會將數據發送至目標地址0x0001模塊,STM32最小系統板接收地址0x0001模塊收到的數據,進而對收到的數據進行解析,然后點亮最小系統板上的綠色LED。

要想實現對數據包的解析,要完成如下幾部分工作:

  • 正確接收完整數據包
  1. 可以采用空閑中斷接收
  2. 采用定時器的方式,保證接收數據的完整
  • 對數據包進行解析

根據DL-LN33模塊協議及自定義協議,綜合解析數據包內容。

此Demo可用于模擬根據需要自動觸發某個動作或者自動上傳傳感器數據至其他模塊。

自定義通訊協議說明
  1. 數據位中第一位01代表綠色指示燈:
  2. 數據位中第二位代表輸出電平:
  • 0x00代表輸出低電平
  • 0x01代表輸出高電平

通訊協議自己可以根據需要隨意定義,只要能保證數據傳輸的準確性、解析數據包后的結果唯一性即可,因為本例只是實現點燈功能,所以通訊協議設定的比較簡單。

按鍵觸發數據傳輸

按鍵按下將發送如下數據包:

FE 05 91 20 02 00 32 FF

點擊核心板上的按鍵,上面數據將通過地址0x0001的模塊傳輸出去,地址0x0002的模塊收到數據之后,模塊上的紅燈亮5S。

按鍵觸發代碼
key = KEY_Scan(0);
  
if(key)   

 switch(key)    
 { 
  case KEY0_PRES:
   {
    memset(USART3_TX_BUF, 0sizeof(USART3_TX_BUF)); 
        
    // 讓地址0x0002的模塊亮5S:FE 05 91 20 02 00 32 FF
    USART3_TX_BUF[0] = 0xFE;
    USART3_TX_BUF[1] = 0x05;
    USART3_TX_BUF[2] = 0x91;
    USART3_TX_BUF[3] = 0x20;
    USART3_TX_BUF[4] = 0x02;
    USART3_TX_BUF[5] = 0x00;
    USART3_TX_BUF[6] = 0x32;
    USART3_TX_BUF[7] = 0xFF;

    zigbee_send_cmd_by_lens(USART3_TX_BUF,8,"",10);
    
    printf("KEY0_PRES...\r\n");
   }
   break;         
  default:
   break;
 }   
}

這里注意封裝的函數:

u8 zigbee_send_cmd_by_lens(u8 *cmd,u8 lens,u8 *ack,u16 waittime);

由于發送的指令中,會存在0x00,所以串口發送函數要有一個發送字節長度的參數才行,否則發送的數據可能不全。

參數ack可以傳進去一個返回值的數組,用于校驗指令返回值是否正確,進而判斷指令是否發送成功。

因為點亮模塊上的紅色LED的指令,屬于內部端口指令,沒有返回值,所以咱們的ack參數傳進去一個空字符串即可。

結果展示


小結

這是DL-LN33 ZigBee模塊介紹的最后一片網文了,有什么問題大家可以留言區交流,或者加我微信進行直接溝通,本文的測試代碼可以在留言區置頂消息中獲取。


參考閱讀

2.4G ZigBee無線自組網mesh網絡模塊簡介
DL-LN33 ZigBee模塊系列網文第二篇:指令分析/地址和組網信息的修改
DL-LN3X ZigBee模塊上位機網絡拓撲軟件演示及信號強度測試


主站蜘蛛池模板: 葵青区| 伊春市| 阿拉善盟| 连州市| 会同县| 革吉县| 海口市| 车险| 景德镇市| 湖北省| 张家口市| 蒲江县| 上林县| 武定县| 台安县| 镇平县| 福州市| 砚山县| 玉龙| 昌宁县| 沧州市| 永德县| 台湾省| 自治县| 贺兰县| 东阳市| 南丹县| 甘孜| 临泽县| 丹巴县| 图片| 洛扎县| 米脂县| 泰州市| 眉山市| 教育| 平罗县| 改则县| 金川县| 巨鹿县| 通河县|