基于ZigBee温湿度采集系统_第1页
基于ZigBee温湿度采集系统_第2页
基于ZigBee温湿度采集系统_第3页
基于ZigBee温湿度采集系统_第4页
基于ZigBee温湿度采集系统_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

荆楚理工学院Zigbee技术应用及无线传感器网络课程论文

学院:电子信息工程学院班级:18物联网1班学生姓名:李梓萌学号:2018401030133论文题目:基于Zigbee温湿度采集系统完成日期:2021年6月16日指导教师评语:成绩(五级记分制):教师签名:

摘要:一般而言,无线传感器网络具有采集点众多,分布面积广的有点,本设计基于ZigBee技术,结合TI

z-stack无线传感协议,实现对温湿度等物理量的检测。将温湿度传感器DHT11采集来的数据,通CC2530做数据处理并利用ZigBee的无线发送模块,将温湿度信息发送出去。经过ZigBee接收模块接收数据,再通过CC2530做数据处理,将温度信息通过显示屏显示出来,从而完成对温湿度的无线采集。关键词:ZigBee;无线温湿度采集;CC2530;系统硬件设计系统整体介绍本设计所实现的无线温湿度采集系统以CC2530为核心,通过温度传感器DHT11、单片机、Zigbee无线模块,完成对温度的采集与显示。首先利用温湿度采集系统完成温湿度的采集,然后利用数据转换模块完成了I/O口数据与串口数据的转换,再通过无线发送与接收模块完成数据的无线发、收,最终通过温湿度显示模块完成了显示温湿度传感器所采集的温湿度值。系统框图如下所示:CC2530芯片CC2530芯片DHT11采集温湿度ZigBee发送模块CC2530芯片ZigBee接收模块PC显示温湿度图1-1温湿度采集系统框图传感器DHT11温湿度采集DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式存在OTP内存中,传感器内部在检测型号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗.技术参数供电电压:3.3~5.5VDC输出:单总线数字信号测量范围:湿度20-90%RH,温度0~50℃测量精度:湿度+-5%RH,温度+-2℃分辨率:湿度1%RH,温度1℃互换性:可完全互换,长期稳定性:<±1%RH/年特性相对湿度和温度测量全部校准,数字输出卓越的长期稳定性无需额外部件超长的信号传输距离超低能耗4引脚安装完全互换电气特性VDD=5V,T=25℃,除非特殊标注参数条件mintypmax单位供电DC355.5V供电电流测量0.52.5mA平均0.21mA待机100150uA采样周期秒1次1.2.4引脚说明Pin名称注释1VDD供电3-5.5VDC2DATA串行数据,单总线3NC空脚,请悬空4GND接地,电源负极图1-2DHT11引脚ZigBee协议ZigBee概述ZigBee一词来源于蜜蜂赖以生存的通信方式Zigzag形状的舞蹈,是一种低成本、低功耗的近距离无线组网通信技术。ZigBee协议是基于IEEE802.15.4标准的,由IEEE802.15.4和ZigBee联盟共同制定。IEEE802.15.4工作组制定ZigBee协议的物理层(PHY)和媒体访问控制层(MAC层)协议。ZigBee联盟成立用于2002年,定义了ZigBee协议的网络层(NWK)、应用层(APL)和安全服务规范。ZigBee协议由物理层(PHY)、介质访问控制子层(MAC)、网络层(NWK),应用层(APL)及安全服务提供层(SSP)五块内容组成。其中PHY层和MAC层标准由IEEE802.15.4标准定义,MAC层之上的NWK层,APL层及SSP层,由ZigBee联盟的ZigBee标准定义。APL层由应用支持层(APS),应用框架(AF)以及ZigBee设备对象(ZDO)及ZDO管理平台组成。PHY层定义了无线射频应该具备的特征,提供了868MHz-868.6MHz、902MHz-928MHz和2400MHz-24835MHz三种不同的频段,分别支持20kbps、40kbps和250kbps的传输速率,1个、10个以及16个不同的信道Ⅲ。ZigBee的传输距离与输出功率和环境参数有关,一般为10~100米之间。PHY层提供两种服务:PHY层数据服务和PHY层管理服务,PHY层数据服务是通过无线信道发送和接收物理层协议数据单元(PPDU),PHYMAC层使用CSMA-CA冲突避免机制对无线信道访问进行控制,负责物理相邻设备问的可靠链接,支持关联(Association)和退出关联(Disassociation)以及MAC层安全。MAC层提供两种服务:MAC层数据服务和MAC层管理服务,MAC层数据服务通过物理层数据服务发送和接收MAC层协议数据单元(MPDU)。MAC层的主要功能是:进行信标管理、信道接入、保证时隙(GTS)管理、帧确认应答帧传送、连接和断开连接。NWK层提供网络节点地址分配,组网管理,消息路由,路径发现及维护等功能。NWK层主要是为了确保正确地操作IEEE802.15.4.2003MAC子层和为应用层提供服务接口。NWK层从概念上包括两个服务实体:数据服务实体和管理服务实体。NWK层的责任主要包括加入和离开一个网络用到的机制、应用帧安全机制和他们的目的地路由帧机制,ZigBee协调器的网络层还负责建立一个新的网络。ZigBee应用层包括应用支持子层(APS子层)、应用框架(AF)和ZigBee设备对象(ZDO)。APS子层负责建立和维护绑定表,绑定表主要根据设备之间的服务和他们的需求使设备相互配对。ZigBee的应用框架(AF)为各个用户自定义的应用对象提供了模板式的活动空间,并提供了键值对(KVP)服务和报文(MSG)服务供应用对象的数据传输使用。一个设备允许最多240个用户自定义应用对象,分别指定在端点l至端点240上。ZDO可以看成是指配到端点O上的一个特殊的应用对象,被所有ZigBee设备包含,是所有用户自定义的应用对象调用的一个功能集,包括网络角色管理,绑定管理,安全管理等。ZDO负责定义设备在网络中的角色(例如是ZigBee协调器或者ZigBee终端设备)、发现设备和决定他们提供哪种应用服务,发现或响应绑定请求,在网络设备之间建立可靠的关联。安全服务提供者SSP(SecurityServiceProvider)向NWK层和APS层提供安全服务。ZigBee协议层与层之间是通过原语进行信息的交换和应答的。大多数层都向上层提供数据和管理两种服务接口,数据SAP(ServiceAccessPoint)和管理SAP(ServiceAccessPoint)。数据服务接口的目标是向上层提供所需的常规数据服务,管理服务接口的目标是向上层提供访问内部层参数、配置和管理数据的机制。ZigBee网络基础ZigBee网络基础主要包括设备类型,拓扑结构和路由方式三方面的内容,ZigBee标准规定的网络节点分为协调器(Coordinator)、路由器(Router)和终端节点(EndDevice)。节点类型是网络层的概念,反映了网络的拓扑形式。ZigBee网络具有三种拓扑形式:星型拓扑、树型拓扑、网状拓扑。ZigBee工作模式ZigBee网络的工作模式可以分为信标(Beacon)模式和非信标(Non-beacon)模式两种。信标模式可以实现网络中所有设备的同步工作和同步休眠,以达到最大限度地节省功耗,而非信标模式只允许ZE进行周期性休眠,协调器和所有路由器设备长期处于工作状态。在信标模式下,协调器负责以一定的间隔时间(一般在15ms--4mins之间)向网络广播信标帧,两个信标帧发送间隔之间有16个相同的时槽,这些时槽分为网络休眠区和网络活动区两个部分,消息只能在网络活动区的各个时槽内发送。非信标模式下,ZigBee标准采用父节点为子节点缓存数据,终端节点主动向其父节点提取数据的机制,实现终端节点的周期性(周期可设置)休眠。网络中所有的父节点需要为自己的子节点缓存数据帧,所有子节点的大多数时间都处于休眠状态,周期性的醒来与父节点握手以确认自己仍处于网络中,并向父节点提取数据,其从休眠模式转入数据传输模式一般只需要15ms。1.3.4ZigBee无线组网及数据通信ZigBee通信协议采用分层结构,节点通过在不同层上的特定服务来完成所要执行的各种任务。本系统采用TI提供的ZigBee2006协议栈Z-Stack,在IEEE802.15.4标准物理层(PHY)和媒体访问控制层(MAC)基础上增加了网络层、应用层和安全服务规范,是一种较好的无线传感网络组建方案。ZigBee设备类型按网络功能分为三种:协调器、路由器、终端。由于本系统采用星型网络拓扑结构,所以只存在协调器和终端两种设备。本系统中主节点被初始化为网络协调器。协调器包含所有的网络消息,存储容量最大、计算能力最强。它的功能是发送网络信标、建立网络、管理网络节点、存储网络节点信息、收发信息。从节点被初始化为无信标网络中的终端设备。上电复位后,即开始搜索指定信道上的网络协调器,并发出连接请求。建立连接成功后,数据从括从节点编号,CC2530的I/O口编号以及此温度传感器的编号,后2个字节为温度采集数据。主节点收到数据包后,对数据进行分析处理,把从节点上的温度传感器的数据采集值进行转换,得到实际的温度值,然后发送给上温度显示部分。CC2530芯片1.4.1CC2530概述CC2530是一颗真正的系统芯片(SoC)CMOS解决方案。这种解决方案能够提高性能并满足以ZigBee为基础的2.4GHzISM波段应用,及对低成本,低功耗的要求。它结合一个高性能2.4GHzDSSS(直接序列扩频)射CC2530包括了1个高性能的2.4GHzDSSS(直接序列扩频)射频收发器核心和1个8051控制器,它具有32/64/128kB可选择的编程闪存和8kB的RAM,还包括ADC、定时器、睡眠模式定时器、上电复位电路、掉电检测电路和21个可编程I/O引脚,这样很容易实现通信模块的小型化。CC2530是一款功耗相当低的单片机,功耗模式3下电流消耗仅0.2μA,在32k晶体时钟下运行,电流消耗小于1μA。1.4.2CC2530芯片的主要特点CC2530芯片延用了以往CC2420芯片的架构,在单个芯片上整合了ZigBee射频(RF)前端、内存和微控制器。它使用1个8位MCU(8051),具有128KB可编程闪存和8KB的RAM,还包含模拟数字转换器(ADC)、几个定时器(Timer)、AES128协同处理器、看门狗定时器(Watchdogtimer)、32kHz晶振的休眠模式定时器、上电复位电路(PowerOnReset)、掉电检测电路(Brownoutdetection),以及21个可编程I/O引脚。CC2530芯片采用0.18μmCMOS工艺生产;在接收和发射模式下,电流损耗分别低于27mA或25mA。CC2530的休眠模式和转换到主动模式的超短时间的特性,特别适合那些要求电池寿命非常长的应用。主程序设计2.1软件设计流程图结束数据处理结束数据处理接受完成?否A/D转换是/D转换否A/D转换是/D转换CC2530无线接收是/D转换是/D转换否A/D转换发射完成?无线发射模块数据采集CC2530开始初始化否A/D转换2-1软件设计流程图2.2程序设计与编写zigbee硬件里面的程序大部分是在IAR环境下完成编译调试的。发送部分:DHT11:#include<ioCC2530.h>#include"DHT11.h"#include"basic.h"#include"DS18B20.h"//温湿度定义ucharucharFLAG,uchartemp;ucharshidu_shi,shidu_ge,wendu_shi,wendu_ge;ucharucharT_data_H,ucharT_data_L,ucharRH_data_H,ucharRH_data_L,ucharcheckdata;ucharucharT_data_H_temp,ucharT_data_L_temp,ucharRH_data_H_temp,ucharRH_data_L_temp,ucharcheckdata_temp;ucharucharcomdata;/***********************温湿度传感***********************/voidCOM(void) //温湿写入{uchari;for(i=0;i<8;i++){ucharFLAG=2;while((!wenshi)&&ucharFLAG++);//firstly,waitthebusishighDelay_nus(30);//Delay_10us();//Delay_10us();//Delay_10us();//waitfor30us,decidewhetherishighorlowuchartemp=0;if(wenshi)uchartemp=1;//after30us,ifitishigh,thencanreadthe'1'ucharFLAG=2;while((wenshi)&&ucharFLAG++);//thenwaitthebusislowif(ucharFLAG==1)break;ucharcomdata<<=1;ucharcomdata|=uchartemp;}}voidDHT11_TEST(void)//温湿传感启动{P1DIR|=0x02;wenshi=0;//Delay_ms(20);//>18MSDelay_nus(20000);P1DIR&=~0x02;//重新配置IO口方向//Delay_10us();//Delay_10us(); //Delay_10us();//Delay_10us();//thebusishighfor40usDelay_nus(40);if(!wenshi)//theDHTisresponsefor80us{ucharFLAG=2;while((!wenshi)&&ucharFLAG++);//waittheweishiishighucharFLAG=2;while((wenshi)&&ucharFLAG++);//waittheweishiislow,thencanstartitCOM();ucharRH_data_H_temp=ucharcomdata;COM();ucharRH_data_L_temp=ucharcomdata;COM();ucharT_data_H_temp=ucharcomdata;COM();ucharT_data_L_temp=ucharcomdata;COM();ucharcheckdata_temp=ucharcomdata;wenshi=1;uchartemp=(ucharT_data_H_temp+ucharT_data_L_temp+ucharRH_data_H_temp+ucharRH_data_L_temp);//P0DIR&=~0x01;//重新配置IO口方向//wenshi=1;if(uchartemp==ucharcheckdata_temp){ucharRH_data_H=ucharRH_data_H_temp;ucharRH_data_L=ucharRH_data_L_temp;ucharT_data_H=ucharT_data_H_temp;ucharT_data_L=ucharT_data_L_temp;ucharcheckdata=ucharcheckdata_temp;}wendu_shi=ucharT_data_H/10+0x30;wendu_ge=ucharT_data_H%10+0x30; shidu_shi=ucharRH_data_H/10+0x30;shidu_ge=ucharRH_data_H%10+0x30;}else//没用成功读取,返回0{wendu_shi=0;wendu_ge=0; shidu_shi=0;shidu_ge=0;}P1DIR&=~0x02;//重新配置IO口方向//wenshi=1;}/*****************************************************************************此程序为发送模块程序实验操作:上电每隔一段时间向地址为RECEIVE_ADDR=0x1515的模块发送数据pTxData[APP_PAYLOAD_LENGTH],数据长度通过修改APP_PAYLOAD_LENGTH值来改变,数据值通过修改pTxData数组里的数据实现,发送时间间隔通过改变延时时间来实现。*****************************************************************************///INCLUDES//#include<hal_assert.h>#include<hal_board.h>#include<hal_int.h>#include"hal_mcu.h"#include"hal_rf.h"#include"basic_rf.h"/***********************************************/#include<ioCC2530.h>#include<string.h>#include"DHT11.h"#include"basic.h"/******************************************//************************************************************************************CONSTANTS*///Applicationparameters#defineRF_CHANNEL25//2.4GHzRFchannel#definePAN_ID0x2007#defineSEND_ADDR0x1520//发送模块地址#defineRECEIVE_ADDR0xBEEF//接收模块地址#defineAPP_PAYLOAD_LENGTH5//数据长度/************************************************************************************LOCALVARIABLES*/staticuint8pTxData[APP_PAYLOAD_LENGTH];staticbasicRfCfg_tbasicRfConfig;uint16count=0;voidmain(void){//ConfigbasicRFbasicRfConfig.panId=PAN_ID;basicRfConfig.channel=RF_CHANNEL;basicRfConfig.ackRequest=TRUE;basicRfConfig.myAddr=SEND_ADDR;//设定本机地址halBoardInit();//初始化单片机Initial_IO2();//初始化IOif(halRfInit()==FAILED){HAL_ASSERT(FALSE);}if(basicRfInit(&basicRfConfig)==FAILED){HAL_ASSERT(FALSE);}basicRfReceiveOff();//关接收,省电while(1){if(++count>2540)//计时参数,时间到{DHT11_TEST();pTxData[0]=wendu_shi;//装载第1个数据pTxData[1]=wendu_ge;//装载第2个数据pTxData[2]=shidu_shi;//装载第3个数据pTxData[3]=shidu_ge;//装载第4个数据pTxData[4]=0x30;//装载第5个数据count=0;basicRfSendPacket(RECEIVE_ADDR,pTxData,APP_PAYLOAD_LENGTH);//发送数据halIntOff();//PutMCUtosleep.halMcuSetLowPowerMode(HAL_MCU_LPM_3);//WillturnonglobalhalIntOn();//interruptenable}halMcuWaitMs(1);//延时1毫秒}}接收部分:串口:#include<ioCC2530.h>#include<string.h>#include"UART.h"#include"basic.h"/****************************************************************串口初始化函数***********************************************************/voidInitUart(){PERCFG&=~0x01;//UART0:位置1P0口P0SEL|=0x0c;//P0_2,P0_3用作串口,第二功能P2DIR&=~0XC0;//P0优先作为UART0,优先级U0CSR|=0x80;//UART方式U0GCR|=11;//U0GCR与U0BAUD配合U0BAUD|=216;//波特率设为115200UTX0IF=0;//UART0TX中断标志初始置位1(收发时候)}/****************************************************************串口发送函数****************************************************************/voidSend_char(ucharc){U0DBUF=c;while(UTX0IF==0);//发送完成标志位UTX0IF=0;}/****************************************************************串口发送字符串函数 ****************************************************************/voidUartTX_Send_String(char*Data,intlen){intj;for(j=0;j<len;j++){U0DBUF=*Data++;while(UTX0IF==0);UTX0IF=0;}U0DBUF=0x0A;//换行while(UTX0IF==0);UTX0IF=0;}此程序为接收模块程序模块上电设定本机地址为RECEIVE_ADDR=0x1515,当检测到有其他模块向本地址发送数据,进入到数据接收函数,把数据保存在寄存器Receive_Data_buffer中,并通过串口程序向PC端发送数据***********************************************************************************///INCLUDES//#include<hal_assert.h>#include<hal_board.h>#include<hal_int.h>#include"hal_mcu.h"#include"hal_rf.h"#include"basic_rf.h"#include"JLX12864.h"/********************************************************************/#include<ioCC2530.h>#include<string.h>#include"basic.h"#include"UART.h"/********************************************************************//************************************************************************************CONSTANTS*///Applicationparameters#defineRF_CHANNEL25//2.4GHzRFchannel#definePAN_ID0x2007#defineSEND_ADDR0x1520//发送模块地址#defineRECEIVE_ADDR0xBEEF//接收模块地址#defineAPP_PAYLOAD_LENGTH5//数据长度/************************************************************************************LOCALVARIABLES*/staticuint8pRxData[APP_PAYLOAD_LENGTH];staticbasicRfCfg_tbasicRfConfig;uint16Data_count=0;uint8Data_receive=0;uint8Receive_Data_buffer[APP_PAYLOAD_LENGTH];voidLCD_display(){LCD_disp_char(2,1,pRxData[1]);//显示接收到的第2个数据LCD_disp_int(4,1,Data_count);}voidmain(void){uint8i=0;//ConfigbasicRFbasicRfConfig.panId=PAN_ID;basicRfConfig.channel=RF_CHANNEL;basicRfConfig.ackRequest=TRUE;basicRfConfig.myAddr=RECEIVE_ADDR;//设定本机地址halBoardInit();//初始化单片机/***********************************************/Initial_IO();InitUart();/**********************************************/if(halRfInit()==FAILED){HAL_ASSERT(FALSE);}if(basicRfInit(&basicRfConfig)==FAILED){HAL_ASSERT(FALSE);}basicRfReceiveOn();//开接收while(1){if(basicRfPacketIsReady()){//receivedataif(basicRfReceive(pRxData,APP_PAYLOAD_LENGTH,NULL)>0){for(i=0;i<APP_PAYLOAD_LENGTH;i++){Receive_Data_buffer[i]=pRxData[i];//保存数据}UartTX_Send_String("wendu:",6);Send_char(Receive_Data_buffer[0]);Send_char(Receive_Data_buffer[1]);UartTX_Send_String("C",3);UartTX_Send_String("shidu:",6);Se

温馨提示

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

评论

0/150

提交评论