天天看點

《ZigBee開發筆記》第五部分 外設篇 - 協定棧實驗 第1章 CC2530溫度傳感器DS18B20

1實驗目的

  1. 掌握 ZStack 的工作原理;
  2. 知道如何添加 DS18B20 驅動到協定棧上;
  3. 知道如何在協定棧上讀取、發送、接收溫度。

2實驗裝置

硬體:PC 機一台; ZB2530(底闆、核心闆、仿真器、USB 線、OLCD) 兩套 ;DS18B20 一個

軟體:win7 系統,IAR 8.20 內建開發環境、序列槽助手

3實驗相關電路圖

《ZigBee開發筆記》第五部分 外設篇 - 協定棧實驗 第1章 CC2530溫度傳感器DS18B20

圖 1

4實驗分析

注意:本實驗是以點播為依托,終端節點(或者路由)讀取溫度傳感器 DS18B20 的溫度值,然後發送給協調器,協調器負責接收溫度值,并将其通過序列槽發給電腦顯示出來。DS18B20 驅動程式,是在裸機實驗上的驅動程式略作修改的,具體讀者可以打開工程看看。下面分别講解溫度讀取、發送和接收:

 溫度讀取

(1) 步驟一:将 ds18b20.c 和 ds18b20.h 添加到如圖所示的檔案夾下;

《ZigBee開發筆記》第五部分 外設篇 - 協定棧實驗 第1章 CC2530溫度傳感器DS18B20

圖2 驅動移植到 ZStack 的路徑

(2) 步驟二:在 workspace 裡添加 ds18b20.c 到 App 檔案夾下,然後,在 SampleApp.c 裡将 ds18b20.h 包括進去,如下圖所示;

《ZigBee開發筆記》第五部分 外設篇 - 協定棧實驗 第1章 CC2530溫度傳感器DS18B20

(3) 步驟三:對 ds18b20.c 和 ds18b20.h 進行修改,初始化傳感器引腳。

《ZigBee開發筆記》第五部分 外設篇 - 協定棧實驗 第1章 CC2530溫度傳感器DS18B20

(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開發筆記》第五部分 外設篇 - 協定棧實驗 第1章 CC2530溫度傳感器DS18B20

 溫度資訊發送

調用周期性點播函數将溫度資訊發送給其它 Zigbee 節點,具體帶代碼如下:

《ZigBee開發筆記》第五部分 外設篇 - 協定棧實驗 第1章 CC2530溫度傳感器DS18B20
《ZigBee開發筆記》第五部分 外設篇 - 協定棧實驗 第1章 CC2530溫度傳感器DS18B20

 溫度資訊接收

調用接收函數,接收溫度資訊,具體代碼如下:

《ZigBee開發筆記》第五部分 外設篇 - 協定棧實驗 第1章 CC2530溫度傳感器DS18B20

5實驗現象

1)選擇 CoodinatorEB-Pro, 下載下傳到開發闆 A;作為協調器,通過 USB 線跟電腦連接配接.

2)選擇 EndDeviceEB-Pro, 下載下傳到開發闆 B;作為終端裝置無線發送資料給協調器,也通過 USB線跟電腦連接配接.

本章參考代碼

繼續閱讀