基于Zigbee无线温湿度数据采集单元软件设计_第1页
基于Zigbee无线温湿度数据采集单元软件设计_第2页
基于Zigbee无线温湿度数据采集单元软件设计_第3页
基于Zigbee无线温湿度数据采集单元软件设计_第4页
基于Zigbee无线温湿度数据采集单元软件设计_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

本科生毕业设计(论文)基于ZigBee无线温湿度数据采集单元软件设计TheSofewareDesignofTemperatureandHumidityBased-onZigBee总计:19页表格:3个插图:13幅学院(系):电子与电气工程系 专业:电子信息工程[摘要]本文设计中ZigBee协议的实现,采用包含51单片机内核的CC2430来实现,在开发环境用C语言实现对CC2430的编程。温湿度数据采集,采用数字式SHT11通过总线对温湿度数据采集的编程实现。通过对CC2430软件设计,实现温湿度数据在ZigBee网络中传输集中到PC中进行显示和处理。[关键字]ZigBee;传感器网络;温湿度传感器;无线传输TheSofewareDesignofTemperatureandHumidityBased-onZigBeeAbstract:Inthispaper,thedesignoftherealizationofZigBeeprotocolusedincluded51oftheCC2430single-chipcoretoachieve,inthedevelopmentenvironmentusingClanguageprogrammingoftheCC2430.Temperatureandhumiditydataacquisition,throughtheuseofdigitalSHT11busdataacquisitionoftemperatureandhumidityoftheprogramming.

CC2430throughsoftwaredesign,therealizationoftemperatureandhumiditydatatransmissionintheZigBeenetworkconcentratedinthePCdisplayandprocessing.KeyWords:ZigBee;sensornetwork;temperatureandhumiditysensor;wirelesstransmission目录1引言 11.1无线传输技术的发展 11.2温湿度数据采集系统 11.3软件设计的主要工作 21.4论文的基本结构 22ZigBee网络节点的软件设计 32.1ZigBee技术的由来 32.2ZigBee技术特点 32.3ZigBee协议标准 42.3.1网络层概况 52.3.2物理层规范 62.3.3MAC层规范 62.4网络节点的软件设计 73温湿度数据采集单元的软件设计 93.1数字式温湿度传感器SHT11 93.2工作原理 113.3温湿度系统软件流程 143.4温湿度数据系统软件设计 154串口通信的软件设计 165软件的开发与调试 175.1开发环境与编程语言 175.2软件调试 19结束语 19参考文献 20附录 21致谢 261引言1.1无线传输技术的发展随着科学技术的发展,无线技术逐步取代有线技术,仅支持静态固定拓扑的无线网络也逐渐被支持动态变化拓扑的无线网络所取代。在短距离无线控制、监测、数据传输领域,通用的技术有IEEE802.11、蓝牙、红外等。它们虽然各有优势,但是存在功耗大、组网能力差等劣势。为弥补它们的不足,ZigBee联盟于2004年推出了基于IEEE802.15.4的ZigBee技术。(1)蓝牙技术(Bluetooth)蓝牙技术是一种无线数据与语音通信的开放性全球规范,目的是取代数据电缆,实现多种电子设备之间的低功耗、低成本、短距离的无线连接。其传输频段为全球通用的2.4GHzISM频段,采用1600MHz的快速跳频扩频技术,传输速率为1MB/s,具有很强的抗干扰能力。其标准有效传输距离为lOm,放大器可将传输距离增加到100m。(2)红外技术(IRDA)IRDA是一种利用红外线进行点对点通信的技术,是第一个实现无线个人局域网(WPAN)的技术。目前,它的软硬件技术都很成熟,在小型移动设备,如PDA(PersonalDigitalAssistant,掌上电脑)、手机上广泛使用。其lm内通信速率已达到16MB/s,采用4PPM(PulsePositionModulation,脉冲位置调制)调制方式,适合于传输容量大的数据文件和多媒体数据流。另外,由于红外线发射角小,因此在物理传输上具有一定的安全性。可应用于工业测控网络的互连,为工业移动测试和传输提供优良的手段。(3)WiFi技术WiFi(WirelessFidelity)无线高保真技术是IEEE802.11标准的统称,其最高速率(IEEE802.11g)可达54MB/s,符合测试系统和个人信息化的需求。虽然在数据安全方面比蓝牙技术要差一些,但在电波的覆盖范围方面却较强,可达100m左右。(4)UWB技术UWB是一种高速、低成本和低功耗的新兴无线通信技术,通常指信号带宽大于500MHZ或者是信号带宽与中心频率之比大于25%,其传输速率在100--480MB之间,理论上可达1GB以上。UWB工作频段为3.1~10.6GHz,信号的传输范围一般在10m以内,采用OFDM(orthogonalfrequencydivisionmultiplexing,正交频分多路复用)调制方式,完全摆脱了一般无线收发中必须采用载波调制的传统手段,成为在时域中可直接操作的线技术。1.2温湿度数据采集系统本文主要研究在基于ZigBee的协议的基础上,实现温湿度数据的采集,然后把数据传输给上位机来显示和处理。首先,此系统包括ZigBee网络节点的程序设计,温湿度数据采集的程序设计,串口通信的程序设计。明白了我们需要的设计的模块的基础上,根据系统要实现的功能,给出了如图1所示的系统设计框图:图1系统整体设计硬件框图图1系统整体设计框图ZigBee网络节点的设计采用CC2430芯片,此产品可以实现我们需要的ZigBee传输协议;温湿度数据采集电路设计采用SHT11芯片,这种芯片是一种全数字式的芯片,具有数字式输出、免调试、免标定、免外围电路及全互换的特定,在实际应用中非常方便;串口设计采用RS-232通信标准,实现数据的接收和传送;编写以上各个模块的程序,实现系统的整体功能。1.3软件设计的主要工作本文的设计目标是通过若干个终端测量节点,搭建一个ZigBee网络。进行数据采集,然后进行数据传输。主要工作如下在:(1)熟悉ZigBee技术发展的历史和技术特点。(2)设计软件流程,主要包括实现ZigBee传输协议的程序,温湿度数据采集的程序设计,串口通信的程序设计。(3)在程序编写正确的情况下,利用IAREmbededWorkbenchIDE开发环境,调试程序,并观察结果。1.4论文的基本结构本文的结构大致分为四部分:第一章:引言。该章介绍了无线通信技术的特点并进行了比较,在其基础上阐述了本设计的主要研究方向,最后对本文的工作做了提纲性的简介。第二章:介绍了ZigBee技术的特点和协议标准,并在其基础上进行网络节点的软件设计。第三章:介绍软件设计的工作原理,并在此基础上编写温湿度数据采集程序,介绍数据的流程图和整个系统的工作流程图。第四章:进行串口通信的软件设计,介绍串口通信流程图。第五章:软件的开发和调试,这章阐述了在IAREmbededWorkbenchIDE开发平台上调试编写程序的具体环节。2ZigBee网络节点的软件设计2.1ZigBee技术的由来ZigBee一个由可多到65000个无线数据传输模块组成的一个无线数据传输网络平台,十分类似现有的移动通信的CDMA网或GSM每一个ZigBee无线数据传输模块类似移动网络的一个基站,在整个网络范围内,它们之间可以进行相互通信;每个网络节点间的距离可以从标准的75米,到扩展后的几百米,甚至几公里:另外整个21个网络还可以与现有的其它的各种网络连接.例如,你可以通过互联网在北京监控云南某地的一个ZigBee控制网络。不同的是,ZigBee网络主要是为自动化控制数据传输而建立,而移动通信网主要是为语音通信而建立:每个移动基站价值一般都在百万元人民币以上,而每个ZigBee基站却不到1000元人民币;每个ZigBee网络节点不仅本身可以与监控对一一配对,例如传感器连接直接进行数据采集和监控,它还可以自动中转别的网络节点传过来的数据资料;除此之外,每一个ZigBee网络节点(FFD)还可在自己信号覆盖的范围内,和多个不承担网络信息中转任务的孤立的子节点(RFD)无线连接。每个ZigBee网络节点(FD和FRD)可以可支持多到13个的传感器和受控设备,每一个传感器和受控设备终可以有8种不同的接口方式。可以采集和传输数字量和模拟量。2.2ZigBee技术特点(1)省电:ZigBee传输速率低,使其传输资料量亦少,所以讯号的收发时间短,其次在非工作模式时,ZigBee处于睡眠模式,而在工作与睡眠模式之间的转换时间,一般睡眠启动时间只有15ms,而设备搜索时间为30ms。透过上述方式,使得ZigBee十分省电,透过电池则可支援ZigBee长达6个月到2年左右的使用时间。(2)可靠度高:ZigBee的MAC层采用talk-when-ready的碰撞避免机制,此机制为当有资料传送需求时则立即传送,每个发送的资料封包都由接收方确认收到,并进行确认讯息回覆,若没有得到确认讯息的回覆就表示发生了碰撞,将再传一次,以此方式大幅提高系统资讯传输的可靠度,另外ZigBee提供了数据完整性检验和鉴权功能。(3)安全性高:ZigBee加密算法采用了AES-128,同时各个应用程序可以灵活确定其安全属性。ZigBee联盟还开发了安全层,以保证这种设备不会意外泄漏其标识,而且这种利用网络的远距离传输不会被其它节点获得。(4)高度扩充性:一个ZigBee的网络最多包括有255个ZigBee网络节点,其中一个是Master设备,其余则是Slave设备。若是透过NetworkCoordinator:则整体网络最多可达到6500个ZigBee网络节点,再加上各个NetWorkCoordinator可互相连接,整体ZigBee网路节点数目将十分可观。(5)成本低廉:目前,ZigBee芯片的成本大约在3美元左右,ZigBee设备成本的目标是要在1美元以下。而且ZigBee芯片的体积较小,如Freescal公司生产Mc13192ZigBee收发芯片的体积为5mm*5mm,随着半导体集成技术的发展,ZigBee芯片的体积将会变得更小,成本也会降得更低。2.3ZigBee协议标准ZigBee技术是一组基于IEEE802.15.4无线标准研制开发的、有关组网、安全和应用软件方面的技术,IEEE802.15.4仅处理物理层(PHYLayer)和介质访问控制层(MediaAccessControlLayer,MACLayer),ZigBee联盟制定了网络层(NetworkLayer)、安全层(SecurityLayer)、应用层(ApplicationLayer)、高层应用规范(API)以及各种应用产品的资料(Profile)。整个协议架构如图2所示。ZigBee协议中明确定义了三种拓扑结构:星型(Star)、簇状(Cluster)和网状(Mesh)结构。协议定义了两种相互配合使用的物理设备,全功能设备(FFD,Full-functionDevice)和精简功能设备(RFD,Reduced-functionDevice)。与RFD相比,FFD在硬件功能上比较完备,在通信能力上FFD可以与所有其他FFD或RFD之间通信,而RFD只能和与其关联的FFD通信。与RFD相关联的FFD设备称为该RFD的协调器(Coordinator)。ZigBee网络需要至少一个FFD作为网络协调器(PANCoordinator)。网络协调器除直接参与应用外,还需要完成成员身份管理、链路状态信息管理以及分组转发等任务。终端节点(RFD)一般使用削减功能设备来降低系统成本和功耗,提高电池使用寿命。另外所有设备必须使用一个64位的IEEE地址,可以使用16位短地址来减少数据包大小,其寻址模式可以为网络增加设备标识符的星型结构,以及源和目标标识符的点到点结构两种。所有节点之间互相连接称为全网状结构(FullMesh),不是所有的节点都和每个别的节点相连则称为部分网状结构。部分网状结构的主要好处就是每个节点的范围被成倍地扩大了。大部分短距无线技术都有一个典型的最大范围:10米或更短。但是部分网状结构没有最大通信距离的限制,因为其所有的节点都被用作中继器或路由器。图2协议结构图2.3.1网络层概况ZigBee网络层的主要功能就是提供一些必要的函数,确保ZigBee的层的正常工作,并且为应用层提供合适的服务接口。为了向应用层提供接口,网络层提供了两个必须的功能服务实体,它们分别为数据服务实体和管理服务实体。网络层数据实体(NLDE)通过网络层数据实体服务接入点(NLDE-SAP)提供数据传输服务,网络层管理实体(NLME)通过网络层管理实体服务接入点(NLME-SAP)提供网络管理服务。网络层管理实体利用网络层数据实体完成一些网络管理工作,并且,网络层管理实体完成对网络信息库扭(NIB)的维护和管理。网络层数据实体为数据提供服务,在两个或者更多的设备之间传送数据,将按照应用协议数据单元(APDU)的格式进行传送,并且这些设备必须在同一各网络中,即在同一内部个域网中。网络层数据实体提供如服务:(1)生成网络层协议数据单元(NPDU),网络层数据实体通过增加一个适当的协议头,从应用支持层协议数据单元中生成网络层的协议数据单元。(2)指定拓扑传输路由,网络层数据实体能够发送一个网络层的协议数据单元到一个合适的设备,该设备可能是最终目的通信设备,也可能是在通信链路中的一个中间通信设备。2.3.2物理层规范在IEEE802.15.4标准协议中,规定了2.4GHz物理层的数据传输速率250kbps.在2.4GHz物理层,ZigBee技术采用16相位准正交调制技术。在调制前,将数据信号进行转换处理,将信息按每4位信息比特进行处理,每4位信息比特组成一个符号数据,根据该符号数据,从16个几乎正交的伪随机序列(PN序列)中,选取其中一个序列作为传送序列。根据所发送连续的数据信息,将所选出的PN序列串接起来,并使用O-QPSK的调制方法,将这些集合在一起的序列调制到载波上。图3的各功能模块为2.4GHz物理层扩展调制方式的参考模块。图3扩展调制功能2.3.3MAC层规范MAC层处理所有物理层无线信道接入,其主要功能为:(1)网络协调器产生网络信标与信标同步;(2)支持个域网(PAN)链路的建立和断开;(3)为设备的安全性提供支持;(4)信道接入方式采用免冲突载波检测多址接入(CSMA/CA)机制;(5)处理和维护保护时隙(GTS)机制;(6)在两个对等的MAC实体之间提供一个可靠的通信链路。MAC层在服务规范协议汇聚层(SSCS)和物理层之间提供了一个接口。从概念上说,MAC层包括一个管理实体,通常称为MAC管理实体(MLME),该实体提供了一个服务接口,通过此接口可调用MAC层管理功能。同时,该管理层还负责维护MAC层固有地管理对象地数据库。该数据库包含了MAC层地个域网络信息数据库(PIB)信息。在ZigBee网络拓扑结构中,最基本的结构单元是设备,这个设备可以是一个RFD也可以是一个FFD;在同一个物理信道的POS(个人工作范围)通信范围内,两个或两个以上的设备就可以构成一个WPAN。但是,在一个网络中至少要求一个FFD作为PAN协调器。LR-WPAN属于家庭标准的一部分,其覆盖范围可能超出WPAN所规定的POS范围。对于无线媒体而言,其传播特性具有动态的和不确定的特性,因此,不存在一个精确的覆盖范围,仅仅是位置或方向的一个小小变化都可能导致信号强度或者链路通信质量的巨大变化,无论静止设备,还是移动设备,这些变化都会对无线传播有影响。在MAC层中,MAC层通过它的两个不同的服务接入点为它提供两种不同的MAC层服务,即MAC层通过它的公共部分子层服务接入点为它提供数据服务;通过它的管理实体服务接入点为它提供管理服务。MAC帧结构:通用MAC层帧结构,即MAC层协议数据单元。每一个MAC帧包括几个基本部分如下所列:(1)MAC帧头,包括帧控制、序列号和地址信息.(2)可变长度的MAC载荷,不同的帧类型有不同的载荷.确认帧没有载荷。(3)MAC帧尾,包括帧校验序列。MAC层帧结构由MAC层帧头、MAC载荷和MAC层帧尾组成。2.4网络节点的软件设计CC2430/CC2431的无线接收器是一个低中频的接收器。接收到的射频信号通过低噪声放大器放大而正交降频转换到中频。在中频2MHz中,当ADC模数转换时,输入/正义调相信号被过滤和放大。无线模块具有两个中断向量:RFFERR中断(中断0)和RF中断(中断12)。其功能如下:(1)RFERR:TXFIFO下溢出(TXFIFO空)、RXFIFO上溢出(RXFIFO满);(2)RF:所有其他RF中断由RFIF中断标志给出。注意:这些RF中断均由上升沿触发。RF中断也可以用来触发计数器1。其中在接受模式中,当帧开始定界符SFD全部收到之后,中断标志RFIF。IRQ_SFD置1,而且发出RF中断请求。如果地址识别已经禁止或者已经获得成功,则RFSTATUS。接收期间SFD、FIFO和FIFOP的活动实例如图4所示:图4接收期间SFD、FIFO和FIFOP实例图按照硬件电路设计,系统软件编程的基本思路是先对SPI端口、CC2430控制端口初始化;使能SPI端口、UART端口和ADC;对CC2430芯片初始化;开启接收机后,就可以运行任务程序,实现接收或发送数据。接收和发送程序流程图如图5和图6所示。图5接收数据流程图接收温湿度数据子程序的流程如图5所示,实现对无线温湿度数据的接收。首先对无线收发模块进行初始化,设置系统的通讯频率及本地地址以后,打开无线接收,等待接收温湿度数据。上电开始接收温湿度信息,查看数据是否溢出,如果是的话就返回,重新等待接收数据。如果没有发现数据溢出,就读入数据的包长度,与最小包长进行比较,如果比最小包长小就调用接收函数处理数据。如果大于最小包长,就读入接收数据的控制位,此时等待确认字符(ACK)回发,发回数据通知接收成功。如果没有,此时正在接收其它数据,就调用接收函数处理数据,然后返回。整个接收数据的过程结束。发送数据流程如图6所示,在发送数据之前先要对系统进行初始化。主程序上电开始,等待CC2430空闲,这时候关闭全局中断,等待接收信号强度指示器(RSSI)有效,下一步要考虑CC2430要发送引导序列,其中包括要发送的数据的长度,以及定位要发送数据的目的地址等,向CC2430写入数据包内容,等待CC2430发送完毕。如果需要确认字符(ACK)发回确认信息,就等待回发,然后返回,如果不需要就返回。这时候整个发送数据的过程结束。关闭全局中断向关闭全局中断向CC2430写入数据包内容等待RSSI有效使能CC2430发送引导序列等待CC2430空闲等待CC2430发送完毕是否需要ACK回发等待ACK发回返回开始图6发送数据流程图3温湿度数据采集单元的软件设计3.1数字式温湿度传感器SHT11SHT11是个芯片,它由标准数字输出的湿度和温度传感器模块组成。先定做后加工的CMOS应用程序确保高度的可靠性和稳定性。该芯片包括两个已校准的微型温度和湿度传感器,14位的A/D转换器,放大器,线性校准电路和数字串行接口。一体化的结构使它具有质量好,反应快,抗干扰,价格低等特点。每一个传感器在精确的湿度室内校准,其校准系数被写到OTP存储器中。两线制的串行接口和内部电压校准使系统一体化,既容易又快捷。它的外形小巧,能耗低,适用于许多行业。如:汽车,仪表,医疗器械,供暖系统,通风设备和空调系统。温湿度传感器由表面安装型的(SHT1x)和四引脚型的(SHT7x).(1)串行数据(DATA)DATA的三态引脚用于芯片的数据输入和输出。DATA在SCK线的下降沿改变,而在上升沿有效。一个外部的上拉电阻将信号提高。上拉电阻器常常包含在微型控制器的I/O电路中。(2)指令序列启动传送应先发出‘传送开始’序列,这个序列是由‘SCK高电平时,DATA为下降沿,在SCK下一个高点平时,DATA为上升沿’组成。图7指令序列图后来的指令序列包括三个地址位(只有000在目前受支持)和五个指令位。如果在第八个SCK时钟下降沿后面,DATA引脚被拉低(ACK位),而第九个SCK时钟下降沿后面,DATA线被拉高,SHT1x则显示指令被接收。(3)连接重新安排序列如果设备间通讯中断,下面的信号序列将重新安排它的串行接口:DATA的高电平要保持9个或更多SCK脉冲,‘传送开始’序列必须在下一个指令之前。这个指令只重新安排接口。状态寄存器保存它原来的内容。图8重新安排序列图(4)检测序列(温度与湿度)发出检测指令后(‘00000101’为湿度,‘00000011’为温度),控制器等待检测完成。检测一个8/12/14位大约用11/55/210ms。准确的时间随着内部振荡器速度的±15%的变化而变化。为了发出检测完成的信号,SHT1x将DATA线拉低,控制器必须重新启动SCK。于是检测数据的两个字节和CRC校验和的一个字节被发送。uC必须通过拉低数据线来承认每一个字节。所有值都是最高有效位MSB在先,(例如:12位精度的最高位位于高字节MSB的第五位)。在CRC数据的承认位的后面通讯结束。如果CRC-8Checksum没有使用,控制器应在检测数据LSB能正确应答所有命令后结束通讯。检测和通讯完成后,设备会自动回到睡眠模式。注意:在0.1℃下要保持加热SHT11。每次检测的前15%或更长时间是无效的。(例如:对12位精度每秒测3次).(5)加热当接通芯片上的加热元件后,传感器温度大约提高了5℃。功率消耗在5V电压下提高8mA。应用:a通过接通传感器前后的温湿度值的变化,它的功能可以得到检验。b在高湿度环境下加热传感器元件可避免冷凝。注意:当传感器加热时,内置校准并不正确。(6)SHT11的特性:工作条件运行条件外的临时偏移量为湿度信号的±3%RH。在回到正常工作条件后,它自动回到校准状态。要加速这个过程,我们推荐下面的再加热程序:90℃at﹤5%RHfor24hfollowedby20—30℃at﹥74%RHfor48h延长曝光或条件恶劣会加速传感器老化。3.2工作原理SHT11的湿度检测运用电容式结构,采用具有不同保护的“微型结构”检测电极系统与聚合物覆盖层来组成传感器芯片的电容,除保持电容式湿敏器件的原有特性外,还可抵御来自外界的影响。由于它将温度传感器与湿度传感器结合在一起而构成了一个单一的个体,因而测量精度较高且可精确得出露点,同时不会产生由于温度与湿度传感器之间随温度梯度变化引起的误差。CMOSensTM技术不仅将温湿度传感器结合在一起,而且还将信号放大器、模/数转换器、校准数据存储器、标准总线等电路全部集成在一个芯片内。SHT11的每一个传感器都是在极为精确的湿度室中校准的。SHT11传感器的校准系数预先存在芯片内存OTP中。经校准的相对湿度和温度传感器与一个14位的A/D转换器相连,可将转换后的数字温湿度值送给二线总线器件,从而将数字信号转换为总线串行数字信号。(1)传输开始初始化传输时,应首先发出“传输开始”命令。该命令它包括:当SCK时钟高电平时DATA翻转为低电平,紧接着SCK变为低电平,随后是在SCK时钟高电平DATA翻转为高电平。接下来的命令顺序:一个地址位“000B”和5个命令位:00011B、00101B、00111B、00110B、11110B。当DATA脚的ack位处于低电位时,表示SHT11正确收到命令。SHT11会以下述方式表示已正确地接收到指令:在第8个SCK时钟的下降沿之后,将DATA下拉为低电平(ACK位),在第9个SCK时钟的下降沿之后,释放DATA(恢复高电平)。SHT11传感器共有5条用户命令,具体命令格式表1:表1SHT11使用指令命令编码说明测量温度00011温度测量测量湿度00101湿度测量读寄存器状态00111“读”状态寄存器写寄存器状态00110“写”状态寄存器软复位11110重启芯片,消除状态记录器的错误记录,11毫秒后进入下个命令(2)通讯复位时序如果与SHT11传感器的通讯中断,下列信号顺序会使串口复位:即当DATA线处于高电平时,触发SCK9次或更多,此后应接着发一个“传输开始”命令。这些时序只复位串口,状态寄存器内容仍然保留。(3)温湿度测量时序当发出了发布一组测量命令(‘00000101B’表示相对湿度RH,‘00000011B’表示温度T)后,控制器就要等待测量完成(使用8/12/14位的分辨率测量分别需要大约11/55/210ms的时间)。为表明测量完成,SHT11会使数据线降为低电平,此时控制器必须重新启动SCK,然后传送两字节的测量数据与1字节CRC校验和。控制器必须通过使DATA为低来确认每一个字节,所有的量均从右算,MSB列于第一位。通讯在确认CRC数据位后停止。如果没有用CRC-8校验和,则控制器就会在测量数据LSB后保持ack为高来停止通讯,SHT11在测量和通讯完成后会自动返回睡眠模式。(4)状态寄存器SHT11传感器中的一些高级功能是通过状态寄存器来实现的,寄存器各位的类型及说明见表2所列。表2是寄存器相关位的功能说明。(5)相对湿度传感器的补偿:a非线性补偿:SHT11输出的相对湿度读数值(N)与被测相对湿度(RH)呈非线性关系.为了获得相对湿度的准确数据,必须对读数值进行非线性补偿。进行12位A/D转换时利用下式可以补偿非线性:对于8位的相对湿度读数值,补偿公式变为:需要指出,以上两式中的N值并不相同。例如,12位数据1000就对应于8位数据62.5()b温度补偿当环境温度25℃时,还需要对相对湿度传感器进行温度补偿,补偿公式为:上式仅对12位的数据适用。对于8位数据,,公式变为表2SHT11寄存器说明位类型说明缺省备注7保留06读低电压检查位,0对应Vdd>2.47,1对应Vdd<2.47X5保留04保留03只用于试验,不可以使用02读/写加热0关1读/写不从OTP加载0加载0读/写1’=8位相对湿度,12位温度分辨率。0’=12位相对湿度,14位湿度分辨率012位相对温度,14位相对湿度(6)温度传感器的补偿温度传感器的读数值M也呈非线性,必须代入下式才能计算出被测温度值T(℃):式中的、均为常数,根据下表可以确定不同情况下的、值如表3所示:表3温湿度数据补偿表电源电压/V温度数据的位数备注+514-400.01采用摄氏温标,额定环境温度=+25℃+512-400.04+314-39.60.01+312-39.60.04+2.514-39.550.01+2.512-39.550.043.3温湿度系统软件流程该系统结构简单、体积小、功耗低,且配有232通讯接口,可以独立编址,因此可以组成现场温湿多点检测系统。在实际应用时,该系统作为温湿检测的终端子系统,通常工作在被动方式下,即由主系统访问,子系统采集数据、上传数据,其工作流程如图9所示。数据采集如图9所示:产生启动序列产生启动序列写地址和控制指令等待转换完成转换数据至摄氏温度/相对湿度读取数据和校验值图9温湿度数据采集流程图每个子系统独立编址,主机访问的指令格式为:同步码+子系统地址+命令码+数据+结束码。子系统接收到指令后,首先进行地址校验,如果是,则按照指令工作,然后返回数据,其格式为:同步码+子系统地址+数据+结束码。图10是应用中的温湿检测点的系统流程图。系统首先在上电的情况下复位,然后温湿度采集系统开始采集温湿度数据,采集完成以后,把数据传给CC2430处理,然后把数据经过数据传输端口传给上位机进行处理,完成这次温湿度数据采集,然后接着开始下一次数据采集。工作流程图如图10所示:上电复位上电复位接收数据地址校验采集温湿度数据地址校验NOYES图10温湿度系统工作流程图3.4温湿度数据系统软件设计对SHT1l的读写程序如下:Unsignedcharwrite_byte(unsignedcharvalue){//写命令并检查ackUnsignedchari;Unsignedcharerror=0;for(i=0x80;i>0;i/=2){If(i&value)SDATA=1;ElseSDATA=0;5SCK=1;nop_();_nop_();_nop_();//宽度约5usSCK=0;}SDATA=1;//释放DATASCK=1;//#9时钟,检查ack信号error=SDATA;//检查ack信号,正常为低压电平SCK=0;Renturnerror;//error=1表示无ack}Unsignedcharread_byte(bitack)//读数据,ack=1检查ack,ack=0不检查ack{Unsignedchari;Unsignedcharval=0;SDATA=1;//释放DATAFor(i=0x80;i>0;i/=2)//shiftbitformasking{SCK=1;//clkforSENSI-BUSIf(SDATA)val=(val|i);//读1bSCK=0;}SDATA=!Ack;//SDATA表示结束传输SCK=1;_nop_();_nop_();_nop_();SCK=0;SDATA=1;//释放DATAReturnval;4串口通信的软件设计RS-232在传送数据时,并不需要另外使用一条传输线来传送同步讯号,就能正确的将数据顺利传送到对方,因此叫做“异步传输”,简称UART(UniversalAsynchronousReceiverTransmitter),不过必须在每一次数据传送的前后都加上同步讯号,把同步讯号与数据混和之后,使用同一条传输线来传输。比如数据11001010被传输时,数据的前后就需加入Start(Low)以及Stop(High)等两个位元,值得注意的是,Start讯号固定为一个位元,但Stop停止位元则可以是1、1.5或者是2位元,由使用RS-232的传送与接收两方面自行选择,但需注意传送与接受两者的选择必须一致。在串行通信软件设置中D/P/S是常规的符号表示。8/N/1(非常普遍)表明8bit数据,没有奇偶校验,1bit停止位。数据位可以设置为7、8或者9,奇偶校验位可以设置为无(N)、奇(O)或者偶(E),奇偶校验位可以使用数据中的位元(bit),所以8/E/1就表示一共8位数据位,其中一位用来做奇偶校验位。停止位可以是1、1.5或者2位的(1.5是用在波特率为60wpm的电传打字机上的)。当程序开始运行时,先初始化串口。然后发送握手信号,如果信号发送成功,则开始把信号传送到主处理芯片,开始信号发送成功,通信开始。如果数据发送成功,会收到主处理芯片的接收应答,表明数据发送成功,结束通信。接收数据则是此逆过程。串口通信流程图如图11所示:图11串口通信流程图5软件的开发与调试5.1开发环境与编程语言系统的软件调试采用IARSystems公司的IAREmbededWorkbenchIDE是一款功能非常强大内部开发环境,允许用户开发、管理完成的嵌入式应用工程。他是一个发展的平台,方便用户在日常的产品开发。IAREmbededWorkbench可以用在大多数8位、16位微控制器上以及32位机上的一小部分。能够提供一个简单易学高效的开发环境和强大的代码移植能力,具有全面和具体的目标调试支持。IAREmbededWorkbench推行一种有用的工作方法,因此显著的减少了开发周期。IAREmbededWorkbenchIDE的内部的各个功能框架都是无缝连接的,它包括:(1)具有高度可选的IARC/C++编译器(2)可使用IAR汇编程序(3)方便灵活的IARXLINK连接器(4)具有IARXAR库构造器和IARXLIB库函数(5)功能强大的编辑器和工程管理器(6)命令行建立应用(7)IARC-SPY调试器,具有到艺术级别的调试能力系统软件采用单片机C/C++语言编写,相对于冗长、复杂、容易出错的汇编语言来说,C可实现模块化编程技术,使得程序有很好的可移植性,而且有更容易开发和调试程序。图12是一个打开工程选项的界面,图13是工程选项页面。在图13的页面中针对CC2430需要设置很多必要的参数。如:GeneralOptions设置:在GeneralOptions->Target选项中Derivative选择为CC2430;在GeneralOptions->Target选项中Datamodel选择为Large;在GeneralOptions->Target选项中Callingcinvention选择为XDATA;在GeneralOptions->Target选项中Stack/heap中的堆栈大小做适当修改。C/C++Compiler设置,Linker设置;Debugger设置等。图12打开工程选项页面图13工程选项页面5.2软件调试系统的软件调试采用IARSystems公司的IAREmbededWorkbenchIDE采用程序分块调试的原则,首先把系统分为系统的主程序模块,Zigbee无线收发的调试,温湿度数据显示程序。对程序进行从局部到全面的调试。以下为系统调试的主要方法:(1)系统软件按照功能划分模块,对各个模块或者子函数逐个单一调试运行,并且检查运行的准确性。(2)额外编写独立的测试子程序单独测试个别子功能模块准确性和合理性。(3)系统带有运行状态灯,为调试各个模块程序和测试运行状态提供了方便,在有需要的地方设置状态标志,以便检验程序运行结果。结束语本文主要对基于ZigBee的无线传感器网络进行温湿度数据采集与显示。首先,在明确了硬件设计的基础上,明确了所使用的芯片,及其所使用功能。CC2430在软件设计中主要用的是寄存器和中断的功能。数字式温湿度传感器SHT11主要是依据其温湿度采集的工作原理,以及其温湿度补偿原理。串口通信主要是明确其传输流程。然后,在明确以上所使用芯片功能的基础上,设计软件设计的流程图,并在流程图的基础编写程序,实现了多个模块的功能。编写完程序以后,利用IAREmbededWorkbenchIDE调试平台,调试各个模块的程序,观察试验结果,且达到了预期的结果。该系统作为一个基本平台实现的功能有限,如果对于此系统的开发重点放在节点间的功能控制方面,可以在现有的网络基础上,对终端节点与应用对象进行功能绑定,从而达到对节点应用对象的控制目的。参考文献[1]曲振宁.基于ZigBee无线传感器网络节点设计及其在远程健康监护中的应用.吉林大学[2]施承.基于ZigBee议的无线传感器网络关键技术的研究实现.东南大学.2006[3]赵进.无线传感器网络路由协议研究与实现.南京航空航天大学.2005[4]张宏锋.一个基于ZigBee技术的无线传感器网络平台.武汉理工大学.2006[6]杨赓.Zigbee无线传感器网络的研究与实现.浙江大学.2600[7]陈小明.基于IEEE802.15.4的车辆监控系统.浙江大学.2006[8]陈利虎.无线传感器网络实验平台的研究国防科学技术大学[9]李凌.基于传感器网络任务分配技术研究西北工业大学[10]黄铮.无线传感器网络连通与覆盖的研究武汉理工大学.[11]周贤伟,韦炜,覃伯平.无线传感器网络的时间同步算法研究传感技术学报[12]Tsung—HsienLin。WilliamJ.Kaiser,GregoryJ.Pottie.Integrated-powercommunicationsystemdesignforwirelesssensornetworks.IEEECommunicationsMagazine.December2004[13]毕艳忠,孙利民.传感器网络中的数据融合.计算机科学.2004[14]DeS,QiaoCM,WuHY.Meshedmultiplthroutingwithselectiveforwarding:anefficientstrategyinwirelesssensornetworks.ComputerNetworks.2003[15]SasikanthAvancha,JeffreyUndercoffer,AnupomJoshieta1.Securesensornetworksforperimeterprotection.ComputerNetworks.2003[16]ZigBeeAlliance.ZigBeespecification.December。2006.[17]StankovicJA,AbdelzaherF,LuCY,etal.Real-TimeCommunicationandCoordinationinEmbeddedSensorNetworks.[18]于海斌,曾鹏,王忠锋等,分布式无线传感器网络通信协议研究.通信学报,[19]曾鹏,于海斌,梁英等.分布式无线传感器网络体系结构及应用支撑技术研究.信息与控制[20]BobHeile,EmergingStandards:WheredoZigBee/UWBfit,2004,[21]王权平,王莉,ZigBee技术及其应用,现代电信科技,2004[22]陈群,葛万成,ZigBee在工业控制中的应用探讨,自动化博览,2006附录主程序:#ifndefHAL_H#defineHAL_H#include"ioCC2430.h"/*************************************************************************************************Portfunctions/macros*************************************************************************************************/#defineIO_PER_LOC_TIMER1_AT_PORT0_PIN234()do{PERCFG=(PERCFG&~0x40)|0x00;}while(0)#defineIO_PER_LOC_TIMER1_AT_PORT1_PIN012()do{PERCFG=(PERCFG&~0x40)|0x40;}while(0)#defineIO_PER_LOC_TIMER3_AT_PORT1_PIN34()do{PERCFG=(PERCFG&~0x20)|0x00;}while(0)#defineIO_PER_LOC_TIMER3_AT_PORT1_PIN67()do{PERCFG=(PERCFG&~0x20)|0x20;}while(0)#defineIO_PER_LOC_TIMER4_AT_PORT1_PIN01()do{PERCFG=(PERCFG&~0x10)|0x00;}while(0)#defineIO_PER_LOC_TIMER4_AT_PORT2_PIN03()do{PERCFG=(PERCFG&~0x10)|0x10;}while(0)#defineIO_PER_LOC_SPI1_AT_PORT0_PIN2345()do{PERCFG=(PERCFG&~0x08)|0x00;}while(0)#defineIO_PER_LOC_SPI1_AT_PORT1_PIN4567()do{PERCFG=(PERCFG&~0x08)|0x08;}while(0)#defineIO_PER_LOC_SPI0_AT_PORT0_PIN2345()do{PERCFG=(PERCFG&~0x04)|0x00;}while(0)#defineIO_PER_LOC_SPI0_AT_PORT1_PIN2345()do{PERCFG=(PERCFG&~0x04)|0x04;}while(0)#defineIO_PER_LOC_UART1_AT_PORT0_PIN2345()do{PERCFG=(PERCFG&~0x02)|0x00;}while(0)#defineIO_PER_LOC_UART1_AT_PORT1_PIN4567()do{PERCFG=(PERCFG&~0x02)|0x02;}while(0)#defineIO_PER_LOC_UART0_AT_PORT0_PIN2345()do{PERCFG=(PERCFG&~0x01)|0x00;}while(0)#defineIO_PER_LOC_UART0_AT_PORT1_PIN2345()do{PERCFG=(PERCFG&~0x01)|0x01;}while(0)#defineIO_DIR_PORT_PIN(port,pin,dir)do{if(dir==IO_OUT)P##port##DIR|=(0x01<<(pin));elseP##port##DIR&=~(0x01<<(pin));}while(0)//Whereport={0,1,2},pin={0,..,7}anddirisoneof:#defineIO_IN0#defineIO_OUT1#defineIO_IMODE_PORT_PIN(port,pin,imode)do{if(imode==IO_IMODE_TRI)P##port##INP|=(0x01<<(pin));elseP##port##INP&=~(0x01<<(pin));}while(0)#defineIO_IMODE_PUD0//Pull-up/pull-down#defineIO_IMODE_TRI1//Tristate#defineIO_PUD_PORT(port,pud)do{if(pud==IO_PULLDOWN)P2INP|=(0x01<<(port+5));elseP2INP&=~(0x01<<(port+5));}while(0)#defineIO_PULLUP0#defineIO_PULLDOWN1#defineIO_FUNC_PORT_PIN(port,pin,func)do{if((port==2)&&(pin==3)){if(func){P2SEL|=0x02;}else{P2SEL&=~0x02;}}elseif((port==2)&&(pin==4)){if(func){P2SEL|=0x04;}else{P2SEL&=~0x04;}}else{if(func){P##port##SEL|=(0x01<<(pin));}else{P##port##SEL&=~(0x01<<(pin));}}}while(0)//wherefuncisoneof:#defineIO_FUNC_GIO0//GeneralpurposeI/O#defineIO_FUNC_PERIPH1//Peripheralfunction#defineIO_ADC_PORT0_PIN(pin,adcEn)do{if(adcEn)ADCCFG|=(0x01<<pin);elseADCCFG&=~(0x01<<pin);}while(0)//whereadcEnisoneof:#defineIO_ADC_EN1//ADCinputenabled#defineIO_ADC_DIS0//ADCinputdisab/*************************************************************************************************FLASHprogrammingfunctions************************************************************************************************//Macroforerasingagivenflashpage#defineFLASH_ERASE_PAGE(page)do{FADDRH=(page)<<1;FADDRL=0x00;FLASH_CONFIG(ERASE);}while(0)//Macroforconfiguringflashaccessandsettingflashaccessmode.#defineFLASH_CONFIG(options)do{FWT=(0x2A>>CLKSPD);FCTL=options;}while(0)//_options_maybethefollowing:#defineREAD_WHEN_NEED0x00#defineCONTINOUS_READ0x10#defineWRITE0x02#defineERASE0x01#defineFLASH_BUSY0x80/*************************************************************************************************Powerandclockmanagement***************************************************************************************************//Macroforgettingtheclockdivisionfactor#defineCLKSPD(CLKCON&0x07)//Macroforgettingthetimertickdivisionfactor.#defineTICKSPD((CLKCON&0x38)>>3)//Macroforcheckingstatusofthecrystaloscillator#defineXOSC_STABLE(SLEEP&0x40)//MacroforcheckingstatusofthehighfrequencyRCoscillator.#defineHIGH_FREQUENCY_RC_OSC_STABLE(SLEEP&0x20)//Macroforsettingpowermode#defineSET_POWER_MODE(mode)do{if(mode==0){SLEEP&=~0x03;}elseif(mode==3){SLEEP|=0x03;}else{SLEEP&=~0x03;SLEEP|=mode;}PCON|=0x01;asm("NOP");}while(0)//Where_mode_isoneof#definePOWER_MODE_00x00//Clockoscillatorson,voltageregulatoron#definePOWER_MODE_10x01//32.768KHzoscillatoron,vol

温馨提示

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

评论

0/150

提交评论