1實驗目的
- 掌握 ZStack 的工作原理;
- 知道如何添加 DS18B20 驅動到協定棧上;
- 知道如何在協定棧上讀取、發送、接收溫度。
2實驗裝置
硬體:PC 機一台; ZB2530(底闆、核心闆、仿真器、USB 線、OLCD) 兩套 ;DS18B20 一個
軟體:win7 系統,IAR 8.20 內建開發環境、序列槽助手
3實驗相關電路圖

圖 1
4實驗分析
注意:本實驗是以點播為依托,終端節點(或者路由)讀取溫度傳感器 DS18B20 的溫度值,然後發送給協調器,協調器負責接收溫度值,并将其通過序列槽發給電腦顯示出來。DS18B20 驅動程式,是在裸機實驗上的驅動程式略作修改的,具體讀者可以打開工程看看。下面分别講解溫度讀取、發送和接收:
溫度讀取
(1) 步驟一:将 ds18b20.c 和 ds18b20.h 添加到如圖所示的檔案夾下;
圖2 驅動移植到 ZStack 的路徑
(2) 步驟二:在 workspace 裡添加 ds18b20.c 到 App 檔案夾下,然後,在 SampleApp.c 裡将 ds18b20.h 包括進去,如下圖所示;
(3) 步驟三:對 ds18b20.c 和 ds18b20.h 進行修改,初始化傳感器引腳。
(4)步驟四:DS18B20.c 檔案還需要修改一個地方。打開檔案将原來的延時函數改成協定棧自帶的延時函數,保證時序的正确。同時要包含#include"OnBoard.h"。
将基礎實驗中的延時函數
void Ds18b20Delay(unsigned int k) //時鐘頻率為 32M
{
unsigned int i,j;
for(i=0;i<k;i++)
for(j=0;j<2;j++);
}
改成
void Ds18b20Delay(unsigned int k) //時鐘頻率為 32M
{
while (k--)
{
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
}
}
溫度資訊發送
調用周期性點播函數将溫度資訊發送給其它 Zigbee 節點,具體帶代碼如下:
溫度資訊接收
調用接收函數,接收溫度資訊,具體代碼如下:
5實驗現象
1)選擇 CoodinatorEB-Pro, 下載下傳到開發闆 A;作為協調器,通過 USB 線跟電腦連接配接.
2)選擇 EndDeviceEB-Pro, 下載下傳到開發闆 B;作為終端裝置無線發送資料給協調器,也通過 USB線跟電腦連接配接.