基于无线传感网的温度监控系统的设计与实现_第1页
基于无线传感网的温度监控系统的设计与实现_第2页
基于无线传感网的温度监控系统的设计与实现_第3页
基于无线传感网的温度监控系统的设计与实现_第4页
基于无线传感网的温度监控系统的设计与实现_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

基于无线传感网的温度监控系统的设计与实现摘要无线传感网是由众多部署在复杂环境中的节点组成的,利用节点收集数据,分析后做出决策,ZigBee技术作为一种新兴的近距离、低功耗的无线传感网技术,获得了广泛支持,成为当前研究的热点和重点之一.本文介绍了在对无线传感网以及ZigBee协议栈学习的根底上,设计节点采集温度等数据的程序,以及开发上位机的监控软件,通过实验平台进行组网,将节点上采集的数据发送给协调器,再通过以太网将数据发送给上位机软件,利用监控软件监控数据的变化,实现对温度等数据的监控功能。该系统的目标是实时监控环境温度变化,并在温度异常时发出警报。利用无线传感网,本系统可部署在各种需要温度监控的环境中。关键词:无线传感网ZIGBEECC2430Z-STACK信息采集DesignandrealizationoftemperaturemonitoringsystembasedonwirelesssensornetworkABSTRACTWirelesssensornetworkiscomposedofnumerousofnodesdeployedinacomplexenvironment,usingnodegatherdataandanalysisingtomakeadecision,ZigBeetechnologyasanewneardistanceandlowpowerwirelesssensornetworktechnology,receivesbroadsupport,andhasbecomeoneofresearchhotspotandfocusonthecurrent.Inthispaper,basedonStudyingonwirelesssensornetwork,andZigBeeprotocolstack,idesignedtheprogramofnodetemperaturedataacquisitionaswellasthedevelopmentofPCmonitoringsoftware,throughtheexperimentplatformfornetwork,thedatacollectedonnodesissenttothecoordinator,thenthecoordinatorsentthedatatoPCviaEthernetsoftware.wecanusemonitoringsoftwaretomonitorthechangeofthedata,andthenrealizethetemperaturedataofmonitoringandotherfunctions.Thegoalofthesystemisreal-timemonitoringtheenvironmenttemperaturechanges,andsoundanalarmwhenthetemperatureisabnormal.Usingwirelesssensornetwork,thissystemcanbedeployedinavarietyofenvironmentneedingtemperaturemonitoring.Keywords:Zigbee,wirelesssensornetwork,TemperatureAcquisition,Z-Stack目录MACROBUTTONInsertCrossReference第一章绪论11.1论文研究的背景和意义11.2研究现状及开展趋势11.3本文主要结构2第二章zigbee协议栈52.1zigbee协议栈简介52.2设备类型62.2.1协调器72.2.2路由器72.2.3终端设备72.2.4设备的协议栈配置72.3寻址72.3.1寻址类型82.3.2网络地址分配82.3.3Zstack寻址92.4本章总结10第三章开发平台与环境分析113.1开发平台介绍11实验平台简介11仿真器123.1.3网关主板133.1.4有源感知节点133.1.5Zigbee模块143.2软件开发环境15第四章系统设计与实现214.1系统整体设计214.2模块的软件设计224.2.1模块软件整体设计224.2.2添加任务过程分析234.2.3具体功能实现244.2.4上位机监控软件开发274.3本章小结29第五章系统运行与演示305.1系统连接与配置305.2编译和下载工程文件315.3运行监控系统32结束语34参考文献35附录36致谢57绪论论文研究的背景和意义伴随着着无线网络通信、大规模集成电路、传感器等技术的快速开展和逐渐成熟,无线传感器网络〔WirelessSensorNetwork,WSN〕应运而生。无线传感网络是由部署在一定区域内的数量巨大的传感器节点,通过自组织形成多跳网络,进行协作的感知、采集区域内的信息,经过处理并最终发送给观察者。无线传感网中的节点具有体积小,数量多,能耗低,集成无线通信以及数据采集和处理功能,它们通过无线信道通信,自组织的构成网络。传感器中包括了多种传感器,可以测量周围环境的温度,湿度,光强,RSSI值等众多对人类有价值的信息和现象。在采集数据后,还可以通过网关连接到网络根底设施中,比方将数据发送给较近的基站,到达讲采集的数据和信息传送给远程的终端的目的。所以,传感器节点在无线传感网中起着根底作用,其设计的好坏将影响整个系统和网络的质量CC2430是一种低功耗,高效率的片上系统,可以很好的解决无线传感网络中能量消耗较大的问题。CC2430芯片是由Chipon公司开发的全球首款集成了ZigBee协议的片上系统解决方案,外置元件需要较少,本钱低廉,可以很廉价、快速的构建Zigbee节点。CC2430芯片延用了以往CC2420芯片的架构,在单个芯片上整合了ZigBee射频(RF)前端、内存和微控制器。它使用1个8位MCU〔8051〕,具有128KB可编程闪存和8KB的RAM,还包含数字模拟转换器、定时器、AES128协同处理器、看门狗定时器、32kHz晶振的休眠模式定时器、上电复位电路以及21个可编程I/O引脚。CC2430芯片采用0.18μmCMOS工艺生产,在接收和发射模式下电流损耗分别低于27mA或25mA。CC2430的休眠模式和转换到主动模式的超短时间的特性,特别适合那些要求电池寿命非常长的应用。1.2研究现状及开展趋势无线传感器网络将逻辑中的信息世界与客观的物理世界连接、融合在一起,极大改变了人类与自然界的交互方式。人们通过传感器网络可以直接感知客观的世界,从而极大地扩展现有网络的功能和人类认识世界的能力以及范围。美国商业周刊和MI技术评论曾经在预测未来技术开展的报告中,分别将无线传感器网络列为改变世界的10大技术之一以及21世纪最有影响的21项技术。同时,无线传感器网络、塑料电子学和仿生人体器官也被称为全球未来三大高科技产业。最近几年,随着本钱的降低,无线传感器网络已经在如下几个领域中有了大规模应用:1〕环境监测由于环境污染问题越来越突出,人们对与环境的保护愈发关注,于是对于环境的监测需求相应增加。无线传感器网络为在环境监测中采集数据提供很大便利,同时还可以减少对环境的破坏。无线传感器网络可以环境变化对农作物的影响,跟踪留鸟和昆虫的迁移,监测大气、海洋和土壤的成分等。2〕医疗护理无线传感器网络也可以应用在医疗和护理领域。英特尔公司推出的基于无线传感器网络的家庭护理技术即为其中之一,该系统利用在鞋、家具以家用电器等家用设备中嵌入传感器,对老龄人士、阿尔茨海默氏病患者以及残障人士的家庭生活有很大帮助。3〕军事领域由于无线传感器网络节点造价低廉,可以密集随机的分布在各种恶劣的战场环境中,包括侦察敌情、监控兵力、装备和物资,判断生物化学攻击等多方面用途。目前无线传感器网络还存在着如下问题:1〕网络内节点的通信问题。传感器节点在正常通信过程中,信号可能被一些障碍物阻挡而受到影响,怎样提高传感器节点的穿透性是亟待解决的问题。2〕延长传感器网络的使用寿命。现在一般使用高能电池、降低传感节点的功耗两种方式来解决这个问题。此外还有传感器网络的自我能量收集技术和电池无线充电技术,但这两项技术尚在研究中,还不成熟。无线传感器网络有着十分广泛的应用前景以及较好的开展趋势,除了在工业、农业、军事、环境、医疗等领域有具有巨大的运用价值,在未来还将在许多新兴领域表达其优越性,如家用、保健、交通等领域。将来微型传感器可以将家用电器等其他日常用品同互联网相连,对这些设备进行远距离控制,这样有利于家庭的平安调控、节电。1.3本文主要结构第一章绪论首先简要介绍了无线传感网,接着介绍了无线传感网的研究背景、现状和开展趋势,最后对此题的提出和本文的工作内容做了说明。第二章首先介绍了Zigbee技术的体系结构。对Z-Stack协议栈的功能及其实现进行了概述,包括地址分配、寻址、节点绑定、路由选择机制,配置PANID等功能,以及选择网络参加等几个方面。第三章对系统整体方案进行了论述,包括硬件介绍和软件设计。硬件主要介绍数据会聚模块,温度传感器模块;软件设计包括上位机界面设计、数据会聚模块、温度传感器模块的软件设计。第三章对整个系统的开发平台进了论述,硬件方面主要包括无线龙的无线传感网实验箱,包括主板,协调器,节点,以及相应的硬件模块介绍,在软件方面有嵌入式开发平台IAR,上位机的监控软件,zigbee协议栈等。ZigBee协议栈2.1zigbee协议栈简介Zigbee协议栈由一系列子层组成,每层为其上层提供特定的效劳:数据实体提供数据传输的效劳,管理实体那么提供其他的全部效劳。效劳接入点〔SAP〕为每一层的效劳实体为其上一层提供效劳的结构,SAP中也提供了完成效劳所需要的效劳指令。层和IIEEE802.15.4PHY层。IEEE802.15.4定义了最下面的两层:物理层和介质接入控制层。而Zigbee联盟那么提供了应用层和网络层的框架设计,应用层的框架包括了zigbee设备对象〔ZDO〕、应用支持子〔APS〕以及由制造商制定的应用对象。图2-1zigbee协议栈比照于其他无线通信标准,zigbee协议有着明显的优势和特定,需要的套件紧凑且简单,具体实现要求较低,zigbee协议套件的大概最低需求为:8位处理器,比方80C51;32kb的ROM,最小软件只需4KB的ROM,例如CC2530芯片,具有8051单片机增强型内核,内存为32位128kb。网络主节点,即协调器节点需要更多的sdram,用来容纳网络中所有节点的设备信息,设备关联表以及与平安有关的密匙存储等等。Zigbee联盟希望可以建立一种可连接每个电子设备的无线网。并预言zigbee将成为全球最高端的无线技术之一,,同时IPV6与结合是传感器网络的开展趋势,因为IPV6采用128位地址,可以几乎不受限制的提供地址。在IAR中翻开zigbee协议栈,其结构如图:图2.1zigbee协议栈App:应用层目录,用户在这里创立不同的工程,本目录包含了协议栈的应用层内容和创立工程的内容,一般是以操作系统的任务的形式实现的。HAL:硬件抽象层,包含了与硬件相关的配置信息、驱动及操作函数。MAC:MAC层目录,包含了mac层的参数配置文件及其LIB库的函数接口文件。MT:实现了通过串口对各层控制,以及与各层进行直接交付。NWK:网络层目录,包含网络层配置参数相关文件和aps层库的函数接口以及网络层库函数接口文件及OSAL:协议栈的操作系统。PROFILE:AF层的目录。Security:平安层目录,包含平安层的处理函数,如加密函数等。Tools:工程配置目录,包含空间划分、z-stack相关配置的信息。Zdo:zdo目录。Zmac:mac目录,包括mac层参数的配置以及mac层lib库函数回调处理函数。Zmain:主函数的目录,包含入口函数main以及硬件配置的文件。Output:输出文件目录,这是由开发环境IARew_8051自动生成的。由此可以看出,整个zigbee协议栈已经表达了zigbee的全部功能,建立一个zigbee工程的方法主要就是对应用层的添加和修改。2.2设备类型在ZigBee网络中,一共有三种不同的逻辑设备类型:Coordinator(协调器节点),Router(路由器节点)和End-Device(终端设备节点)。ZigBee网络是由一个Coordinator节点、多个Router节点、多个End_Device节点组成,zigbee网络拓扑结构如下:图2.2zigbee网络拓扑结构协调器协调器节点负责整个网络的启动,同时也是网络中的第一个设备。它选择一个可用信道和网络ID,即PANID〔PersonalAreaNetworkID〕,随后启动整个网络。协调器也可以协助建立协议栈中的应用层和平安层的绑定.需要注意的是,协调器的功能主要涉及网络的启动和配置,当完成这些任务后,协调器的功能就类似一个路由器,而接下来整个网络的操作,由于ZigBee网络本身的特性,并不依赖协调器的存在。路由器路由器的主要功能是:允许其他设备参加网络,负责多跳路由和协助它的子设备终端之间的通讯,这些子设备通常是由电池供电。通常情况,路由器希望一直处于活动状态,因此它一般必须使用主电源供电。但是当使用树群这种网络模式时,路由允许间隔一定的周期操作一次,即可以使用电池给其供电。终端设备终端设备不负责维持网络结构,一般是一个电池供电的设备,它可以处于睡眠模式或者唤醒模式。通常,终端设备对存储空间(特别是RAM需要)较小。注意:不同的设备类型在IAR中编译时要选择不用的编译选项,不同的设备类型的工程文件是相互独立的。2.2.4设备的栈配置ZigBee栈参数的集合需要被配置为一定的值,和这些值在一起被称之为栈配置。ZigBee联盟已经定义了这些由栈配置组成的栈参数。网络中的所有设备一定要遵循同样的栈配置。为了促进互用性这个目标,ZigBee联盟为ZigBee2006标准定义了栈配置。所有遵循此栈配置的设备可以用在其他开发商开发的遵循同样栈配置的网络中。2.3寻址2.3.1地址类型ZigBee设备有两种类型的地址。一种是16位网络地址,另一种是64位IEEE地址,即MAC地址。16位网络地址是设备参加网络后分配的。它在网络中是唯一的,用来在网络中鉴别设备和发送数据。64位地址是由IEEE来维护和分配全球唯一的地址,它通常由制造商或者被安装时设置,设备将在它的生命周期中一直拥有它。2.3.2网络地址分配ZigBee使用的是分布式寻址方案来为设备分配网络地址。此方案能保证在整个网络中所有分配的地址是唯一的。这是必须的,只有这样才能保证一个特定的数据包能够发给它指定的设备,而不出现混乱。同时,这个寻址算法的分布特性保证设备只能与他的父设备通讯来接受一个网络地址,并不需要整个网络范围内通讯的地址分配,这有助于提高网络的可测量性。在每个路由参加网络之前,寻址方案需要知道和配置一些参数。这些参数分别是MAX_DEPTH,MAX_ROUTERS和MAX_CHILDREN。这些参数也是栈配置的一局部。ZigBee2006协议栈已经规定了这些参数的值:MAX_DEPTH=5,MAX_ROUTERS=6和MAX_CHILDREN=20。MAX_DEPTH决定网络的最大深度。协调器(Coordinator)的深度规定为0,其儿子位于深度1,它的儿子的儿子位于深度2,以此类推。MAX_DEPTH参数限制了网络在物理上的长度。MAX_ROUTER决定一个路由(Router)或者一个协调器(Coordinator)节点可以处理的具有路由功能的儿子节点的最大个数。MAX_CHILDREN决定一个路由(Router)或者一个协调器节点可以处理的儿子节点的最大个数。2.3.3Z-Stack寻址在zigbee网络中向设备发送数据时,应用程序通常使用AF_DataRequest()函数,此函数将数据包发送给一个afAddrType类型的目标设备。其数据结构定义如下:typedefstruct{union{uint16shortAddr;}addr;afAddrMode_taddrMode;byteendPoint;}afAddrType_t;目的地址模式可以设置为以下几个值:typedefenum{afAddrNotPresent=AddrNotPresent,afAddr16Bit=Addr16Bit,afAddrGroup=AddrGroup,afAddrBroadcast=AddrBroadcast}afAddrMode_t;在Zigbee中,数据包可以有单点传送(unicast)、多点传送(multicast)或者播送传送三种方式,所以必须有地址模式参数来标明哪种方式。单点传送中数据包只发送给一个设备,多点传送中数据包那么要传送给一组设备,播送中数据包那么要发送给整个网络的所有节点。2.3.4重要设备地址应用程序如果需要知道它的父亲地址和它的设备地址。使用下面的函数获取该设备的父设备的地址(在ZStackAPI中定义):NLME_GetCoordShortAddr()——返回本设备的父设备的16位网络地址NLME_GetCoordExtAddr()——返回本设备的父设备的64位扩展地址使用下面的函数获取设备地址:NLME_GetShortAddr()——返回本设备的16位网络地址NLME_GetExtAddr()——返回本设备的64位扩展地址2.4本章小结本章节主要介绍了zigbee协议栈,其实TI公司的Zigbee协议总体而言并不复杂,只需开发者用心的专注于应用层与驱动测层的开发,并且协议栈有很多现成的模板可以用。本章重点讲述的zigbee协议中设计的一些重要属于,如设备类型,寻址等,详细了解这些内容对开发者更深入的了解zigbee协议标准有很大的意义。其实作为zigbee无线通信网络的一名开发者,仅仅需了解zigbee中一些关键的问题,不需要了解太多协议的具体实现细节,就可以完成开发工作。第三章开发平台与环境分析3.1开发平台整体介绍3.1.1实验设备简介:本选题采用无线龙公司的理想系列ZigBee无线传感器网络平台DREAMRF-CC2430,该平台支持国际802.15.4标准和ZigBee2006标准。DREAMRF-CC2430配套提供ZigBee模块提供了93dB的链路质量,优秀的接收器灵敏度和健壮的抗干扰性,多种供电模式,以及一套广泛的外设集——包括2个UART、14位ADC和21个通用GPIO,4个定时器,AES加密处理器,DMA控制器等等。DREAMRF-CC2430功能特点:1、具有USB高速下载、支持IAR集成开发环境;2、具有在线下载、调试、仿真功能;3、提供ZigBee2006协议栈;4、根底例子程序以源代码方式提供;5、灵活配置。根据需求可选配多种无线模块及扩展传感器板;6、开发方便、快捷、简单;7、C51编程。熟悉、顺手、入手快;8、具有液晶显示。直观、明了;9、采用最新ARM9微控制器为核心,配置大型彩色TFT液晶显示屏和高级触摸屏,支持UCOS-II实时操作系统和GUI图形软件,文件系统等,将ARM32位微控制器和多种无线网络模块有机结合,为使用32位ARM微控制器开发各种无线网络,提供了方便途径。10、板上模块接口包括最新的温度、湿度,光线,压力,3轴加速度等传感器,LED,键盘,串口,直流、步进电机等;也可以通过模块置换增加更多类型传感器模块;大量软件代码,实现了和这些传感器的控制接口,是ARM微控制器可以和各种无线有线网络进行实时连接,实时数据采集和分析,自动控制管理。DREAMRF-CC2430系统结构:理想系列ZigBee无线传感器网络平台DREAMRF-CC2430由1.PC机局部、2.网关局部、3.路由节点局部、4.传感器节点局部四局部组成,用户可以很方便的实现传感器网络无线化,网络化,规模化的演示,教学,观测和再次开发。整体开发概念示意图如图1所示。1.PC机:完成接收网关数据和发送指令,实现可视化,形象化人机界面,方便用户操作,观察;2.网关:完成通过计算机发送的指令发送或接收路由节点或者传感器节点数据,并将接收到的数据发送给计算机;3.路由节点:在网关不能和所有的传感器节点通信时,路由节点作为一种中介使网关和传感器节点通信,实现路由通信功能;4.传感器节点:完成对设备的控制和数据的采集,包括灯的控制温度、光照度、加速度数据等等。ZigBee无线传感器网络根据不同的情况可以由一个网关,一个或多个路由器,一个或多个传感器节点组成。系统大小只受PC软件观测数量,路由深度,网络最大负载量限制。ZigBee2006无线传感器网络在没有进行网络拓补修改之前支持5级路由,31101个网络节点。传感器网络系统结构图如下图。图3_1传感器网络系统结构3.1.2仿真器C51RF无线ZigBee开发技术核心C51RF-3仿真器C51RF-3仿真器具有在线下载、调试、仿真等功能,具有一个USB接口,一个复位按键以及一根仿真线。C51RF-3仿真器通过USB接口与计算机进行通信,要在CC2430的ZigBee模块的开发上实现下载、调试(DEBUG)、仿真等的通信都由此接口来实现。仿真器上的复位键用来实现C51RF-3仿真器的复位,仿真线是一根10芯的下载、调试(DEBUG)、仿真线,通过它与CC2430的ZigBee模块进行连接。网关主板理想系列ZigBee无线传感器网络平台DREAMRF-CC2430网关主板包括32位ARM高性能微控制器。网关硬件包括彩色OLED触摸图形显示器,触摸按键,支持UCOS-II操作系统,GUI图形软件。集成了802.15.4/ZigBee网络路由器、网络节点和软件协议栈等完整软件硬件。还包括UHFEPCGen2大功率RFID读卡器及HF的RFID读卡器接口。提供光敏、温度、压力〔选配〕、蜂鸣器、湿度等感知传感器。图3_2网关主板有源感知节点理想系列ZigBee无线传感器网络平台DREAMRF-CC2430提供有源网络感知节点,节点提供三种传感器(光敏、温度、加速度)来进行数据采集,并提供ZigBee无线模块进行数据传输,提供2种电源供电方式进行能源供给。此外有源感知网络节点提供仿真器接口进行程序下载。图3_3有源感知节点3.1.5zigbee模块有源网络感知节点配套ZigBee无线模块采用无线龙标准双排20针功能引脚ZigBee图3_4zigbee模块无线模块采用的是TI的ZigBee片上系统CC2430作为微控制器。CC2430是一颗真正的系统芯片(SoC)CMOS解决方案。这种解决方案能够提高性能并满足以ZigBee为根底的2.4GHzISM波段应用对低本钱,低功耗的要求。它使用1个8位MCU〔8051〕,具有32/64/128KB可编程闪存和8KB的RAM,还包含模拟数字转换器(ADC)、几个定时器〔Timer〕、AES128协同处理器、看门狗定时器〔WatchdogTimer〕、32kHz晶振的休眠模式定时器、上电复位电路(PowerOnReset)、掉电检测电路(BrownOutDetection)以及21个可编程I/O引脚。3.2软件开发环境此题目的开发环境是IARIAREmbeddedWorkbench〔简称EW〕的C/C++交叉编译器和调试器是今天世界最完整的和最容易使用专业嵌入式应用开发工具。EW对不同的微处理器提供一样直观用户界面。EW今天已经支持35种以上的8位/16位32位ARM的微处理器结构。图3_5IAR界面环境配置为了开发cc2430程序,需要对IAR进行一系列的配置。设置工程选项参数选择Project菜单下的Options配置与CC2430相关的选项。Target标签图3_6IAR参数配置配置Target,选择Codemodel和Datamodel,以及其它参数。DataPointer标签图3_7IAR参数配置选择数据指针数1个,16位。Stack/Heap标签图3_8IAR参数配置改变XDATA栈大小到0x1FF。单击Options中右边框架内的Linker选项,配置相关的选项。Output标签选中Overridedefault可以在下面的文本框中更改输出文件名。如果要用C-SPY进行调试,选中format下面的DebuginformationforC-SPY,图3_9IAR参数配置Config标签单击Linkercommandfile栏文本框右边的按钮,选择正确的连接命令文件图3_10IAR参数配置CodeModel关系表:CodeModelFileNearlnk51ew_cc2430.xclBankedlnk51ew_cc2430b.xclDebugger单击Options中右边框架内的Debugger选项,配置相关的选项。在Setup标签在DeviceDescriptionfile选择CC2430.ddf文件,其位置在程序安装文件夹下如C:\ProgramFiles\IARSystems\EmbeddedWorkbench4.05Evaluationversion\8051\Config\derivatives\chipcon。。图3_11IAR参数配置最后按下“ok〞保存设置。成功编译工程,并且没有错误信息提示后,按照下列图连接硬件系统图3_12系统连接示意图编译、连接、下载选择Project\Make或按F7键编译和连接工程,之后project\debuge就可以进入调试界面,同时程序将被下载到节点中。图3_13debug界面第四章系统设计与实现4.1系统总体设计基于无线传感网的监控系统主要分为两局部:zigbee模块程序开发,上位机监控软件开发。Zigbee模块的开发是建立在ZigBee协议栈的根底上,添加自己的工程,实现cc2430节点的启动,传感器收集数据,发送数据,接受命令等功能。数据会聚模块〔主板〕负责组建Zigbee网络,完成传感器模块与上位机〔PC〕数据的透明传输;数据会聚模块〔主板〕通过RS-232串口与上位机相连。上位机有监控界面可以测环境温度,光强,RSSI值,多个传感器节点置于不同的监测区域,每个传感器节点把数据传给会聚节点,在会聚节点完成数据融合,然后会聚节点把数据通过串口传给上位机做进一步处理并显示给用户。上位机监控界面需要显示所有温度,光强,RSSI值数据的大小及变化趋势。图4_1系统整体框图4.2模块的软件设计4.2.1模块软件整体设计Zigbee网络节点软件系统是建立在TI的协议栈ZStack-1.4.3-1.2.1。通过更改协议栈的配置,可以把协议栈配置为协调器〔Coordinator〕、终端〔Enddevice〕。此协议栈支持CC2430芯片,有较高的可靠性。在各功能节点的协议栈程序设计时,该协议栈采用统一的编写方式,用宏定义语句:#def、#ifdef、#else等语句区别各功能节点在各协议层中的操作,这样的编写方式将协议栈看成一个整体,提高了协议栈的移植性。根据ZigBee2006标准的标准,ZStack-1.4.3-1.2.1协议栈文件结构如下:App:应用层,包含有具体应用需要的功能函数,可供用户自行修改设计。HAL:硬件抽象层,包含具体芯片的功能函数以及硬件构架的接口参数。MAC:硬件物理层,包含针对具体芯片的物理层封装〔主要为TIMAC-CC2430.lib中的头文件〕,ZMac为在其上的ZigBee的MAC层封装。MT:调试跟踪与监控测试,通过定义MT_TASK使能该功能,使设备能与PC端的Z-TOOL应用程序通信。NWK:网络层,包含有网络层函数封装〔主要为协调器与路由器需要的库函数Router.lib的头文件,或者终端设备所需库文件EndDevice.lib中的头文件〕。OSAL:操作系统抽象层,嵌入简易操作系统的函数封装,每个应用都以操作系统的一个任务形式执行。Profile:通用操作框架,包含有设备描述帮助函数,主要对相关设备的通用功能进行封装。Security:平安层,包含Security.lib库函数的头文件。Tools:包含应用的配置文件。ZDO:ZigBee设备对象的相关操作封装。ZMac:ZigBeeMAC层的封装。ZMain:包含main函数定义、起始代码以及硬件功能配置函数OnBoard.h等。整个协议栈采用中断事件调用机制,任务添加函数osalTaskAdd()将各层初始化函数指针、各层事件处理函数指针以及各层任务优先级添加到任务表,然后通过中断添加响应事件〔events〕。整个函数构成消息处理机制,每个层次互不干扰互不影响。本设计中,终端节点负责采集当前的温度数据在现场实时的显示,并最终发送给协调器,在向协调器发送数据的同时还要实时的接收协调器发送过来的温度报警数据,并能够超限报警。路由器只负责在终端节点和协调器之间的距离超过接收不到的情况下转发协调器与终端节点所发送的数据,起到一个中继器的作用。协调器在接收到终端节点发送过来的温度数据后进行相应的处理,然后通过RS232发送到上位机显示,对上位机发送来的报警温度进行处理,然后分节点的发送给相应的节点报警。下列图为整个系统的流程图图4_2系统整体流程4.2.2添加任务过程分析在Zstack(TI的Zigbee协议栈)中,对于每个用户自己新建立的任务通常需要两个相关的处理函数,包括:(1).用于初始化的函数,如:SampleApp_Init(),这个函数是在osalInitTasks()这个osal中去调用的,其目的就是把一些用户自己写的任务中的一些变量,网络模式,网络终端类型等进行初始化;在osalInitTasks()中实现了多个任务初始化的设置,其中macTaskInit(taskID++)到ZDApp_Init(taskID++)的几行代码表示对于几个系统运行初始化任务的调用,而用户自己实现的SampleApp_Init()在最后,这里taskID随着任务的增加也随之递增.所以用户自己实现的任务的初始化操作应该在osalInitTasks()中增加.voidosalInitTasks(void){uint8taskID=0;//这里很重要,调用osal_mem_alloc()为当前OSAL中的各任务分配存储空间(实际上是一个任//务数组),并用tasksEvents指向该任务数组(任务队列).tasksEvents=(uint16*)osal_mem_alloc(sizeof(uint16)*tasksCnt);osal_memset(tasksEvents,0,(sizeof(uint16)*tasksCnt));//将taskSEvents所指向的空间清零macTaskInit(taskID++);nwk_init(taskID++);Hal_Init(taskID++);#ifdefined(MT_TASK)MT_TaskInit(taskID++);#endifAPS_Init(taskID++);ZDApp_Init(taskID++);SampleApp_Init(taskID);//用户自己需要添加的任务}(2).用于引起该任务状态变化的事件发生后所需要执行的事件处理函数,如:SampleApp_ProcessEvent(),这个函数是首先在constpTaskEventHandlerFntasksArr[]中进行设置(绑定),然后在osalInitTasks()中如果发生事件进行调用绑定的事件处理函数.4.2.3具体功能实现Master节点设计Master节点的主要处理函数在uint16SampleApp_ProcessEvent(uint8task_id,uint16events)函数中实现,此函数主要负责处任务的所有events,包括计时器,数据传送,以及用户自定义的时间。在本设计中,master节点还要负责网络的建立,网络节点的参加以及网络号的分配等等。master节点的流程图如下:图4_3master节点流程图sampleApp_ProcessEvent函数代码如下:caseSPI_INCOMING_ZTOOL_PORT:// //P1_1=!P1_1;HalUARTRead(SPI_MGR_DEFAULT_PORT,UartRxBuf.RxBuf,32);memcpy(LastRecLaddr,UartRxBuf.RXDATA.Laddr,8);HalLedBlink(HAL_LED_1,2,50,1000);ReadFlag=0; if('&'==UartRxBuf.RxBuf[0]){ if(1)//(CheckUartData(&UartRxBuf.RxBuf[1],29)==UartRxBuf.RxBuf[30])//如果校验通过{ switch(UartRxBuf.RXDATA.HeadCom[0])//串口命令头 { case'R': if((UartRxBuf.RXDATA.HeadCom[1]=='N')&&(UartRxBuf.RXDATA.HeadCom[2]=='D'))//网络发现 { ReadFlag=1;//读自己 } else { ReadFlag=0;//读网络 } break; case'S': case'T': case'C': ReadFlag=0; break; } if(ReadFlag) { UartOutNetDis();//串口输出网络结构 } else { memcpy(&RfTx.TxBuf[0],&UartRxBuf.RxBuf[1],29);//装入数据 SrcSaddr=0; flag=0; for(j=0;j<JoinNode.RouterCount;j++)//叛断有无重复参加的节点 { findflag=1; for(i=0;i<8;i++) { if(RfTx.TXDATA.Laddr[i]!=JoinNode.RouterAddr[j][i]) { findflag=0; break;//不是 } } if(findflag==0)continue; SrcSaddr=JoinNode.RouterAddr[j][8]; SrcSaddr<<=8; SrcSaddr+=JoinNode.RouterAddr[j][9]; //查找到网络地址 flag=1; break; } if(flag==0) { for(j=0;j<JoinNode.RfdCount;j++)//叛断有无重复参加的节点 { findflag=1; for(i=0;i<8;i++) { if(RfTx.TXDATA.Laddr[i]!=JoinNode.RfdAddr[j][i]) { findflag=0; break;//不是 } } if(findflag==0)continue; SrcSaddr=JoinNode.RfdAddr[j][8]; SrcSaddr<<=8; SrcSaddr+=JoinNode.RfdAddr[j][9]; //查找到网络地址 flag=1; break;SlaveSlave节点,即传感器节点,主要负责的是数据的采集和消息的发送。在uint16SampleApp_ProcessEvent(uint8task_id,uint16events)函数中不断循环等待MSGpkt,该变量是指向afIncomingMSGPacket类型变量的指针,通过判断MSGpkt->hdr.event的内容,决定要进行什么处理。caseAF_INCOMING_MSG_CMD:接受到master节点的命令,需要对接受的命令进行处理,之后调用SampleApp_MessageMSGCB(MSGpkt)函数进行处理,主要包括的是读取传感器,包括温度、光感、RSSI值,将数据发送给master节点。switch(RfRece.RXDATA.HeadCom[0]){case'R'://读f((RfRece.RXDATA.HeadCom[1]=='A')&&(RfRece.RXDATA.HeadCom[2]=='S'))//读传感器 {if((RfRece.RXDATA.DataBuf[0]=='G')&&(RfRece.RXDATA.DataBuf[1]=='M'))//读光敏{ memset(RfTx.TxBuf,'x',32); RfTx.TXDATA.HeadCom[0]='R'; RfTx.TXDATA.HeadCom[1]='A'; RfTx.TXDATA.HeadCom[2]='S';memcpy(RfTx.TXDATA.Laddr,ieeeAddr,8); //RfTx.TXDATA.Saddr=NLME_GetShortAddr(); RfTx.TXDATA.DataBuf[0]='G'; RfTx.TXDATA.DataBuf[1]='M';#ifdefPOWER_SAVINGSensor_Delay(3000);#endif temp=ReadSensorAdc(0); RfTx.TXDATA.DataBuf[2]=temp/100+0x30; temp=temp%100; RfTx.TXDATA.DataBuf[3]=temp/10+0x30; RfTx.TXDATA.DataBuf[4]=temp%10+0x30; RfHaveTxDara=1;; }elseif((RfRece.RXDATA.DataBuf[0]=='W')&&(RfRece.RXDATA.DataBuf[1]=='D'))//读温度{memset(RfTx.TxBuf,'x',32);SPIReadTC77Data();//注:第一次转换温度数据,会出现不准确现像Sensor_Delay(50);SPIReadTC77Data();Sensor_Delay(50);temp1=SPIReadTC77Data();temp=temp1/100;Slave节点的程序流程图如下:图4_4slave节点流程图Slave节点的局部主要代码:SampleApp_ProcessEvent(uint8task_id,uint16events){unsignedchar*ieeeAddr;uint16SrcSaddr; afIncomingMSGPacket_t*MSGpkt; if(events&SYS_EVENT_MSG) { MSGpkt=(afIncomingMSGPacket_t*)osal_msg_receive(SampleApp_TaskID);//检索收到任务信息while(MSGpkt) { switch(MSGpkt->hdr.event) { caseAF_INCOMING_MSG_CMD: SampleApp_MessageMSGCB(MSGpkt); break;//改变网络状态caseZDO_STATE_CHANGE: SampleApp_NwkState=(devStates_t)(MSGpkt->hdr.status);//网络状态=协调器,路由,设备 if(SampleApp_NwkState==DEV_END_DEVICE) {#ifdef WXL_RFDSampleApp_RDPSensorDevice();//初使化设备 memset(RfTx.TxBuf,'x',32); RfTx.TXDATA.Head='&'; RfTx.TXDATA.HeadCom[0]='J'; RfTx.TXDATA.HeadCom[1]='O'; RfTx.TXDATA.HeadCom[2]='N'; ieeeAddr=NLME_GetExtAddr(); memcpy(RfTx.TXDATA.Laddr,ieeeAddr,8); SrcSaddr=NLME_GetShortAddr(); RfTx.TXDATA.Saddr[0]=SrcSaddr; RfTx.TXDATA.Saddr[1]=SrcSaddr>>8; RfTx.TXDATA.DataBuf[0]='R'; RfTx.TXDATA.DataBuf[1]='F'; RfTx.TXDATA.DataBuf[2]='D'; RfTx.TXDATA.LastByte='*'; SendData(RfTx.TxBuf,0x0000,32);//发送自己的节点信息到主机#endifosal_start_timerEx(SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT);}elseif(SampleApp_NwkState==DEV_ROUTER){#ifdef WXL_ROUTER SampleApp_RDPSensorDevice();//初使化设备 memset(RfTx.TxBuf,'x',32); RfTx.TXDATA.Head='&'; RfTx.TXDATA.HeadCom[0]='J'; RfTx.TXDATA.HeadCom[1]='O'; RfTx.TXDATA.HeadCom[2]='N'; ieeeAddr=NLME_GetExtAddr(); memcpy(RfTx.TXDATA.Laddr,ieeeAddr,8); SrcSaddr=NLME_GetShortAddr(); RfTx.TXDATA.Saddr[0]=SrcSaddr; RfTx.TXDATA.Saddr[1]=SrcSaddr>>8; RfTx.TXDATA.DataBuf[0]='R'; RfTx.TXDATA.DataBuf[1]='O'; RfTx.TXDATA.DataBuf[2]='U'; RfTx.TXDATA.LastByte='*'; SendData(RfTx.TxBuf,0x0000,32);//发送自己的节点信息到主机#endif }elseif(SampleApp_NwkState==DEV_ZB_COORD){;} break; default: break; } osal_msg_deallocate((uint8*)MSGpkt); //下一个如果可能利用 MSGpkt=(afIncomingMSGPacket_t*)osal_msg_receive(SampleApp_TaskID); } //返回未处理事件 return(events^SYS_EVENT_MSG); }//发送外部消息-这个事件产生一个时间 if(events&SAMPLEAPP_SEND_PERIODIC_MSG_EVT) { //返回未处理事件 return(events^SAMPLEAPP_SEND_PERIODIC_MSG_EVT); } //放弃未知事件 return0;}4.2.4上位机监控软件的开发监控界面如图3.8所示,用MFC软件制作,它接收协调器节点传来的数据,可以进行端口号和节点设置,以及设置IP地址,可以显示历史温度曲线,光感曲线,RSSI值的曲线,可以进行节点的选择,报警值的设置等等,监控软件将收到的信息写入文件,并可以对文件进行保存。可以满足整个系统的监控需求。图4_5监控软件监控软件的工程界面如下:图4_6监控软件工程简介4.3本章小结本章主要论述了基于ZigBee的温度监控系统软件设计与实现。论述了网络中的温度传感器模块,协调器节点模块,上位机监控软件设计,包括通信方式定制,温度数据采集,数据存储方式,节点参加网络的控制,各类事件响应等等。系统运行与演示5.1系统连接与配置(1),把ZigBee协调器正确安排至网关主板ZigBee接口上,通过网线把计算机与网关主板连接起来,对网关主板供电,在网关主板把J11-J14开关拔向MCU方向,翻开电源开关,并把网关主板ZigBee接口右边的开关拔向“ON〞,其它模块开关拔向“OFF〞。设置信道及网络号,启动ZigBee网络。对网关主板供电,翻开网关主板电源开关,选择ZigBee实验图标,进入ZigBee实验,菜单项选择择界面,如下列图所示。图5_1菜单项选择择点击“PC软件控制〞,显示如下。图5_2启动zigbee网络(4)开始以太网设置。以太网设置:翻开方案运行监控/演示软件的计算机的网络连接属性〔右键点击桌面->属性->右键点击本地连接->属性〕,如下列图所示。图5_3网络连接属性由于在网关主板上设置了IP地址为,因此把计算机IP地址设置为:〔2<=X<=99,101<=X<=254〕。5.2编译和下载工程文件根据第四章介绍,将sampleapp工程编译链接后,进行debuge,此时便将程序下载至RFID有源节点内.注意修改各节点物理地址使其各不相同。图5-4下载程序同时IAR进入调试界面,可以动态跟踪程序的执行和调试。图5_5debuge界面5.3运行监控系统在由于显示的网关主板的IP为192.168.3.100,端口号为3000,因此在连篇的IP输入192.168.3.100,监听端口处输入3000,点击“〞开始监听无线传感器网络。图5_6监控设置点击“开始〞按钮,就可开始显示光敏感度的曲线了(注:这时“开始〞按钮将变为“关闭〞按钮)。图5_7监控界面结束语本文主要研究的是基于无线传感网的温度采集系统的具体应用。本系统以CC2430作为主控芯片,以TI公司的Z-Stack协议栈为根底,实现了温度、光强、RSSI值的采集,以及在上位机上进行观测和监控功能。在学习zigbee开发的过程中,遇到的困难比想象的要多很多。很多相关的技术,如单片机知识、无线通信相关内容,ZIGBEE协议栈的分析、IAR的使用,实验箱的操作以及上位机监控软件的开发等,每一项都需要花一定的时间去掌握和熟悉。ZIGBEE为一种刚出现仅几年的新技术,参考资料还不算太多,这也在毕设过程中造成了很大困难。通过对本课题的研究与实现,增强了我的理论分析和动手能力,使我对作为物联网核心技术之一的无线传感网技术有了一定的了解,同时,在完成了系统的整个开发过程。使我对片上系统开发,软件共存,嵌入式开发方面都有了很大提高和进步。参考文献[1]高守玮,吴灿阳,等.ZigBee技术实践教程——基于CC2430/31的无线传感网络解决方案[M].北京:北京航空航天大学出版社,2023.[2]崔莉,鞠海玲,等.无线传感器网络研究进展[J].计算机研究与开展,2005.[3]夏少波,许娥.基于ZigBee的无线传感器网络研究[J].山东通信技术,2023,9〔4〕:9-12.[4]陈伟歌,阎有运,陈朝军.基于ZigBee技术的仓库温度监测系统[J].现代电子技术,2023,12〔275〕:47.[5]金海红.基于Zigbee的无线传感器网络节点的设计及其通信的研究[D].合肥工业大学.2007:30-32.[6]孟庆斌,潘勇.基于CC2430的分布式无线温度测量系统设计[J].电子测量技术,2023〔5〕:128-130.[7]李文仲,段朝玉,等.ZigBee无线网络技术入门与实战[M].北京:北京航空航天大学出版社,2007.[8]夏恒星,马维华.基于CC2430的无线传感器网络节点设计[J].电子技术应用,2007〔5〕:45-47,54.[9]王汉中.基于Zigbee收发器CC2430的分布式温度测量系统设计计[D].华中师范大学.2023:12-13.[10]李磊.一类无线传感网络节点设计及其在设备监控中的应用研究[D].国防科学技术大学.2007:23-24.[11]孙利民,李建中,陈渝.无线传感器网络[M].北京:清华大学出版社,2005.[12]蒋挺,赵成.紫蜂技术及其应用[M].北京:北京邮电大学出版社,2023.[13]刘琼,周之光,朱志伟.基于CC2430的低功耗ZigBee无线传感器网络节点的设计[J].湖南工业职业技术学院学报,2023,9〔5〕:15-16.[14]CC2430ATrueSystem-on-Chipsolutionfor2.4GHzIEEE802.15.4/ZigBee[OL]..[15]CC2430DataSheet[OL]..[16]IEEEStd802.15.4-2003[OL]..[17]ZigBeeSpecification2005[OL]..附录:Slave节点的消息处理函数局部代码:voidSampleApp_MessageMSGCB(afIncomingMSGPacket_t*pkt){ UINT8temp; UINT16temp1; uint8*ieeeAddr;//SampleApp_RDPSensorDevice();//初使化设备//Sensor_Delay(50); memcpy(RfRece.RxBuf,pkt->cmd.Data,32);//共同体ieeeAddr=NLME_GetExtAddr();//获取物理地址 switch(RfRece.RXDATA.HeadCom[0]){ case'R'://读 if((RfRece.RXDATA.HeadCom[1]=='A')&&(RfRece.RXDATA.HeadCom[2]=='S'))//读传感器 { if((RfRece.RXDATA.DataBuf[0]=='G')&&(RfRece.RXDATA.DataBuf[1]=='M'))//读光敏 { memset(RfTx.TxBuf,'x',32); RfTx.TXDATA.HeadCom[0]='R'; RfTx.TXDATA.HeadCom[1]='A'; RfTx.TXDATA.HeadCom[2]='S';memcpy(RfTx.TXDATA.Laddr,ieeeAddr,8); //RfTx.TXDATA.Saddr=NLME_GetShortAddr(); RfTx.TXDATA.DataBuf[0]='G'; RfTx.TXDATA.DataBuf[1]='M';#ifdefPOWER_SAVINGSensor_Delay(3000);#endif temp=ReadSensorAdc(0); RfTx.TXDATA.DataBuf[2]=temp/100+0x30; temp=temp%100; RfTx.TXDATA.DataBuf[3]=temp/10+0x30; RfTx.TXDATA.DataBuf[4]=temp%10+0x30; RfHaveTxDara=1;; } elseif((RfRece.RXDATA.DataBuf[0]=='W')&&(RfRece.RXDATA.DataBuf[1]=='D'))//读温度 { memset(RfTx.TxBuf,'x',32);SPIReadTC77Data();//注:第一次转换温度数据,会出现不准确现像Sensor_Delay(50);SPIReadTC77Data();//注:第一次转换温度数据,会出现不准确现像Sensor_Delay(50);temp1=SPIReadTC77Data();//注:第一次转换温度数据,会出现不准确现像temp=temp1/100;RfTx.TXDATA.HeadCom[0]='R'; RfTx.TXDATA.HeadCom[1]='A'; RfTx.TXDATA.HeadCom[2]='S'; memcpy(RfTx.TXDATA.Laddr,ieeeAddr,8); //RfTx.TXDATA.Saddr=NLME_GetShortAddr(); RfTx.TXDATA.DataBuf[0]='W'; RfTx.TXDATA.DataBuf[1]='D'; RfTx.TXDATA.DataBuf[2]=temp/10+0x30;//HEXcode[(temp>>4)];// RfTx.TXDATA.DataBuf[3]=temp%10+0x30;//HEXcode[(temp&0x0f)];// RfHaveTxDara=1; } }elseif((RfRece.RXDATA.HeadCom[1]=='A')&&(RfRece.RXDATA.HeadCom[2]=='C'))//控制加速度传感器{JVCCON();P1_4=1;Sensor_Delay(5);memset(RfTx.TxBuf,'x',32);if(RfRece.RXDATA.DataBuf[0]=='X'){RfTx.TXDATA.DataBuf[0]='X';#ifdefPOWER_SAVINGSensor_Delay(3000);#endiftemp=ReadSensorAdc(1);}elseif(RfRece.RXDATA.DataBuf[0]=='Y'){RfTx.TXDATA.DataBuf[0]='Y';#ifdefPOWER_SAVINGSensor_Delay(3000);#endiftemp=ReadSensorAdc(6);}elseif(RfRece.RXDATA.DataBuf[0]=='Z'){RfTx.TXDATA.DataBuf[0]='Z';#ifdefPOWER_SAVING

温馨提示

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

评论

0/150

提交评论