学生: 签名: 指导老师: 签名:
摘要
温湿度数据的采集、传输以及处理,广泛应用于森林火灾的防范,粮仓的温湿度控制以及家庭智能化控制等领域内。针对传统的有线方式检测、采集、传输中节点分散需要大量布线等问题,本设计主要从无线传感方向进行改进,本文介绍了一种基于CC2530和数字温湿度传感器的温湿度采集系统。该系统采用Zigbee无线通信技术结合传感器,通过运用Zigbee协议架构组建无线传感网络,实现主从节点的数据采集和传输,以及一点对多点,两点之间的通信。并详细阐述了基于Zigbee协议栈的中心节点和终端节点的协议传输,主要是从Zigbee协议栈网络层里AODV路由协议着手,阐述在网络层如何通过AODV路由协议进行节点间的连接以及数据的收发。
关键字:温湿度数据采集, CC2530, Zigbee协议栈, 无线传感网络 论文类型:应用型毕业论文
Title:CC530 based temperature and humidity data acquisition system
design
Major:Electronic and Information Engineering Name: Hejieran signature: Supervision:zhangxiaoli signature:
ABSTRACT
Temperature and humidity data acquisition,transmission and processing,widely used in some field,like forest fire prevention,warehouse temperature and humidity control and family intelligent control and so on. In view of the traditional wired detection, acquisition, transmission nodes distributed needs a large number of wiring problem, This design mainly from wireless sensing direction is improved.This paper introduced one kind based on the CC2530and digital temperature and humidity sensor temperature and humidity gathering system. the system adopts Zigbee wireless communication technology with sensor, through the use of Zigbee protocol in wireless sensor networks architecture form, realization of the master-slave data acquisition and transmission,and a point to multipoint, communication between two points. Described in detail based on the Zigbee protocol stack center node and the terminal node of the transmission control protocol, mainly from the Zigbee protocol stack in AODV network layer routing protocol to, in the network layer through the AODV routing protocol connections among the nodes and data transceiver.
Key words: Temperature and humidity data acquisition, CC2530, Zigbee Protocol stack,
Wireless sensor network
Type of Thesis: Application of graduation thesis
第一章 绪论
1、1无线传感网络的研究背景:
伴随着时代的进步,人们充分认识到了科技的力量。对科学的探索是永无止境的,人们在科学方面的探索已经达到了一个前所未有的水平。2003年,美国《技术评论》杂志论述未来新兴十大技术时,无线传感网络(WSN)被列为第一;美国《今日防务》杂志更认为无线传感网络(WSN)的应用和发展将引起一场划时代的军事技术革命和未来战争的变革。可以预测, 无线传感网络(WSN)是信息感知和采集的一场革命,是21世纪最重要的技术之一。作为21世纪,最具有影响力的改变世界的10大技术之一的无线传感技术,其发展的技术日趋成熟,方向也开始多样化,在科技领域中也变得越来越重要,使得大量的应用方案开始采用无线技术进行数据采集和无线通信。数字家庭、无线通信、无线控制、无线定位和移动连接等词语也频频映入眼帘。有增无减的相关信息报道足以预测这些新鲜事物必将具有强大的生命力和广阔的发展前景。无线传感网络,它是由大量节点组成的,是面向任务的分布式网络,综合了传感器、嵌入式计算、现代网络及无线通信、分布式信息处理等多领域的技术,通过各类微型无线传感器对目标信息进行实时监测,实时采集,并且由嵌入式微处理器对所采集到的信息进行处理,并通过无线通信网络将处理后的信息传送至远程用户端,然后通过相应的规则进行各种应用分析。
无线网络传感器是一种将传感器、控制器、计算能力、通信能力完美的结合于一身的嵌入式设备。它们跟外界的物理环境交互,实时的采集信息,并且将收集到的信息通过无线传感器网络传送给远程用户。无线网络传感器一般是由一个低功耗的微控制器(MCU)和若干个存储器、无线电/光通信装置、传感器等组件所集成的,通过传感器、动臂机构、以及通信装置和它们所处的外界物理环境进行交互。一般说来,独立的传感器功能是非常有限的,但是如果将他们大量地分布到所需要检测的物理环境中,并组成一个无线传感网络,加上性能良好的软件系统平台,就能够完成强大的状态监测、实时跟踪、环境监测等功能。随着微机系统和高集成低功耗数字设备的发展,小体积、低成本、低功耗的传感器节点将得以实现。低功耗无线传感模块,便是组成无线传感网络的节点。这样的节点若能配合各种类型的传感器,可组成无线传感器网络(WSN)。无线传感网络是一种开创了新的应用领域的新兴概念和技术。广泛应用于医疗领域、大规模环境监测、智能建筑、战场监视、智能家装、工业自动化和大区域内的目标追踪等领域。无线传感技术、无线传感网络已经被认定是最为重要的研究之一。无线传感器网络节点一般采用的是电池供电,工作环境也通常是比较恶劣的,而且数量大、分布区域广,更换非常困难,所以低功耗是无线传感器网络最重要的设计准则之一。因此,它迫切的需要对传统的嵌入式应用开发系统进行更新和改进,需要精心设计其软
硬件系统,以使其更加的可靠耐用。
1、2无线传感网络的研究现状:
在多入多出(MIMO)和正交频分复用(OFDM)等基础技术支持下,无线通信技术得到了蓬勃的发展,实现了与任何人或任何设备随时随地的进行相互联系相互通信。蓝牙、WIMAX、Wi-Fi、无线局域网和超宽带等无线通信技术都取得了长足的发展。无线技术作为一门蓬勃发展的新兴科学技术,随着它所需要的几种重要的基础技术的不断推广和充分的实际应用,实际检测,它的发展速度也将得到很大的提升。
无线传感模块是无线传感网络中的节点,它是组成无线传感网络的基本组成部分。是属于无线技术中较为底层的一个分支,最早的代表性论述是出现在二十世纪九十年代末的,是一篇题为“传感器走向无线时代”的文章。传感技术的发展经历了三个阶段:一般传感器、智能传感器、无线传感器。一般传感器,是最早产生的传感器,能实现的只是数据的采集;智能传感器,则是在一般传感器的基础上进行改进,使传感器具有计算处理能力,这样传感模块不但能够实现数据等信息的实时采集,还能对所采集到的数据信息进行一定程度的计算和处理,便于进行监控;无线传感器,则是在智能传感器的基础上集成无线功能的模块,使得传感器不再是单独的数据采集模块,而是使之成为一个能够实现数据实时采集、计算和处理,数据信息交换和控制的有机整体。由于越来越多的实际应用方案中开始采用无线节点进行数据采集、处理和通信,无线传感器综合了现代网络、嵌入式计算技术、传感器技术、分布式信息处理技术及无线通信技术等的无线传感基础科技,成为了当前最热点的研究领域。而整个网络可靠性的重要保障就是无线传感网络节点能够稳定的运行,因此在设计无线传感模块时,传感网络、传感技术已经是被认定了的最为重要的研究之一。
当前国内外研究领域中有许多无线传感器网络节点的硬件平台相继出现。其中比较典型的节点有Telos 、Mica 系列、Imote2 和IRIS等。这些平台主要是采用了不同的处理器和无线通信模块。Telos 、Mica系列的一些节点,设计的时间较早,其性能已经落后于当前的一些工业设计中集成电路的水平。但是Imote2 节点,它具有高性能,但是功耗比较大,不能适用于能量要求严格的应用环境,由于无线传感器网络节点通常采用的是电池供电,工作环境比较恶劣,而且节点数量庞大,电池更换非常困难,因此低功耗是无线传感器网络中最重要的设计准则之一。后来的研究成果中,如MIT所研发的模块化平台对于不同的传感器有不同的硬件设计,为了设计一个通用的系统来取代单一的硬件系统,他们的传感器采用垂直连接器来使不同的处理层整合到一起来进行数据收集。I ntel Mote 的研究项目则注重了包括低系统级集成、功耗操作和硬件的重新配置三个方面的要求,希望能够平衡功耗与性能之间的矛盾,但要实现目标还需要一定的努力。
传感技术将会随着计算机技术、集成技术以及电子技术的高速发展,得到不断的推
广和完善。并且会有结构新、功能强、耗能低的传感器更多的用运于各种实际的无线网络当中,以良好的稳定性和高精确度服务于更加广泛的领域。
1、3无线传感网络的应用前景:
在城市中,随着经济的持续发展和产业调整,大批人口将向城市转移,城市人口将不断增加;同时,经济活动日趋频繁,商业活动将更加活跃,汽车的使用数量和使用频率也将大大提升,将会给城市的交通运输带来很大的压力,“停车难”的问题也将会成为制约我国经济发展的瓶颈。修建新的停车场和新的交通设施虽然能够解决部分问题,但是由于其费用高昂而且建设周期也相对较长,还会受到土地使用和城市规划等很多方面的因素的制约。所以,只有在进行硬件设施的建设当中充分的利用现代科学技术,借助国内外交通发展过程中所总结的各种经验,并能够很好的引进我国的城市停车系统,运用软、硬件相结合的方式,为城市建设节省出一大笔费用,同时也能改进停车能的问题。
无线传感技术在医疗领域的应用主要包括跟踪治疗、移动观察、远程医疗、患者数据管理、药物跟踪、手机求救、病人数据收集、医疗垃圾跟踪和短信沟通等多方面的新应用。最近几年,无线通信技术在国内外医疗市场上得到了广泛的应用,无限医疗设备的应用迅猛增长。一个报告指出,欧洲的无线医疗设备的销售额将从2003年的9800万美元增加到2008年的4.458亿美元,主要原因是医护人员希望改善工作流程,增加生产力和改善病人的满意程度,还有增加新的应用,如电子病历、临床疗法决定等。
通过建立完善的Zigbee网络,智能建筑可以感知随处可能发生的火灾隐患,及早提供相关信息;根据人员分布情况自动控制中央空调,实现能源节约;及时掌握酒店客房内客人的出入信息,以便在有突发事件时能及时准确的发出通知,确保客人的人身财产安全。
在机场,持有Zigbee终端的乘客们可以随时得到导航信息,比如登机口的位置,航班的变动,甚至附近有那些商店等,能够更好的为乘客们提供方便快捷的机场服务。
在工业自动化领域内,人们可以通过Zigbee网络实现厂房内不同区域的温湿度监控;及时得到机器运转状况的信息;结合RF标签,可以方便的统计库存量,等等。在医院,Zigbee网络可以帮助医生及时准确的收集急诊病人的相关信息和检查结果,快速准确的做出诊断;戴有Zigbee终端的患者可以得到24小时的体温、脉搏控制;配有Zigbee终端的担架可以遥控电梯门的开关……在医院,时间就是生命,Zigbee网络可以帮助医生和患者争取每一分每一秒的时间。
如果沿着街道、高速公路及其他地方分布式的装有大量的Zigbee终端设备,就能够不用担心会迷路,安装在汽车里的设备将会准确的告诉我们当前所处的位置,正向何处去。虽然全球卫星定位系统(GPS)也能提供类似的服务,但是这种新型的Zigbee分布式系统能够向我们提供更精确,更具体的信息,即使在GPS没有覆盖不到的楼内或隧道
内,仍然能够继续使用该系统。从Zigbee无线网络系统中能够得到更加精确、更加具体的数据信息,如限速、街道是单行线还是双行线、前面每条街道的交通情况或事故信息等。使用这种系统,也可以跟踪公共交通情况,可以适时的赶上下一班车,而不至于在寒风中或烈日下在车站等车。基于Zigbee技术的系统还可以开发出许多其他的功能,例如,在不同的街道、不同的时间段、不同方向上的来车,根据交通流量来自动控制交通红绿灯的时常,以及追踪被盗汽车或超速汽车等应用。
为了推动Zigbee技术的发展,Chipcon(已被TI公司收购)公司于Ember,Freesacal,Honeywell,Mistubishi,Motorla,Philips,Samsung等公司共同成立了Zigbee联盟。目前该联盟以及包含一百五十多家成员,该联盟主席Rober F.Haile 曾于2004年11月访问中国,以免专利的方式吸引中国本地企业加入。根据市场研究机构预测,低功耗、低成本的Zigbee技术在未来几年内将会得到快速的增长,2006年全球Zigbee器件的出货量已达到1000万个,2007年年底将近一亿个,2008年将超过1.5亿个。其中2006年,Zigbee芯片供应方面,TI以及Ember公司位列前两位。这一预言正从Zigbee联盟以及其成员近期的一系列活动和进展中得到验证。在标准林立的短距离无线通信领域,Zigbee的快速发展可以说是另人有些始料不及的,从2004年年底标准确立,到2005年年底相关芯片及终端设备总共销售了1500亿美元,比被业界“炒”了多年的蓝牙、Wi-Fi产品进展都要快。
Zigbee技术在Zigbee联盟和IEEE 802.15.4的推动下,结合其他无线技术,可以实现无所不在的网络。它不仅在工业,农业,军事,环境,医疗等传统领域具有巨大的应用价值,未来在应用中还可以涉及人类日常生活和社会生产活动所有领域。由于各方面的制约,Zigbee技术的大规模的商业应用还有待时日,但已经显示出了非凡的应用价值,相信随着相关技术的日趋成熟和发展推进,一定会得到更广泛的应用。但是,我们还应该清楚的认识到,基于Zigbee技术的无线网络才刚刚开始发展,他的技术,应用都谈不上很成熟,国内企业应该抓住商机,加大投入人才力度,推动整个行业的发展。
1、4本论文的主要内容:
本论文是基于CC2530的温湿度数据采集系统设计。在绪论中,简单的阐述了无线通信,无线传感的研究背景,国内外的发展现状以及无线通信技术的发展前景。随着在无线通信中所用到的各种基础科技的不断成熟,无线通信、无线传感等的研究也不断的进步,并且展现出蓬勃的生命力,在各个领域内都会起到重要的作用,这将会成为今后的科技发展主流。
本文的论述重点是在于实现温湿度数据采集的设计,主要分为三个大部分,一是实现无线传感的硬件模块;二是实现无线传感的软件支持,也就是基于Zigbee协议架构的编程。第三部分是本设计所得出的一些结论。
在第一部分中,介绍了无线传感的硬件模块。包括了无线传感的基本构成,实现原理以及常用到的一些传感器节点和本设计中用到的实验箱。对无线传感网络的整个体系结构进行了具体的阐述。
第二部分中,首先从整体上介绍了Zigbee的体系架构。包括Zigbee技术的发展前景,低功耗低速率的特点以及其网络拓扑结构。Zigbee技术弥补了在无线通信市场中低成本、低功耗、低速率的的空缺,Zigbee技术成功的关键主要是在于便捷而丰富的应用,并不是技术的本身。随着Zigbee技术的日趋成熟,更多的力量将会转到应用的设计、实现互联互通测试和市场的推广等方面的研究。Zigbee是以一个个独立的工作点为依托,通过无线通信组成星状、树桩或网状网络。同时,Zigbee技术是一种应用于短距离范围内的低传输速率下的各种电子设备之间的无线通信技术。其特点有低功耗、可靠性以及高度扩展性。其次,在此基础上对Zigbee协议栈的整体架构中,应用层、物理层、MAC层、网络层以及其他的OSAL、Zmain、Tools等进行了简单的阐述,主要对是其中网络层的功能描述、功能实现、实现原理以及其中的所涉及到的几种常见的路由协议的论述。AODV路由协议是本论文的重点,在第二部分中,详细的介绍了AODV路由协议的原理,路由表结构和其协议控制分组格式,也就是路由请求(RREQ)、路由应答(RREP)、路由错误(RERR)以及HELLO消息的报文格式和其中每段的意义、基本类型、以及标志位所代表的意义。并以流程图的形式说明了各个路由协议控制帧的发送流程。并且对AODV路由协议算法的基本操作进行了详细的描述。描述了为了与目的节点进行单播通信,节点是在怎样的条件下,怎样产生路由请求(RREQ),路由应答(RREP)和路由错误(RERR)消息的;这些消息产生后是怎样处理的;为了正确处理这些信息,其中的一些状态信息是如何在相对应的目的节点的路由表项中进行保存的等问题。
第三部分是结论部分,总结了本设计在设计过程中所得出的结论,实现对温湿度数据的采集。并且提出协议中一些需要改进的方向,以及今后的研究努力方向。
附录中主要是对AODV协议中一些函数的说明。
1、5本论文的结构安排:
1、5、1 第一章绪论部分,阐述了无线通信,无线传感的研究背景,国内外的发展现状以及无线通信技术的发展前景。
1、5、2 第二章为正文部分,包括两大部分:实现温湿度数据采集的硬件部分以及实现其软件部分。
① 实现温湿度数据采集的硬件部分主要包括:无线传感基本结构、无线传感实现原理、本设计所使用的实验箱以及软件支持、常见的无线传感模块以及实现基于CC2530的温湿度采集系统节点模块设计。
② 实现温湿度数据采集的软件部分主要包括: Zigbee技术概述、Zigbee协议栈整
体架构、Zigbee协议栈网络层、AODV路由协议。
Zigbee技术概述中主要包括:Zigbee技术的广阔应用前景、其低功耗低速率技术特点、其网络拓扑和路由。
Zigbee协议栈网络层主要包括: 网络层概述、网络层所实现功能、网络层中常用路由协议。
AODV路由协议主要包括:协议概述、协议的基本原理、AODV路由协议消息控制帧、以及一个AODV建立和维持路由的举例。
1、5、3 第三章为结论部分,总结了本设计在设计过程中所得出的结论,以及今后的研究努力方向。
第二章 温湿度数据采集模块
2、1 无线传感基本结构及实现原理
无线传感器网络在设计目标方面与传统的无线网络有所区别,前者是以数据为中心的,后者以传输数据为目的。在无线传感器网络中,因为节点通常运行在人无法接近的恶劣甚至危险的远程环境中,所以除了少数节点需要移动以外,大部分节点都是静止不动的。在被监测区域内,节点任意散落,节点除了需要完成感测特定的对象以外,还需要进行简单的计算,维持互相之间的网络连接等功能。并且由于能源的无法替代以及低功耗的多跳通信模式节,设计无线传感节点时,有效的延长网络的生命周期以及节点的低功耗成为无线传感器网络研究的核心问题。在节省功耗的同时增加通信的隐蔽性,避免长距离的无线通信易受外界噪声干扰的影响,也都是在设计传感器网络时需要攻克的新难题。
无线传感器节点模型
无线传感网络的建立是基于传感器加无线传输模块的,传感器采集的数据,简单处理后经过无线传输模块传到服务器或应用终端。目标、观测节点传感节点和感知视场是无线传感器网络所包括的4个基本实体对象。另外,要完成对整个系统的应用刻画,还需要对远程任务管理单元、外部网络和用户进行定义。大量传感节点随机部署,单个节点经过初始的通信和协商,通过自组织方式自行配置,形成一个传输信息的单跳链接或一系列的无线网络节点组成的网络,协同形成对目标的感知视场。传感节点检测的目标信号经过传感器本地简单处理后通过单播或广播以多跳的方式通过邻近传感节点传输到观测节点。用户和远程任务管理单元则能够通过卫星通信网络或Internet等外部网络,与观测节点进行数据信息的交互。观测节点向网络发布查询请求和控制指令,接收传感节点返回的目标信息。
无线传感器网络通信体系结构
无线传输模块可以实现短距离(小于300米)的信号传输。在实际应用中,需要根据不同需求选择传感器,如电压电流、功耗、温湿度、液面、震动、压力等等。
无线传感器网络应用系统架构
2、2 温湿度数据采集
2、2、1温湿度数据采集原理:
温湿度探头直接使用IIC接口进行控制。其电路原理图如下所示:
本实验将使用CC2530 读取温湿度传感器SHT10的温度和湿度数据,并将采样到的数据转换然后再LCD显示。其中对温湿度的读取是利用CC2530的I/O(P1.0和P1.1)模拟一个类IIC得过程。
2、2、2 实验中所用芯片SHT10:
SHT10 是一款高度集成的温湿度传感器芯片, 提供全标定的数字输出。它采用专利的CMOSens 技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容性聚合体测湿敏感元件、一个用能隙材料制成的测温元件,并在同一芯片上,与 14 位的 A/D 转换器以及串行接口电路实现无缝连接。 SHT10 引脚特性如下:
1. VDD,GND SHT10 的供电电压为 2.4~5.5V。传感器上电后,要等待 11ms 以越过“休眠”状态。在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个 100nF 的电容,用以去耦滤波。
2. SCK 用于微处理器与 SHT10 之间的通讯同步。由于接口包含了完全静态逻辑,因而不存在最小 SCK 频率。
3. DATA 三态门用于数据的读取。DATA 在 SCK 时钟下降沿之后改变状态,并仅在 SCK 时钟上升沿有效。数据传输期间,在 SCK 时钟高电平时,DATA 必须保持稳定。为避免信号冲突,微处理器应驱动 DATA 在低电平。需要一个外部的上拉电阻(例如:10kΩ)将信号提拉至高电平。上拉电阻通常已包含在微处理器的 I/O 电路中。
向 SHT10 发送命令:
用一组“ 启动传输”时序,来表示数据传输的初始化。它包括:当 SCK 时钟高电平时DATA 翻转为低电平,紧接着 SCK 变为低电平,随后是在 SCK 时钟高电平时 DATA 翻转为高电平。后续命令包含三个地址位(目前只支持“000”,和五个命令位。SHT10 会以下述方)式表示已正确地接收到指令:在第 8 个 SCK 时钟的下降沿之后,将 DATA 拉为低电平(ACK位)。在第 9 个 SCK 时钟的下降沿之后,释放 DATA(恢复高电平)。
测量时序(RH 和 T):
发布一组测量命令(‘00000101’表示相对湿度 RH,‘00000011’表示温度 T)后,控制器要等待测量结束。这个过程需要大约 11/55/210ms,分别对应 8/12/14bit 测量。确切的时间随内部晶振速度,最多有±15%变化。SHTxx 通过下拉 DATA 至低电平并进入空闲模式,表示测量的结束。控制器在再次触发 SCK 时钟前,必须等待这个“数据备妥”信号来读出数据。检测数据可以先被存储,这样控制器可以继续执行其它任务在需要时再读出数据。接着传输 2 个字节的测量数据和 1 个字节的 CRC 奇偶校验。 需要通过下拉 DATA 为低电平,uC以确认每个字节。所有的数据从 MSB 开始,右值有效(例如:对于 12bit 数据,从第 5 个SCK 时钟起算作 MSB; 而对于 8bit 数据, 首字节则无
意义)。用 CRC 数据的确认位,表明通讯结束。如果不使用 CRC-8 校验,控制器可以在测量值 LSB 后,通过保持确认位 ack 高电平, 来中止通讯。在测量和通讯结束后,SHTxx 自动转入休眠模式。
通讯复位时序:
如果与 SHTxx 通讯中断,下列信号时序可以复位串口:当 DATA 保持高电平时,触发SCK 时钟 9 次或更多。在下一次指令前,发送一个“传输启动”时序。这些时序只复位串口,状态寄存器内容仍然保留。
2、2、3 主程序程序流程图:
开始 系统时钟初始化 LCD初始化 读取温湿度数据 显示温湿度数据
2、2、4 核心程序代码:
void main()
{
int tempera; int humidity; char s[16];
UINT8 adc0_value[2]; float num = 0;
SET_MAIN_CLOCK_SOURCE(CRYSTAL); // 设置系统时钟源为 32MHz 晶体振荡器
GUI_Init(); // GUI 初始化
GUI_SetColor(1,0); // 显示色为亮点,背景色为暗点
GUI_PutString5_7(25,6,\"OURS-CC2530\"); //显示 OURS-CC2530 GUI_PutString5_7(10,22,\"Temp:\"); GUI_PutString5_7(10,35,\"Humi:\"); GUI_PutString5_7(10,48,\"Light:\"); LCM_Refresh(); while(1) {
th_read(&tempera,&humidity); //读取温度和湿度 sprintf(s, (char*)\"%d%d C\((INT16)((int)tempera % 10))); //将温度结果转换为字符串 GUI_PutString5_7(48,22,(char *)s); //显示结果 LCM_Refresh();
sprintf(s,(char*)\"%d%d %%\((INT16)((int)humidity % 10))); //将湿度结果转换为字符串 GUI_PutString5_7(48,35,(char *)s); //显示结果 LCM_Refresh();
3、本设计所使用的实验箱以及软件支持
3、1所使用的试验箱概述
物联网创新实验系统IOV-T-2530采用系列传感器模块和无线节点模块组成无线传感网,扩展嵌入式网关实现广域访问,可实现多种物联网构架,完成物联网相关的各种
传感器的信息采集、无线信号收发、Zigbee网络通讯、组件控制全过程。该工具箱提供了无线传感网通信模块、基本的传感器及控制器模块、嵌入式网关、计算机服务器参考软件等,实验系统形式如下图:
3、2实现基于CC2530的温湿度采集系统节点模块设计
实验系统包含4个无线传感网通信节点和一个无线网络协调器,其结构如下:
无线节点模块:主要有射频单片机构成,MCU是TI的CC2530,2.4G载频,棒状天线。
传感器及控制模块:系列传感器模块,包括温湿度传感模块、继电器模块和RS232模块等,也可以通过总线扩展用户自己的传感器及控制器部件。
电源板或智能主板:即实现无线节点模块与传感及控制模块的连接,又实现系统供电,目前主要有两节电池供电,保留外接电源接口,可以直接有直流电供电。
节点图如下:
第三章 基于CC2530的Zigbee协议栈
3、1 基于CC2530的ZIGBEE协议栈
3、1、1 Zigbee技术的广阔应用前景
Zigbee技术的使用与发展很大程度上弥补了无线通信市场上低功耗、低成本、低速率的空缺,Zigbee技术发展成功的关键更多的是因为丰富而便捷的应用,并不是技术本身。随着Zigbee技术的深入发展和应用,越来越多的注意力和研究力量将会转到应用的设计、实现互联互通测试和市场的推广等方面。Zigbee技术的关键点是发展一种易布建、低成本、低功耗的无线网络,其低耗电性将使产品的电池能维持6个月到数年的时间。
对Zigbee技术的应用前景预测被非常好。Zigbee在未来的几年里将在工业无线定位、工业控制、消费电子、汽车自动化、家庭网络、楼宇自动化、医用设备控制等多个控制领域具有广泛的应用前景,特别是工业控制和家庭自动化,将成为今后Zigbee芯片的主要应用领域。
通常符合下列条件之一的应用,就可以考虑采用Zigbee技术: ·网点多:需要数据采集或监控的网点多。
·低传输量:要求传输的数据量不大且要求数据成本低。 ·可靠性高:要求数据传输可靠性、全性高。
·体积小:设备体积很小,体积较大的充电电池或者电源模块不便放置。 ·电池供电。
·覆盖量大:所需检测点监测点多,地形复杂,需要较大的网络覆盖面积。 ·现有移动网络的覆盖盲区。
·遥测、遥控系统:使用现存移动网络进行的低数据量传输。 ·局部区域移动目标的定位系统:使用GPS效果差、成本高的。 根据Zigbee联盟的观点,一般家庭可将Zigbee应用于以下装置: ·灯光、窗帘的自动控制以及空调系统的温度控制器。 ·紧急呼叫器,老年人与行动不便者或者病患的紧急呼叫。
·各种电子设备,家用电器的万能遥控器、电脑等的无线键盘、无线鼠标,摇杆、玩具等。
·家庭烟雾浓度侦测器。 ·家具智能型标签。
Zigbee无线传感网络是就是Zigbee应用方案的经典应用。无线传感网络是基于IEEE802.15.4技术标准和Zigbee网络协议而设计的无线数据传输网络,该网络主要应用在压力过程控制数据采集、流量过程控制数据采集、温度湿度监控、楼宇自动化、工业
控制、数据中心、社区安防、设备监控、环境数据监控、制冷监控、仓库货物监控等方面。适用于蔬菜大棚温度、湿度和土壤酸碱度监控,钢铁冶炼温度控制,煤气抄表等各个领域。这种网络主要用于无线系统中短距离的连接,提供传感器网络接入,能够满足各种传感器的数据输出和输入控制的命令和信息的需求,实现系统网络化、无线化。这种网络是低速率的无线传感网络,射频传输成本低,各节点只需要很少的能量,低功耗,适用于电池长期工作供电,可实现一点到多点,两点之间的对等通信,快速组网自动配置,自动恢复和高级电源管理,网络中任意个传感器之间可相互协调实现数据通信。
3、1、2 低功耗低速率技术特点
Zigbee技术是一种应用于各种电子设备之间的无线通信技术,这种通信组网是基于中短距离范围内、低传输速率下的。根据Zigbee技术的本质,它具有下列特性:
1、低功耗 在非工作模式时,Zigbee节点是处于休眠状态的。Zigbee设备休眠激活时延为15ms,搜索时延一般为30ms。由于收发信息低功耗,工作时间短,且采用了休眠模式,使Zigbee节点耗电极少,其电池工作时间可长达6个月到2年左右。同时,由于电池使用时间取决于电池种类、容量和应用场合等很多因素,因此 Zigbee技术在协议上对电池的使用也做了优化;对于某些工作实践和总时间之比小于1%的情况,电池寿命甚至可以超过10年。工作模式下,Zigbee信号的收发时间短,因为传输数据量小,传输速率低;
2、高度扩展性
通过Network Coordinator的网络最多可达到6500个Zigbee网络节点,再加上Network Coordinator的可互相连接性,整体Zigbee网络节点数目将十分庞大。但是,就一般来说,一个Zigbee的网络最多包括255个Zigbee网络节点,有一个是Master设备,其余则都是Slave设备。
3、可靠性Zigbee技术中为了提高可靠性,在Zigbee介质接入控制层(MAC层)中,采用了talk-when-ready的碰撞机制这是一种完全确定的数据传输机制,在这种传输机制下,当有数据需要传送时,则立刻传送。每个数据包的发送都必须等待对方的确认消息,并进行信息确信回复,如果没有得到确认信息的回复就表示发生了碰撞,将再传一次。这种方法的采用可以提高系统传输的可靠性。同时,Zigbee针针对时延敏感的应用也做了优化,通过时延和休眠状态激活的时延都非常短。也为需要固定带宽的通信业务预留了专用时隙,避免了发送数据时的竞争和冲突。
3、1、3 网络拓扑和路由
Zigbee每个节点的功能并非相同,因为它是以一个个独立的工作点为依托,通过无线通信组成星状、树桩或网状网络。有半功能设备(RFD)和全功能设备(FFD)之分,负责与所控制的子节点汇聚数据、通信和发布控制,或起到通信路由的作用,称之为全
功能设备(FFD);另外还有一些节点,也就是系统中大部分节点,为子节点,从组网通信上,它只是其中功能的一个子集,并成为半功能设备(RFD)。
每个网络都有一个相当于现在有线局域网中的服务器的唯一的协调器,具有对本网络的管理能力。网络中的全功能节点可作为路由器、协调器以及终端节点来使用,而半功能节点只能由终端节点使用。
在任何一种网络拓扑结构中,每个独立的网络都有一个唯一的网络号(PAN标识符)。利用PAN标识符,采用16位的短地址码进行网络设备间的通信,并可激活网络设备之间的通信。
Zigbee路由和协调器需要对路由表进行维护。Zigbee路由和协调器也可以保存一定数据量得入口,仅仅在路由维护时使用这些入口,或者在耗尽所有其他的路由容量的情况下使用这些入口。
路由选择是在网络中的设备相互合作条件下建立路由的一个流程的选择,并且该流程通常与特定的源地址和目的地址相对应。路由选择包括如下流程:
1、路由搜索的初始化。 2、接受路由请求命令帧。 3、接受路由应答命令帧
3、2 Zigbee协议栈整体架构:
Zigbee协议结构体系
Zigbee协议栈由一组子层组成,每一层为其上层提供一定的特定服务:一个数据实体提供数据传输服务,一个管理实体提供管理、维护等服务。每个服务实体通过一个服务接入点(SAP)为其上层提供服务接口,并且每个服务接入点(SAP)提供了一系列的基本服务指令来实现相应的功能。
Zigbee协议栈中包括应以下各个子层: APP(Application Programming):应用层目录,这是用户创建各种不同工程的区域,在这个目录中包含了应用层的内容和这个项目的主要内容,在协议栈里面一般是以操作系统的任务实现的。
HAL(Hardware (H/W) Abstraction Layer):硬件层目录,包含有与硬件相关的配置和驱动及操作函数。ZigBee硬件层通过射频固件和射频硬件提供了一个从MAC层以硬件层无线信道的接口。在硬件层中,包含一个硬件层管理实体(PLME),该实体通过调用硬件层的管理功能函数,为硬件层管理服务提供其接口,同时,还负责维护由硬件层所管理的目标数据库,该数据库包含有硬件层个域网络的基本信息。
物理层结构模型
MAC:介质接入控制子层,包含了MAC 层的参数配置文件及其MAC 的LIB 库的函数接口文件。实现的功能有:1、能产生网络信标。2、支持PAN的连接和断开连接。3、同信标保持同步。4、在对等的MAC实体之间提供一个可靠的通信链路。5、处理和维护GTS机制。6、信道接入采用CSMA-CA接入机制。7、支持设备的安全性。介质访问控制层(MAC)帧被称为MAC协议数据单元(MPDU),其长度不超过127个字节。它具有四种不同的帧形式,即信标帧、数据帧、确认帧和命令帧。
MT(Monitor Test):实现通过串口可控各层,与各层进行直接交互。
NWK(ZigBee Network Layer):网络层目录,含网络层配置参数文件及网络层库的函数接口文件,APS 层库的函数接口。
OSAL(Operating System (OS) Abstraction Layer):协议栈的操作系统。 Profile:AF(Application work) 层目录,包含AF 层处理函数文件。
Security:安全层目录,安全层处理函数,比如加密函数等。
Services:地址处理函数目录,包括着地址模式的定义及地址处理函数。 Tools:工程配置目录,包括空间划分及ZStack 相关配置信息。 ZDO(ZigBee Device Objects):ZDO 目录。
ZMac: MAC 层目录,包括MAC 层参数配置及MAC 层LIB 库函数回调处理函数。 ZMain:主函数目录,包括入口函数及硬件配置文件。 Output:输出文件目录,这个EW8051 IDE 自动生成的。
3、3: Zigbee协议栈网络层:
3、3、1网络层概述及其实现功能
ZigBee网络层必须提供功能,其的主要就是提供一些必要的函数,以保证IEEE 802.15.4-2003ZigBee协议栈的MAC层能够正确操作,正常工作,并且为应用层提供一个合适的服务接口。为了和应用层通信,必须向其提供接口,网络层的概念包括了两个必要的功能服务实体,提供必要的功能。它们分别为数据服务实体(NLDE)和管理服务实体(NLME)。网络层数据实体(NLDE)通过网络层相关的数据库服务接入点(NLDE-SAP)提供数据传输服务,网络层管理实体(NLME)通过网络层相关的管理库服务接入点(NLME-SAP)提供网络管理服务,网络层管理实体利用网络层数据实体来获得一些网络管理任务,并完成一些网络的管理工作。并且,网络层管理实体还维护一个管理对象的数据库,叫做网络信息库(NIB),网络层管理实体完成对网络信息库(NIB)的维护和管理。
1、网络层数据实体(NLME)
网络层数据实体提供一个数据服务,同一个网络中,即在同一个内部个域网中的两个或者更多的设备之间传送数据时,允许一个应用程序将按照应用协议数据单元(APDU)的格式进行传送数据。
网络层数据实体提供如下服务:
① 生成网络级别的协议数据单元(网络层协议数据单元)PDU(NPDU):网络层数据实体(NLME)通过增加一个适当的协议头,从应用支持子层的协议数据单元PDU中生成网络层的协议数据单元(NPDU)。
② 指定拓扑传输路由:网络层数据实体能够发送一个网络层的协议数据单元到一个合适的设备,该设备可以是最终的目的通信设备,也可能是通信链路中到最终目的节点的下一个节点。
2、 网络层管理实体
网络层管理实体提供网络管理服务,允许一个应用程序与堆栈相互作用。并且网络层管理实体还维护一个叫做网络信息库(NIB)的管理对象的数据库。
网络层管理实体应该提供如下服务:
① 配置一个新的设备:为所需的操作充分配置协议栈的功能。为保证设备正常工作的需要,满足配置的需要,设备应该具有足够堆栈。配置选项中包括对一个ZigBee协调器的操作,或加入一个已存在的网络。
② 开始一个网络:建立一个新的网络功能,使之具有建立一个新网络的能力。 ③ 加入、重新加入和离开一个网络:实现加入、重新加入和离开一个网络的功能,以及为一个ZigBee协调器或者ZigBee路由器请求一个设备离开网络的能力。具有连接或者断开一个网络的能力。
④ 寻址:ZigBee协调器和ZigBee路由器具有为新加入网络的设备分配地址的能力。
⑤ 邻居设备发现:具有发现、记录和汇报有关单跳邻居设备信息的能力。 ⑥ 路由发现:具有发现和记录有效地传送信息的网络路由能力,即信息可以有效的传达。
⑦ 收控制:具有控制设备接收机接收状态的能力,即控制何时接收者是激活的,以及接收激活时间的长短,从而使MAC层的同步或者直接接收等。
⑧ 路由:具有使用不同路由机制的能力。有单播、多播、广播等,使得路由能够在网络中高效率的交换数据。
3、网络层服务规范
网络层通过两种服务访问点(SPA)提供相应的两种服务,它们分别是网络层数据服务(NLDE)和网络层管理服务(NLME)。网络层数据服务通过网络层数据实体服务接入点接入,网络层管理服务通过网络层管理实体服务接入点接入。这两种分别服务通过MCPS-SAP和MLME-SAP接口为MAC层提供接口。这些接口之外,在NLDE-SAP和NLME-SAP之间有一个隐藏的借口,允许NLME使用网络层的数据服务。
NWK层的组件以及接口如下图所示:
网络层参考模型
3、3、2网络层中常用路由协议
在移动Ad hoc网络中,随着节点移动,网络拓扑结构在不断变化。如何迅速准确地选择网络路由的问题,是移动Ad hoc网络的一个重要核心的问题。常规的距离向量算法DVA和链路状态算法LSA,不能满足Ad Hoc网络中的动态变化的网络拓扑结构;单向信道的存在;有限的无线传输带宽;无线移动终端的局限性等特点。因此,自20世纪70年代美军DARPA资助的分组无线网络项目开展以来,国内外的许多研究人员从不同的角度提出了一系列的移动Ad hoc网络路由协议。这些协议必须处理好移动Ad hoc网络的以上特点。根据发现路由的驱动模式的不同,可将这些路由协议分为表驱动路由协议和按需路由协议。如图所示:
表驱动路由协议又称为主动式(或先应式)的路由协议(Proactive Protocols)。是一种基于表格的路由协议。该路由协议试图维护网络中各个节点到其余所有节点的最新路由信息,所有路由信息都保持一致。这个路由协议中,每个节点都维护一张或多张表格,这些表格中包含到达网络中所有其他节点的路由信息表。当检测到网络拓扑结构有变化发生时,节点在网络中发送更新消息。收到更新消息的节点便更新自己的表格,以维护路由信息的一致、及时、准确。拓扑更新消息在网络中传播的方式和需要存储的表的类型决定了不同的表驱动路由协议的区别。表驱动路由协议根据变化更新路由表,不断的检测网络拓扑和链路质量的变化,所以路由表可以准确地反映网络的拓扑结构。只要源节点发送报文,就能够立即取得到达目的节点的路由。
目前常见的有C.E,Perkins在1994年提出的DSDV路由协议、CGSR路由协议以及WRP路由协议等。DSDV路由协议是一种无环路距离向路由协议,它是传统的Bellman Ford路由协议的改进。在DSDV中,每个移动节点都需要维护一个路由表,路由表表项其中包括目的节点、跳数和目的地序号,其中目的节点分配目的地序号,主要用于判别路由是
否过时,并且能够防止路由环路的产生。每个节点必须周期性的与邻节点交换路由信息,也可以根据路由表的改变来触发路由更新。
CGSR路由协议与DSDV类似,但是CGSR并不是一个大的平面网络。CGSR分配指定了网关节点簇首节点和,其中网关节点是两个簇之间的节点,簇首节点用来控制一组节点和网关节点。其中每个节点都必须有其簇成员的路由表。因为,当一个节点要发送分组时,这个分组首先到达这个发送节点的簇首节点,然后簇首节点把该分组通过网关节点转发给另外一个簇首节点,不断重复这个过程直到分组到达目的节点。
WRP路由协议是另一种表驱动路由协议,在网络的节点中保存路由信息。每个节点都在路由表中保存有如下信息:距离、路由、链路开销和重传消息的列表。重传消息的列表记录关于重传计数器、消息序列号、每一个邻节点正确应答所需的标识以及更新消息的更新列表等信息。WRP的优点就是当一个节点试图执行路径计划算法时,可以通过目的节点的上游节点所保存的信息和邻节点所保存的信息来限制算法,使得算法收敛得更快并避免路由当中的环路。由于WRP需要保存4个路由表,所以比大多数的协议需要更大的内存。WRP还依赖于周期性的Hello消息,这也要占用带宽。
这类路由协议通常是通过修改常规的Internet路由协议以适应移动Ad hoc网络环境,通过引入序列号机制解决了“路由环路”和“计数到无穷”的问题;通过采用“时问驱动”和“事件驱动”机制更新路由信息,尽量减少路由等控制信息对无线信道的占用,以提高系统效率。在主动式路由协议中,由于每个节点需要实时地维护路由信息,这样在网络规模较大、拓扑变化较快的环境中,大量的拓扑更新消息会占用过多的信道资源,使得系统效率下降。
为此,1996年卡耐基梅隆大学的David B.Johnson在DSR协议中提出了一种新的路由选择原则:按需路由协议。按需路由协议又称为反应式路由协议(Reactive Protocols)。与主动式路由协议相比,它是一种被动式的路由协议。在这类协议中,节点平时并不实时地维护网络路由,只有在节点有数据需要发送时,从激活路由发现机制寻找到达目的地的路由。路山发现过程如图所示。当节点1有数据要向节点8发送且无路由时,节点1启动路由发现过程:
1.节点1向邻居节点(节点2、3、4)发送路由请求消息; 2.中间节点转发路由请求消息直至目的节点8;
3.目的节点选择合适的路由返回路由响应消息,该消息中携带了从节点1到节点8的完整路由。
按需路由协议的路由发现过程
根据国际上目前研究的结果可知,在各种不同的情况下比较时,基于按需方式的路由算法要比基于表驱动方式的路由算法在性能上有着明显的优势。另外,在负载较重的情况下,按需式的路由协议中AODV协议的性能最为理想。
第四章 AODV路由协议
4、1协议概述:
AODV自组织按需请求型距离向量路由协议(Ad Hoc On Demand Distance Vector,简称AODV),AODV采用的是逐跳转发分组方式,在每个节点之间保存了路由请求和路由回答的结果,因此路由的头部不需要携带完整的路由信息,从而提高了协议的效率。算法旨在多个移动节点中建立和维护一个自启动的,动态的,多跳路由的专属网络。它是一种按需的改进的距离向量路由协议,具有按需路由协议的特点即在AODV路由协议中,网络中的每个节点在需要进行通信时才发送路由分组,而不会周期性地交互路由信息以得到所有其它主机的路由;同时具有距离向量路由协议的一些特点,即各节点路由表只维护本节点到其他节点的路由,而无需掌握全网拓扑结构。网络中连接的断开和异动都会影响网络的拓扑结构,AODV 使得移动节点能适时对这种变化做出响应。AODV 的操作是无自环的,并且由于解决了 Bellman-Ford“无穷计数”的问题,使得该算法在网络拓扑变化时能够快速收敛。当一个连接断开时,AODV 会告知所有受到影响的节点,这些节点会让用到这个连接的路由失效。AODV 的一个显著特点是它在每个路由表项上使用了目的序列号。目的序列号由目的节点创建,并且被包含在路由信息中,然后这些路由信息将被回发到所有向它发起请求的节点。目的序列号的使用确保了无回环,并且易于编程。如果到一个目的有两条路由可供选择,那么收到请求的节点将会选择序列号最大的那一条。此外,AODV另一个显著的特点是它加入了组播路由协议扩展,并支持QOS。它的缺点是:不支持单向信道,原因是AODV协议基于双向信道的假设工作,路由回答分组直接沿着路由请求的反方向回到源节点。
4、2协议的基本原理:
路由请求(RREQ),路由回复(RREP)和路由错误(RERR)是AODV定义的三种类型的消息控制帧。这些消息是通过UDP和通常的 IP 协议来接收。比如说,发起请求的节点必须要用它独有的的IP地址作为消息中的发起者 IP。如果是广播,就将采用IP协议指定的广播地址也就是:255.255.255.255,这个地址使得这种消息将不会被无目的的转发。在AODV路由协议中,启动路由发现过程时,要求特定的消息(RREQ等)在其邻居节点间散布,而且有可能散布至整个网络结构。这些RREQ的散布的范围由IP头中的 TTL 来指定。
当源节点希望发送数据而又没有到目的节点的现存的有效路由时,将会启动一个路由发现过程:给相互处于对方的无线电覆盖范围之内的邻近节点广播一个路径请求分组(RREQ),AODV路由协议中的中间节点允许响应RREQ,RREQ会被这些邻近节点继续转发,直到到达一个拥有到达目的节点的足够新鲜路径的中间节点或目的节点。在转发RREQ的同时,中间节点将会建立一条反向路径,通过在它们的路由表中记录第一个转发给它们RREQ拷贝的邻近节点来实现反向路径的建立。当RREQ到达了拥有一条通向目的节点足够新的路径的中间节点或目的节点时,目的节点或该中间节点通过已经建立的反向路径以单播的方式向转发给它RREQ拷贝的邻近节点发送一个路径响应分组(RREP)。RREP沿着反向路径到达源节点的过程中,这条路径上的所有节点在它们的路由表中都会建立一个通向目的节点的正向路径。路由表项建立以后,路由中的每个节点都要执行管理路由表和路由维持的任务,其路由表中都需要保持一个路由表项,这个路由表象都有一个相应目的地址,用来实现逐条转发。在路由表的维护过程中,当该路由不再被使用时,节点就会从路由表中删除相映项。同时,在数据传送过程中,节点会监视一个活动路由中下一跳节点的状况,当中间节点检测到正在传输数据的活动路由有链路断开或节点收到去往某个目的节点的数据报文而节点没有到该目的节点的有效路由的情况时,中间节点就以单播或多播的方式发出路由错误RERR消息通知其他节点以修复路由。在RERR消息中,指明了由于何种错误而导致无法到达的目的节点。每个接收到RREQ的节点都保留了一个“先驱列表”,用来帮助完成错误报告功能,在这个列表中保
存了当前节点的一个相邻节点,而这个相邻节点的去往故障节点的下一跳就是当前节点。其流程如下图所示:
AODV是一个路由协议,它的工作就是管理路由表。即使是短期的路由,也必须保留AODV 的每个路由表项包含它在路由表里的信息。AODV路由算法中所定义的路由表项保留一下几项信息:
1、目的节点IP地址 2、目的节点序列号 3、目的节点序列号标志
4、其他状态和路由标志(比如,有效,无效,可修复,正在修复) 5、网络接口(移动节点访问信道的接口) 6、跳数(到达目的节点需要的跳数) 7、下一跳IP地址 8、先驱表
9、状态标记(路由过期或应当删除的时间) 这几项的作用有以下几点:
目的节点IP地址,是每个表项都具有的,而且是各不相同的,并以此作为查找和区
别网络路由的关键。目的节点的序列号,使用以防止网络产生环路的,只有当收到的RREP和RREQ中传送的序列号比当前节点对应路由表项中的目的序列号大时才能被接收,且用于更新路由表项。目的序列号标志,显示此路由表项的序列号是否有效。其他状态和路由标志,表示该路由是有效或无效,是否可修复,是否正在修复等。网络接口,是移动节点访问信道的接口。跳数,表示从当前节点到达目的节点需要的跳数,每经过一个无线路由器则计算一跳。下一跳IP地址,是下一跳节点保存到达目的节点的路径上的下一跳节点的地址。先驱表,是指使用此路由表项的所有邻居节点的地址。状态标记,表明路由表项是有效或者是己过期又或是已删除。其中包括生存期值(保存了该路由表项的过期时间或者是删除该表项的时间)。当状态标记为有效时,生存期值表示的是当前表项的过期时间;当状态标记为已过期时,生存期值表示删除该表项的时间。
避免路由回环至关重要的环节是管理序列号,即使是当连接断裂,一个节点不可再到达而且也无法提供它自己的序列号信息的时候也是如此。一个节点在以下两种情况下可以自行增加自己的序列号:1、在节点产生RREQ之前,立即增加它自己的序列号;2、在目的节点或中间节点产生一个RREP对RREQ进行应答之前,必需更新自己的序列号,更新值应为当前序列号与RREQ中的目的序列号之间的最大值。当一条链路断开或失效,致使某些节点不能提供自己的序列号,而导致一个节点不可达,当这种情况发生时,将使得这条路由失效,通过对标注路由表项为不正确和对序列号的操作来实现。即将中断链路作为下一跳的路由表项的目的序列号加1,并将状态标志设为“无效”,使对应的网络路由表项失效。当节点收到任何有关于受影响的目的节点的足够新的路由信息时,节点则按照更新的报文中的信息来更新路由表项。
4、3 AODV路由协议消息控制帧
前文中提到路由请求(RREQ),路由回复(RREP)和路由错误(RERR)是AODV定义的三种类型的消息控制帧。此外,还有邻节点测探分组HELLO。以下是各种分组的消息构成以及发送流程图:
路由请求RREQ:
当源节点需要发送数据但又没有找到到目的节点的有效路由时,启动一个路由发现过程:即向网络广播一个路由请求分组RREQ。RREQ的类型为指控制报文的类型,有5个标志位,分别为:J为加入标记;R为修复标记;J和R都为多播保留的字段。G为免费路由请求标记,表明是否需要将RREP发送给目的IP地址域中指明的节点;D为目的节点回复标记,表明只有目的节点才可以对该RREQ进行回复;U为序列号未知标记,表明目的序列号未知。跳数为从源节点到当前收到路由请求的节点所经过的节点的个数。RREQ标识是用来保证唯一标识一次路由建立过程而与源IP地址一起发送的路由请求。目的节点序列号是源节点收到的最新到目的节点的任何路由的序列号。源节点IP地址是发起路
由请求的节点的IP地址。源节点序列号是发起路由请求的节点当前的序列号。
其报文格式如下图:
RREQ分组格式
路由请求RREQ流程图:
路由应答RREP:
当中间节点有一条“足够新”的路由到达目的节点或路由请求到达目的节点时,中间节点或目的节点就会以单播的方式向源节点返回发送一个路由应答分组,路由应答分组就会沿着刚建立的逆向路径传输回源节点,源节点收到该路由应答分组后则开始向对应目的节点发送数据。RREP的类型为指控制报文的类型,有2个标志位,分别为:R和A,R表示修复标记,为多播保留的字段;A表示需要确认标志,表示是否需要确认已经收到RREP。前缀长度非零的情况下说明指定的下一跳将被当作到达前缀所指定的子网的下一跳节点。跳数为从源节点到当前收到路由请求的节点所经过的节点的个数。RREP标识是用来保证唯一标识一次路由建立过程而与源IP地址一起发送的路由应答。目的节点序列号是源节点收到的最新到目的节点的任何路由的序列号。源节点IP地址是发起路由请求的节点的IP地址。生存时间即为收到RREP的节点认为该路由有效的时间,单位为:us。
其报文格式如下图:
RREP分组格式
路由应答RREP流程图(见下一页): 路由错误RERR:
在数据传输过程中,当中间节点检测到路由发生错误,链路断开或路由信息丢失时,就会向源节点发送路由错误RERR消息,源节点收到路由错误消息后,就会知道现存路由传输过程中存在路由错误,并根据RERR中指示的不可达目的节点重新寻找路由。RERR的类型为指控制报文的类型。N为不删除路由标记,当节点将错误信息实现本地链路修复完成时通知上游节点不删除该路由。不可到达的节点的个数(Dest Count)至少为1。不可达的目的节点IP地址,是因为链路中断或其他原因导致不能到达目的节点的IP地址。不可达的目的节点序列号为路由条目中保存的当前路由节点之前的不可到达的目的节点的IP地址。
其报文格式如下图:
RERR分组格式
路由应答RREP流程图:
路由错误RERR流程图:
HELLO消息:
HELLO报文是TTL=1的路由应答分组,对于HELLO报文,只需要RREP中的目的节点序列号、跳数(为1)、生存时间、目的节点地址,其余信息均无效。RERR的类型为指控制报文的类型。跳数为从源节点到当前收到路由请求的节点所经过的节点的个数。目的节点序列号是源节点收到的最新到目的节点的任何路由的序列号。生存时间的算法是:允许丢弃的HELLO分组的个数*HELLO分组发送间隔。
其报文格式如下图:
HELLO消息分组格式
HELLO消息流程图:
总 结
在本次设计中,主要目的是设计一个基于CC2530的温湿度数据采集系统。该系统是一个采用CC2530无线单片机进行温湿度的数据采集,并且结合Zigbee协议架构进行编程的设计,主要是用C51实现基于CC2530的温湿度数据采集系统模块的设计,并在IAR集成环境开发环境中进行基于Zigbee架构的编程,节点模块的调试,最后,实现无线传感网络的构建。。在基于Zigbee无线传感器节电模块上,可以实现数据的实时采集,处理以及传输等功能。本设计所构成网络,可以实现在谷仓内的温湿度检测,工厂厂房内不同区域的温湿度控制以及大面积的温室培养等功能。
本论文的主要论述点在于AODV路由协议的研究,论述点有以下一方面:
1、对Zigbee协议栈中网络层所实现的功能,以及网络层中所使用的路由协议进行了比较、论述,主要对应用较为广泛的AODV协议进行详细的论述。
2、细致的研究了AODV协议,包括AODV协议的整体概况,路由协议的路由表结构,控制分组的帧结构,以及AODV分组的详细算法,为以后的研究奠定了理论基础。
在研究中总结出,AODV路由协议作为改进的网络层路由协议可以实现:避免链路中断的路由,AODV路由协议中每个节点的路由表中只保存到达目的节点的一条有效路径,然而,无线传感网络中链路容易发生断裂而是路径失效,在AODV路由协议的基础上可实现一种叫AOMDV的改进式路由协议,在一次路由请求过程中,同时建立几条相互无交点的路径,以防传输过程中发生路径失效的问题。
本次论文的完成,让我总结道,在以后的工作中,还可以继续从AODV协议中以下几个方面着手,进行研究和改进:
1、减少节点的能量消耗。在无线传感网络中一旦某个节点失效,将会导致整个网络瘫痪,因此减少节点的能量消耗是不可避免要面对的问题之一。
2、减少路由发现过程中的开销。这其实也是减少节点的能量消耗的一种措施,尽量减少在路由发现过程中所损失的能量。
3、路由选择。路由优化选择可以尽量避免不必要的路由请求的广播以及信息传输,做到这一点不仅可以提高效率,也可以在减少能量消耗方面做出贡献。
附录1
Zigbee协议栈中缩略语和简称:
AIB 应用支持层的信息库 AF 应用框架
APDU 应用支持子层协议数据单元 APL APS APSDE APSDE-SAP APSME APSME-SAP ASDU APS BRT BTR BTT CCM* CBC-MAC CSMA-CA EPID FFD GTS HDR NIB LQI LR-WPAN MAC MCPS-SAP MIC MLME-SAP MSC MSDU MSG NBDT NHLE 应用层 应用支持子层 应用支持子层数据实体
应用支持子层数据实体-服务接入点 应用支持子层管理实体
应用支持子层管理实体—服务接入点 服务数据单元 广播重试计时器 广播事务记录 广播事件务表 模式增强计数器选项
载波侦听多路访问——冲突检测 扩展 PAN ID 全功能设备 同步时隙 头 信息库 链路质量指标 低速率无线个人区域网 媒体访问控制
媒体访问控制公用部分子层—服务接入点消息完整性代码
媒体访问控制子层管理实体—服务接入点消息序列图
介质访问控制子层服务数据单元 信息服务类型 网络广播传送时间 上层实体
NIB 网络层信息库 NLDE 网络层数据实体
NLDE-SAP 网络层的数据实体—服务接入点 NLME 网络层管理实体
NLME-SAP 网络层管理实体—服务接入点 NPDU NSDU NWK OSI PAN PD-SAP PDU PHY PIB PLME-SAP POS QOS RFD RREP RREQ RN SAP SKG SKKE SSP SSS WPAN XML ZB ZigBee
ZDO ZigBee
网络层协议数据单元 网络服务数据单元 网络
开放式系统互连 个人区域网络
物理层数据—服务接入点 协议数据单元 物理层
个人区域网络信息库 物理层管理实体—服务接入点 个人操作空间 服务质量 精简功能设备 路由应答 路由请求 路由节点 服务接入点 密钥生成
对称密钥的密钥建立 安全服务提供商 安全服务规范 无线个人区域网 可扩展标记语言 设备对象 附录2
AODV协议源代码分析
1、Void AODV::recv(Packet *p, Handler*) //判断是否是aodv包,是则调用函数recvAODV(p) if(ch->ptype() == PT_AODV) { recvAODV(p); //本节点产生的数据包,添加IP头
if((ih->saddr() == index) && (ch->num_forwards() == 0)) Add the IP Header //收到本节点发送的包,说明有路由环路,丢包
else if(ih->saddr() == index) drop(p, DROP_RTR_ROUTE_LOOP); //本节点是中间节点
else {//TTL是分组最多能转发的次数 if(--ih->ttl_ == 0) drop(p, DROP_RTR_TTL);
//收到的不是广播分组,解析分组
if ( (u_int32_t)ih->daddr() != IP_BROADCAST) rt_resolve(p); //转发 else forward((aodv_rt_entry*) 0, p, NO_DELAY); 2、void AODV::rt_resolve(Packet *p) { //查找是否有到目的节点的路由 rt = rtable.rt_lookup(ih->daddr());
//没有,则添加到该目的节点的路由,此时添加的路由是无效的 if(rt == 0) rt = rtable.rt_add(ih->daddr()); //有效路由,则根据路由表中信息转发分组
if(rt->rt_flags == RTF_UP) forward(rt, p, NO_DELAY);
//如果本节点是该分组的源节点,说明没有到目的节点的路,此时发送RREQ找路 else
//链路中断,在维护中
else if (rt->rt_flags == RTF_IN_REPAIR) rqueue.enque(p);
// 本节点转发数据分组,但是不知道该到目的节点的路,发送RERR说明链路中断 3、else sendError(rerr, false);
//添加到目的节点的路由,此时的路由不可用,是无效的 aodv_rt_entry *rt = rtable.rt_lookup(dst);
//不到发送RREQ的时间,注意文件开头的RREQ定时器,若没收到RREP,源节点需要定时发送RREQ
if(ih->saddr()
==
index) rqueue.enque(p); sendRequest(rt->rt_dst);
if (rt->rt_req_timeout > CURRENT_TIME) Packet::free((Packet *)p); //AODV中多次发送RREQ,多次发送RREQ后仍找不到路,则丢包
if (rt->rt_req_cnt > RREQ_RETRIES) rt->rt_req_timeout = CURRENT_TIME + MAX_RREQ_TIMEOUT; drop(buf_pkt, DROP_RTR_NO_ROUTE);
//余下部分是填充路由表以及RREQ分组的内容,不涉及实现的话不用了解,了解有一定难度,需要结合整个过程看
4、链路中断,需要发送RERR,通知所有受影响的节点,函数体关于填充RERR内容,不用细看void AODV::sendError(Packet *p, bool jitter) {//
5、周期发送Hello分组,以检测邻节点的连通性void AODV::sendHello() {// 6、根据包类型调用不同函数void AODV::recvAODV(Packet *p) {// case AODVTYPE_RREQ recvRequest(p); case AODVTYPE_RREP: recvReply(p); case AODVTYPE_RERR: recvError(p); case AODVTYPE_HELLO: recvHello(p); 7、收到RREQvoid AODV::recvRequest(Packet *p) {//
// I'm the source - I recently heard this request.则丢弃该RREQ if(rq->rq_src == index) Packet::free(p);
if (id_lookup(rq->rq_src, rq->rq_bcast_id)) Packet::free(p); // * Cache the broadcast ID ,用于判断是否已收到过该RREQ id_insert(rq->rq_src, rq->rq_bcast_id); //查找是否有到源节点的路由,有则更新,无则添加a
//* Find out whether any buffered packet can benefit from the * reverse route.缓存中是否有到源节点的数据分组,有,则建立好路由后开始发送数据
//查找是否有到目的节点的有效路由,有则向源节点回复RREP,没有则继续转发该RREQ,注意转发前需要更新RREQ中部分内容
8、void AODV::sendReply(nsaddr_t ipdst, u_int32_t hop_count, nsaddr_t rpdst, u_int32_t rpseq, u_int32_t lifetime, double timestamp) {
//填充RREP内容
9、void AODV::recvReply(Packet *p) {
//查找是否有到目的节点的路由,没有则建立,否则更新
//如果是RREP的目的节点,即RREQ的源节点则建立到目的节点的路;否则根据路由表中到源节点的路由(此路由在发送RREQ过程中已建立)转发该RREP
10、收到RERR,查看有哪些路径受到中断链路的影响,更新RERR内容,并向受影响
因篇幅问题不能全部显示,请点此查看更多更全内容