物聯網實驗2 協議棧剖析

你的負卿是我發表於2020-11-18

1 實驗目的

(1)熟悉SampleApp工程;
(2)掌握Zigbee的組網,資料點播、廣播;
(3)熟悉協議棧的串列埠。

2 實驗環境

(1)硬體:CC2530節點板2塊,CC2530模擬器,PC 機;
(2)軟體:Windows 7/Windows XP,IAR整合開發環境。

3 實驗內容

(1)在SampleApp工程中新增點播程式碼;
(2)在SampleApp工程中新增串列埠功能,實現串列埠的接收和傳送;實現兩臺電腦的串列埠射頻無線資料傳輸。

4 實驗預習要求

仔細閱讀第3篇Zstack協議棧剖析的PPT內容,理解組網、點播和廣播,熟悉SampleApp工程中的資料傳送和接收函式,熟悉串列埠的使用。

5 實驗步驟

由於原始碼zigbee網路PAN ID均設定為0xFFF1,為了避免實驗環境下多個實驗平臺之間網路互相串擾,每個實驗平臺需要修改PAD ID,修改工程內檔案:Tools -> f8wConfig.cfg,將PAN ID修改為:個人學號的後四位+100

A、在SampleApp工程中新增點播程式碼


(1)解壓ZStack-CC2530-2.3.0-1.4.0.rar壓縮包
(2)開啟SampleApp工程,注意軟體版本使用IAR8.20
在這裡插入圖片描述
(3)在SampleApp.c檔案的對應位置新增下圖所示的程式碼,對點播通訊定義
在這裡插入圖片描述

(4)在SampleApp.c檔案的SampleApp_Init()函式對應位置新增下圖所示的程式碼,對點播引數進行賦值在這裡插入圖片描述
(5)由於協調器不進行點播,故週期任務初始化時協調器不初始化,所以將它註釋掉。在SampleApp.c檔案的SampleApp_Init()函式對應位置註釋相應程式碼在這裡插入圖片描述
(6)在SampleApp.c檔案的最後新增點播傳送函式的實現程式碼在這裡插入圖片描述

(7)在SampleApp.h檔案的相應位置新增點播傳送簇的定義
在這裡插入圖片描述

(8)在SampleApp.c檔案的SampleApp_ProcessEvent()函式裡,找到相應位置,將廣播傳送函式註釋掉,加上點播傳送函式在這裡插入圖片描述

(9)在SampleApp.c中修改SampleApp_MessageMSGCB ()函式,完成點播資料的接收。把傳送的內容顯示出來。自己程式設計實現!!!

在這裡插入圖片描述

(10)至此,點播通訊相關的程式碼新增完畢,嘗試編譯,直至編譯成功,繼續第二部分內容。

B、在第一部分的基礎上,在SampleApp工程中新增串列埠功能,實現串列埠的接收和傳送;實現兩臺電腦的串列埠射頻無線資料傳輸:

(1)在SampleApp.c檔案的開始位置新增下圖所示的程式碼,把串列埠需要的標頭檔案包含進來在這裡插入圖片描述
(2)在SampleApp.c檔案的SampleApp_Init()函式裡新增串列埠的初始化函式
在這裡插入圖片描述

使用HalUARTWrite()函式在這裡輸出自己的姓名首字母和學號後4位。

(3)在MT_UART.h檔案中找到下圖相應程式碼位置,也可以在MT_UartInit()函式中進去查詢,關閉流控制和修改波特率為115200在這裡插入圖片描述
在OnBoard.h檔案中找到下圖位置修改程式碼,也可以在MT_UartInit()函式中進去查詢在這裡插入圖片描述
在MT_UART.c檔案的MT_UartInit()函式中找到下圖位置,修改程式碼在這裡插入圖片描述
(4)註釋協調器的MT層和ZTOO_P1相關的巨集,開啟ZAPP_P1巨集。新增HOLD_AUTO_START和ZAPP_P1,註釋xZTOOL_P1、xMT_TASK、xMT_SYS_FUNC、xMT_ZDO_FUNC、xBUILD_ALL_DEVICES。在這裡插入圖片描述
5)註釋終端節點的MT層和ZTOO_P1相關的巨集,開啟ZAPP_P1巨集。新增HOLD_AUTO_START和ZAPP_P1,註釋xZTOOL_P1、xMT_TASK、xMT_SYS_FUNC、xMT_ZDO_FUNC、xLCD_SUPPORTED=DEBUG、xNWK_AUTO_POLL。參照上圖!!!

(6)在MT_UART.c中找到函式void MT_UartProcessZAppData ( uint8 port, uint8 event ) ,註釋流控制功能程式碼。

在這裡插入圖片描述

(7)在SampleApp.c檔案中宣告一個結構體用於資料傳遞,並宣告串列埠接收處理函式。在這裡插入圖片描述
8)在SampleApp.c檔案的最後新增串列埠接收處理的函式實現程式碼在這裡插入圖片描述

(9)在SampleApp.c檔案的SampleApp_ProcessEvent()函式中新增串列埠事件處理在這裡插入圖片描述
(10)完善點播/廣播接收的程式碼,在接收到點播/廣播資料後使用串列埠輸出到電腦
在這裡插入圖片描述

(11)分別編譯下載程式在這裡插入圖片描述
在這裡插入圖片描述
(12)分別下載到實驗箱中的兩個模組,一個終端節點一個協調器,分別連線上串列埠線,並開啟串列埠除錯助手,注意選擇COM口,嘗試使用串列埠除錯助手互相傳送資料,觀察現象。
正常現象:兩個模組上電時會輸出自己的姓名首字母和學號後4位(如果不能輸出,可能程式錯誤或者串列埠連線線有問題,檢查硬體連線),終端節點會定時點播資料到協調器,所以協調器的串列埠會間隔輸出0123456789的字元(嘗試定時傳送輸出自己的姓名首字母和學號後4位),使用串列埠除錯助手可以互相進行資料無線透傳。
在這裡插入圖片描述

相關文章