本文主要是介绍《ZigBee开发笔记》第五部分 外设篇 - 协议栈实验 第1章 CC2530温度传感器DS18B20,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1实验目的
- 掌握 ZStack 的工作原理;
- 知道如何添加 DS18B20 驱动到协议栈上;
- 知道如何在协议栈上读取、发送、接收温度。
2实验设备
硬件:PC 机一台; ZB2530(底板、核心板、仿真器、USB 线、OLCD) 两套 ;DS18B20 一个
软件:win7 系统,IAR 8.20 集成开发环境、串口助手
3实验相关电路图
4实验分析
注意:本实验是以点播为依托,终端节点(或者路由)读取温度传感器 DS18B20 的温度值,然后发送给协调器,协调器负责接收温度值,并将其通过串口发给电脑显示出来。DS18B20 驱动程序,是在裸机实验上的驱动程序略作修改的,具体读者可以打开工程看看。下面分别讲解温度读取、发送和接收:
温度读取
(1) 步骤一:将 ds18b20.c 和 ds18b20.h 添加到如图所示的文件夹下;
(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线跟电脑连接.
3)给两块开发板上电,打开串口调试助手,设为:115200 8N1 并打开串口,设置如下图所示(串口请选择自己的端口号)。 终端连网成功后会向协调器发数据,编者的开发板上OLED,所以下载好程序后就可看到OLED上有温度显示。当然也能通串口显示,笔者就不演示了,有兴趣的可以看看串口显示的是否和OLED有差异。
【注】关于DS18B20的理论知识课参看笔者的另一篇博客。
基础实验 第1章CC2530温度传感器DS18B20
本章参考代码
点击进入
这篇关于《ZigBee开发笔记》第五部分 外设篇 - 协议栈实验 第1章 CC2530温度传感器DS18B20的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!