《无线短距离通信技术开发项目教程》(第二版) 课件 第13、14章 无线点多盏灯、ZigBee协议栈实验:无线温度检测_第1页
《无线短距离通信技术开发项目教程》(第二版) 课件 第13、14章 无线点多盏灯、ZigBee协议栈实验:无线温度检测_第2页
《无线短距离通信技术开发项目教程》(第二版) 课件 第13、14章 无线点多盏灯、ZigBee协议栈实验:无线温度检测_第3页
《无线短距离通信技术开发项目教程》(第二版) 课件 第13、14章 无线点多盏灯、ZigBee协议栈实验:无线温度检测_第4页
《无线短距离通信技术开发项目教程》(第二版) 课件 第13、14章 无线点多盏灯、ZigBee协议栈实验:无线温度检测_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

无线点多盏灯一、实验原理二、重点代码解析二、数据发送标题三、数据接收一、实验原理

实验效果:通过协调器的按键S1控制广播发送数据给路由器或终端节点。节点接收到数据后执行控制灯操作。整个过程在协议栈Z-STACK的SampleApp.eww上完成。实验目的:陪伴大家走过了ZigBee基础实验、组网演练。我们对基于ZigBee协议栈的APP层的编程越来越胸有成竹。本项目将综合前面所做的广播与单播以及组播,还有点对点数据传输的基础之上来批量的控制一组灯。一、实验原理主要步骤:1.在网蜂公司“无线点台灯”实验的基础上,建立我们习惯的协调器工程和终端节点(或路由器工程);2.正确地配置工程;3.按键的初始化等,我们买的网蜂公司的节点S1接的P0-1;4.修改协调器的工作流程;5.修改终端节点的工作流程;6.验证实验效果。二、数据发送——协调器工作流程1.

系统检测到按键S1事件后,串口打印“KEY”做提示;

2.继续判断是否S1按下,执行数据发送函数,往网络中广播发送数据;3.

我们可以往网络中发送一个“1”;协调器流程图一、实验原理——协调器工作流程一、实验原理——协调器工作流程一、实验原理——协调器工作流程三、数据接收——路由器或终端节点工作流程如果收到“1”

,则执行LED灯状态翻转的操作。路由器或终端节点流程图ZigBee协议栈实验:无线温度检测实验一、实验原理二、重点代码解析三、实验结果验证标题四、数据接收一、实验原理——实验效果及原理图该实验的基本原理:协调器建立ZigBoe无线网络,终端节点自动加入该网络中,然后终端节点周期性地采集温度数据并将其发送给协调器,协调器收到温度数据后,通过串口将其输出到用户PC机。一、实验原理——工作流程图无线温度检测实验协调器流程图

图无线温度检测实验终端节点流程图对于协调器而言,只需要将接收到的温度数据通过串口发送到PC机即可。对于终端节点而言,需要周期性地采集温度数据,采集温度数据可以通过读取温度传感器的函数得到。一、实验原理—数据包的定义

一般在具体项目开发过程中,通信双方需要提前定义好数据通信的格式,一般需要包含数据头、数据、校验位、数据尾等信息。

在项目开发过程中,使用到数据包时,一般会使用结构体来将整个数据包所需要的数据包含起来,这样编程效率较高,需要添加在AF.h文件里。

使用一个共用体来表示整个数据包,里面有两个成员变量,一个是数组TEMP,该数组有4个元素:另一个是结构体,该结构体具体实现了数据包的数据头、温度数据、数据尾。很容易发现,结构体所占的存储空间也是4个字节。在本实验中使用的结构体定义如下:typedefunionh{uint8TEMP[4];structRFRXBUF{unsignedcharHead;//命令头unsignedcharvalue[2];//温度数据unsignedcharTail;//命令尾}BUF;}TEMPERATURE;一、实验原理—数据包的定义二、重点代码解析--协调器程序设计//以下是消息处理函数voidGenericApp_MessageMSGCB(afIncomingMSGPacket_t*pkt){unsignedcharbuffer[2]={0x0A,0x0D};//回车换行符的ASCII码TEMPERATUREtemperature;switch(pkt->clusterId){caseGENERICAPP_CLUSTERID:osal_memcpy(&temperature,pkt->cmd.Data,sizeof(temperature));HalUARTWrite(0,(uint8*)&temperature,sizeof(temperature));HalUARTWrite(0,buffer,2);break;}}二、重点代码解析---传感器编程(1)

终端节点编程时,需要解决两个问题,将温度检测函数放在什么地方?如何发送温度数据?使用ZigBee协议栈进行无线传感器网络开发时,将传感器操作有关的函数(如读取传感器数据的函数)放在协议栈的App目录下

。将传感器操作有关的函数放在协议栈的App目录下二、重点代码解析---传感器编程(2)Sensor.h文件内容如下:#ifndefSENSOR_H#defineSENSOR_H#include<hal_types.h>externint8readTemp(void);#endif二、重点代码解析---传感器编程(3)Sensor.c文件内容如下:#include"Sensor.h"#include<ioCC2530.h>#defineHAL_ADC_REF_115V0x00#defineHAL_ADC_DEC_2560x20#defineHAL_ADC_CHN_TEMP0x0e

二、重点代码解析---传感器编程(4)Sensor.c文件内容如下:

int8readTemp(void){staticuint16reference_voltage;staticuint8bCalibrate=TRUE;uint16value;int8temp;ATEST=0x01;//使能温度传感器TR0|=0x01;//连接温度传感器ADCIF=0;ADCCON3=(HAL_ADC_REF_115V|HAL_ADC_DEC_256|HAL_ADC_CHN_TEMP);while(!ADCIF);ADCIF=0;value=ADCL;value|=((uint16)ADCH)<<8;value>>=4;if(bCalibrate)//记录第一次读取的温度值,用于校正温度数据{reference_voltage=value;bCalibrate=FALSE;}temp=22+((value-reference_voltage)/4);//温度校正函数returntemp;}二、重点代码解析---传感器编程(5)CC2530单片机内部有温度传感器,使用该温度传感器的步骤:①使能温度传感器;②连接温度传感器到ADC。然后,就可以初始化ADC,确定参考电压、分辨率等,最后启动ADC读取温度数据即可。上述函数中有个温度数据的校正,不是很准确,CC2530自带的温度传感器校正比较麻烦,读者可以暂不考虑温度的校正,只需要掌握传感器和ZigBee协议栈的接口方式。此时,温度读取函数就写好了,只需要在Enddevice.c函数中调用该函数读取温度数据,然后发送即可。

二、重点代码解析---终端节点编程UINT16GenericApp_ProcessEvent(bytetask_id,UINT16events){afIncomingMSGPacket_t*MSGpkt;if(events&SYS_EVENT_MSG){。。。}

if(events&SEND_DATA_EVENT){GenericApp_SendTheMessage();osal_start_timerEx(GenericApp_TaskID,SEND_DATA_EVENT,1000);return(events^SEND_DATA_EVENT);}return0;}二、重点代码解析---终端节点编程voidGenericApp_SendTheMessage(void){uint8tvalue;TEMPERATUREtemperature;temperature.BUF.Head='&';tvalue=readTemp();temperature.BUF.value[0]=tvalue/10+'0';temperature.BUF.value[1]=tvalue%10+'0';temperature.BUF.Tail='C';afAddrType_tmy_DstAddr;my_DstAddr.addrMode=(afAddrMode_t)Addr16Bit;my_DstAddr.endPoint=GENERICAPP_ENDPOINT;my_DstAddr.addr.shortAddr=0x0000;AF_DataRequest(&my_DstAddr,&GenericApp_epDesc,GENERICAPP_CLUSTERID,sizeof(temperature),(uint8*)&temperature,&GenericApp_Trans

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论