基于ZigBee技术的无线传感器网络系统研究学士学位论文

上传人:痛*** 文档编号:45947894 上传时间:2021-12-09 格式:DOC 页数:49 大小:1.41MB
返回 下载 相关 举报
基于ZigBee技术的无线传感器网络系统研究学士学位论文_第1页
第1页 / 共49页
基于ZigBee技术的无线传感器网络系统研究学士学位论文_第2页
第2页 / 共49页
基于ZigBee技术的无线传感器网络系统研究学士学位论文_第3页
第3页 / 共49页
点击查看更多>>
资源描述
学 士 学 位 论 文基于ZigBee技术的无线传感器网络系统研究 摘 要随着信息技术的发展,人们对无线通信技术的要求日益提高。传统的无线通信技术Wi-Fi、超宽带通信UWB、近场通信NFC、蓝牙、红外无线数据通信(IrDA)等技术,已经不能满足当今对无线应用的需求。尤其是物联网技术的提出,需要传感器网络具有低速率、低功耗、低成本、自组网能力强等特点,并且在恶劣的自然环境下也能正常工作。ZigBee技术就是在这样的历史背景下应运而生。ZigBee技术是一种新兴的短距离、低速率无线网络技术,是一种介于无线标识技术和蓝牙之间的技术提案,主要用于近距离无线连接,其优良的自组网性能和网络的健壮性整体的网络协调性等都是其它无线技术无法比拟的。本设计是基于ZigBee技术开发的一套无线传感网络模拟装置。该装置采用射频性能优良的Ti (Texas Instruments)公司CC2430芯片作为核心的控制模块,使用高效的IAR集成开发环境作为软件平台,显示模块采用HS12232-9 LCD液晶屏显示模块,上位机可通过PC串口管理全网的数据和命令的收发。串口通信软件采用VC6.0开发,界面友好,使用方便。当数据的在ZigBee网络中传播时,可以在PC机上使用Packed Sniffer等抓包软件捕获网络中的数据,进行研究和分析。本模拟装置的功能实现比较完善,网络协调性较好。可以按照组网要求发送和接收数据,并将数据和命令清楚的显示在LCD液晶屏上,且数据也能够及时的上传给上位机,供管理和使用人员参考和调试。【关键词】ZigBee;无线传感器网络;Z-Stack;CC2430 AbstractWith the development of information technology, the increasing demand for wireless communications technology. The wireless communications technology Wi-Fi, ultra-wideband communications UWB, Near Field Communication the NFC, Bluetooth, infrared wireless data communications (IrDA) technology, can no longer meet todays demand for wireless applications. Especially the Internet of Things technology, the need to sensor networks with low-rate, low power, low cost, since the networking ability and other characteristics, and in the harsh natural environment can work properly. ZigBee technology is against this historical background, came into being. ZigBee technology is an emerging short-range, low-rate wireless network technology is a cross between a wireless identification technology and Bluetooth technology proposals, mainly for short-range wireless connections, good network performance and network the robustness of the overall network coordination are other wireless technologies can not match. The design is based on ZigBee technology developed by a wireless sensor network simulator. The device uses the excellent RF performance of Ti (Texas Instruments) Company CC2430 chip as the core of the control module, the use of efficient IAR Integrated Development Environment software platform, the display module HS12232-9 LCD LCD screen display module, the host computer through the PC serial port manage the whole network to send and receive data and commands. The host computer using VC6.0 development-friendly interface, easy to use. When the spread of data in the ZigBee network, you can use on a PC Packed the Sniffer capture software to capture network data, conduct research and analysis. Simulator functions to achieve a relatively complete network coordination. Accordance with the requirements of the network to send and receive data, and data and commands to display on the LCD screen and the data can also be timely upload to the host computer for management and use of personal reference and debugging.【Key words】 ZigBee Wireless Sensor Network;Z-Stack;the CC2430目 录第1章 绪论41.1研究背景41.2研究内容41.3研究意义5第2章 ZigBee技术62.1 ZigBee技术概述62.2 ZigBee技术的主要特征72.3 ZigBee技术的应用72.4分层协议的概念82.5 物理层(PHY)规范82.5.1 物理层服务规范92.5.2 物理层协议数据单元(PPDU)格式92.6 媒体介质访问层(MAC)层概述92.6.1 MAC层数据服务信息流程102.6.2 安全机制102.6.3 MAC层帧格式112.7 ZigBee网络层服务112.7.1 网络层服务介绍112.7.2 ZigBee的网络拓扑结构122.7.3 网络层路由算法的分析132.8 ZigBee应用支持子层(APS层)协议152.8.1 应用层概述152.8.2 帧格式152.8.3 ZigBee协议栈各层帧结构之间的关系16第3章 ZigBee开发平台173.1 ZigBee开发平台介绍173.1.1 IAR EW8051集成开发环境及其使用说明173.1.2 CC2430芯片概述173.2 TI Z-Stack软件架构173.2.1系统初始化173.2.2初始化的具体流程183.2.3 操作系统的执行203.2.4 ZStack-1.4.3-1.2.1协议栈项目文件的组织架构21第4章 系统模块的设计与实现234.1设备类型234.2 信道234.3 PANID234.4 方案的整体设计244.5 CC2430的串口机制244.5.1 回调函数254.5.2 处理事件UART_RX_CB_EVT254.6 工程任务的初始化操作264.6.1工程选项设置264.7 ZigBee自动建网过程284.8 协调器对节点的感知304.9 上位机软件334.10 运行时数据报解析34第五章 总 结36附录1:CC2430芯片架构37附录2:硬件连接图38附录3: 协议设计40参考文献42致 谢44第1章 绪论1.1研究背景近年来,随着社会的发展,无线通信技术的不断进步,新的无线技术正发挥着新的重要的作用,给人们的生活带来新的享受1。物物联网的物联网世界的提出,被很多国家政府和企业提上日程,人们对无线技术也提出了更新的要求。回顾传统的无线网络例如,蓝牙(BlueTooth)、WiFi、红外等技术已经无法适应当前的实际需要2。于是人们致力开发出一种新比较适合人们需要的,近距离,低速率,组网方便的新的无线技术,其中ZigBee技术是最具有代表性,最能够由能力适应现代无线网络要求的技术3。ZigBee协议是基于IEEE 802.15.4协议制定的物理层(Physical Layer,PHY)和介质访问层(Medium access control layer,MAC)的基础上,由ZigBee联盟制定网络层和应用支持层组成的。Zigbee技术具有很多其他网络无法比拟的优点。一节ZigBee的终端节点模块,可以连续使用长达2年。其整体的ZigBee组网能力,快速的反应能力,已经模块的低成本能经受严酷的自然条件等,都是现代无线传感网络十分需要的特点。然而作为一种新兴的无线技术,和一切新鲜事物一样,并不能马上的被适用于人们的生活、生产中。ZigBee技术在中国正处于这样一种状态,政府和很多的企业都在致力于研发各种ZigBee产品以便尽快将ZigBee技术应用于市场。很多高校也正在加紧对ZigBee技术方面的人才的培养,以及技术的创新等。本文正是从这一背景出发,调查当前社会对无线技术的需求,结合无线技术的发展趋势和ZigBee的技术特点,利用ZigBee无线技术实现无线传感器网络模拟装置。1.2研究内容使用ZigBee技术来实现无线传感器网络,主要需要考虑通信节点的硬件设计,以及实现相应功能所必须的软件开发。本设计从实际出发,采用先进的Ti公司的CC2430芯片,利用性能较高的IAR Embedded Workbench 开发工具对一个完整的ZigBee网络的组网过程进行实验,然后在无线传感网 ZigBee 套件上实现了一个网状拓扑结构的通信实验。在无线网络组网完成后,通过设定的协议命令在PC机端使用串口将数据发至ZigBee的协调器模块。ZigBee模块即可完成全网的数据监控。同时在无线网络的传输中,加入自己网络控制命令,使得全网能按照预定的要求进行数据的传输,同时结合上位机软件将网络数据通过协调器传至PC机的人机交互界面,友好的展示了数据的传输方式和传输过程。此模拟装置充分的展示了ZigBee的功能特性,解析了ZigBee各层协议的数据封装,使开发者能快速的掌握ZigBee的技术要领,给需要使用ZigBee的项目提供借鉴。同时具有移植方便,稍微加以修改即可应用在实际的项目中。1.3研究意义ZigBee技术的诸多特性,必然使得其在未来的无线领域中占有很大的优势。ZigBee技术的普及也将为企业在无线器材的选择方面多了很大的信心。但是目前,国内ZigBee技术尚处在萌芽阶段,市场是可行的ZigBee解决方案屈指可数。一方面对于准备进入ZigBee领域的人来说,苦于找不好很好的教材,和很合适的模块。另一方面,中小型企业也无精力和财力去从零开始研发ZigBee的设备。本设计从选择芯片和搭建软件平台,到完成整体的设计架构和测试流程。本身就是一次ZigBee技术的实际应用,演示了如何将ZigBee技术应用于实际的生活生产中。根据具体的需要,降低产品成本,定制出属于特定环境和特定任务的无线传感器模块,增加协议命令控制传感器的特定动作。以及选择ZigBee无线传感器网络的使用条件和范围等。目前大多数用户只能借鉴于ZigBee厂商提供的开发平台进行应用层程序的开发,但是运用厂商提供的开发平台和开发工具,用户再选芯片型等方面会受到很大限制,极大的束缚了ZigBee产业的发展。所以搭建一个可以很快就应用于商业用途的ZigBee使用模型就显得非常重要,本课题正是在此思想上设计了一套非常实用的模拟装置,实现了ZigBee的重要的功能特性。无论从ZigBee的理论上,还是从实际的应用中都很有价值。第2章 ZigBee技术2.1 ZigBee技术概述ZigBee技术有很多的优点,无线收发距离短、协议复杂度较低、整体耗能低、成本低廉、网络反应快等。这使ZigBee技术非常适合对距离和传输速率不高的场合,可以有效的降低使用成本,长时间的持续工作也很方便去管理ZigBee的无线网络4。2000年12月美国电气和电子工程师协会(IEEE) 成立了IEEE802.15.4工作组,目的在于研究一种低速率、低成本、低功耗、低时延的无线网络协议。ZigBee技术正是这一网络协议的代名词5。ZigBee栈体系结构是一种分层结构。每一个层的主要任务是向上层提供两种服务:数据实体服务和管理实体服务。服务实体是通过服务接入点(SAP)为上层提供所需的服务。其中SAP的功能是通过一些服务原语来实现。ZigBee协议栈结构,基于开放网络互连(OSI)七层协议模型。IEEE802.15.4-2003标准定义了ZigBee协议的低两层,物理层(PHY)和数据链路层(MAC)。ZigBee联盟在物理层和MAC层的基础上制定了网络层和应用支持子层。如图2-1为ZigBee体系堆栈的框架图。图2-1 ZigBee堆栈框架2.2 ZigBee技术的主要特征与蓝牙、WiFi等无线通信技术相比,ZigBee协议相对简单、所需要的硬件资源较少,所以硬件平台相对十分简单,主要有以下特点: 低功耗:省电是ZigBee一个非常重要的特点,ZigBee节点的工作周期短、信息收发功耗低、ZigBee终端节点采用了休眠机制,两节普通的5号干电池可以支持6个月到2年的工作时间。 低成本:由于ZigBee协议栈需要想对较少的资源,极大降低了ZigBee的开发成本,据官方称,最少可以达到两美元,而且ZigBee协议是免专利费的。 短时延:网络通信时延短,ZigBee节点从休眠状态转到工作状态很迅速。搜索一个网络节点时延仅为30ms,休眠激活时延和信道接入时延均为为15ms。 短距离:一个ZigBee节点的有效传播距离为30-200m。可以覆盖家庭等空间较小的应用场所。 低速率:2.4 GHz频段为250 kb/s,915MHz频段为40kb/s,868MHz频段只有20kb/s。 数据可靠传输:ZigBee采用了CSMA/CA碰撞避免机制(Carrier Sense Multiple Access with Collision Avoidance),提高了无线的传输效率。媒体接入层采用完全确认的数据传输机制,每个数据包的发送,都需要接收方的给出确认操作,保证了数据包可靠地传输。2.3 ZigBee技术的应用基于ZigBee技术的无线传感网络在现实生活中具有重大的应用前景,目前已存在的传感器广泛的应用于各个领域:煤炭、医疗、航天、国防、建筑物的测量、生态系统的观察等等6。矿井下人员的定位,随时了解井下作业人员的工作位置;瓦斯的侦测,防止意外的瓦斯泄露等。紧急情况发生时还可以指导作业人员安全撤离。1 医院护理人员可以通过ZigBee定位设备设备随时了解病人的活动或贵重医疗器械的放置等。结合相关传感器还可以侦测病人的身体和生理状态。保证病人的24小时看护状态。2 士兵身上携带ZigBee设备,在条件复杂的环境下,可便于统一的指挥和管理,同时单兵的身体状态等也能及时反馈给后勤人员,以便及时的求助。3 生态系统的观察,在一些人类无法轻易进入的地方,可以利用ZigBee节点,将设备分布在监护地区的各个地方。结合温湿度、光度、风度等传感器可将数据上汇聚至协调器后通过有线或者其他无线网络传至千里之外的控制中心,极大的方便了研究人员的工作。4 随着我国政府大力倡导无线网络射频技术的发展,构建物物联网的未来世界相信也在不久的将来。而ZigBee技术无疑是这一领域的先力军,其优越的性能必将给即将到来的物联网的时代创造一个很好的条件。ZigBee技术必将广泛的应用到生活的各个层面。2.4分层协议的概念分层是ZigBee协议的重要概念,每一层是通过建立服务接入点完成对上层提供服务。层与层间通过服务原语进行数据与管理的交互服务。原语只是一种抽象的概念,用来指定所提供的服务,但不指定具体的服务角色。下图说明了原语的概念。 服务提供层(本层)()服务使用者(上层)服务使用者(上层)REQUESTINDICATIONCONFIRMRESPONSE图2-2 原语的概念原语通常分为四种基本类型7: Request:请求原语用于上层向本层请求指定的服务。 Confirm:确认原语本层用于相应上层发来的请求原语。 Indication:指示原语用本层发给上层指示本层的某一内部事件。 Response:响应原语用于上层响应本层发出的指示原语。2.5 物理层(PHY)规范IEEE 802.15.4定义了两个物理层标准,它操作于两个分离的频率范围:868/915MHz(美国、欧洲和澳大利亚)和2.4GHz供全世界使用。ZigBee的物理层主要的任务 是以下几点8: 无线收发机的开启和关闭 检测信道上的能量 查看分组的链路质量 基于CSMA-CA的空闲信道评估(CCA) 发送和接受数据2.5.1 物理层服务规范物理层定义了物理无线信道和与MAC层之间的接口,提供物理层数据服务和物理层管理服务。物理层数据服务是从无线物理信道上收发数据,物理层管理服务维护一个由物理层相关数据组成的数据库。2.5.2 物理层协议数据单元(PPDU)格式 物理层协议数据单元(PPDU)由三部分组成:同步头(SHR)允许接收设备同步并锁定比特流;物理层帧头(PHR)包含的是帧长信息;有效载荷部分PSDU。表 2-1 PPDU的格式字节数:411可变长度引导序列帧开始符帧长(7位)预留(1位)物理层服务数据单元同步头(SHR)物理层帧头(PHR)物理层有效载荷同步码域用来为后续数据的收发提供码片或者数据符号的同步;帧定界符用来表示同步域的结束及报文数据的开始;帧长度域用7bit定义物理层净荷的字节数;物理层数据域长度根据情况可变(长度为5字节或大于7字节)、承载了物理层报文数据,包含有MAC层数据帧。2.6 媒体介质访问层(MAC)层概述 IEEE 802.15.4定义的媒体介入控制层的使用了传统无线局域网中的带冲突避免的载波多路侦听访问技术CSMA/CA方式,MAC层主要提供了数据传输服务(MCPS)和管理服务(MLME),其功能主要入下:(1) 网络协调器产生并发送信标帧(2) 设备与信标同步(3) 支持RAN网络的关联和取消关联操作。(4) 为设备的安全性提供支持。(5) 信道接入方式采用免冲突载波检测多路访问(CSMA-CA)机制;(6) 处理和维护保护时隙机制(7) 在对等的MAC实体之间提供一个可靠地通信链路。图2-3 物理层参考模型2.6.1 MAC层数据服务信息流程 请求由发送方上层发起,调用原语MCPS-DATA-request将数据传至MAC层。MAC层将数据再次封装形成PPDU通过物理层发送。数据传至对方的物理直到MAC层,对方会对数据进行确认,这是数据链路层上的确认协议。随后对方的接收的数据通过发起MCPS-DATA-indicate将数据传至上层。确认帧被发送方接收后一次完整的数据传输才结束。如图2-4为数据的在协议层之间的传送。图2-4协议层之间数据的传送数据在协调器中的传输模式分为数据传输到协调器和数据从协调器传出。2.6.2 安全机制ZigBee使用MAC层的安全机制来加密MAC命令、信标和确认帧。MAC层使用AES(Advanced Encryption Standard)作为其核心加密算法,通过该算法来保证MAC帧的机密性、完整性和真实性。MAC层使用加密方式来发送(或接收)帧时,首先查看帧的目的地址(或源地址),取得与目的(或源)地址相关的密钥,并使用为该密钥指定的安全组合来处理该帧。每个密钥都与单独的安全组合相关。MAC帧的头部有一个比特来指示该帧是否加密9。2.6.3 MAC层帧格式介质访问控制层(MAC)帧被称为MAC协议数据单元(MPDU),其长度不超过127个字节。表 2-2 MAC帧的通用格式帧控制序列号地址字段负载校验(FCS)MAC Header(MHR)MAC载荷MAC Footer(MFR)MAC层定义了4种不同的帧格式,分别是信标帧、数据帧、确认帧和MAC命令2.7 ZigBee网络层服务2.7.1 网络层服务介绍网络层提供保证IEEE 802.15.4MAC层正确工作的能力并为应用层提供合适的服务接口。网络层(NWK)负责建立和维护网络连接,它独立处理传入数据请求、关联、解除关联和孤立通知请求。网状层主要负责网络拓扑结构的建立与管理,以及维护网络的连接,主要功能包括: 设备连接和断开网络时所采用的机制,以及在帧信息传输过程中所采用的安全策略。 作为网络中路由器和协调器的网络层还负责路由发现,维护路由表、转交路由信息、下一跳路由的发现等,网络层还维护一个信息库(PIB)来存储这些必要的路由信息,当网络出现异常或者电源重启时,可以快速恢复网络。 协调器节点的网络层还必须具有创建新网络的能力,同时也有为新加入的其他节点分配ZigBee网络短地址的能力。 网络层还需要提供其他的功能接口,确保MAC层能正常工作,同时向上层(APS)层提供数据和管理等服务接口。图2-6 网络层参考模型NWK层通过两个服务接入点(SAP)提供了两种服务。ZigBee的网络层采用基于Ad Hoc的路由协议,除了具有通用的网络层功能外,还应该与底层的IEEE802.15.4标准的功耗一样小,同时要实现网络的自组织和自维护。应用支持子层把不同的应用映射到ZigBee网络上,主要包括安全属性的设置、业务发现、设备发现和多个业务数据流的汇聚等功能。NLME需要提供一个管理服务以允许一个应用来与协议操作交互,NLME需要提供以下服务: 配置一个新网络,具有必须的配置硬件资源,如栈等。配置选项包括:ZigBee协调器的开始操作,申请加入存在的ZigBee网络。 启动网络,具有创建网络的能力 能够加入和退出ZigBee网络。 寻址,具有由ZigBee协调器或者ZigBee路由器给其他刚加入的网络节点分配ZigBee短地址的能力。 邻居路由的发现,具有发现、记录并报告一跳范围内设备的能力。 路由发现:具有发现并记录路径的能力。表2-3 NWK帧格式字节数:22211可变长度帧控制目地址源地址半径序号帧有效载荷路由字段NWK头NWK有效载荷2.7.2 ZigBee的网络拓扑结构ZigBee定义了三种网络拓扑结构:星型网络拓扑 (Star),主要针对小范围内的数据通信,节点较简单网络中无路由器;簇树网络拓扑(Tree),是将星型网络与网状网络结合的折中方案,结构比网状网络简单,其网络健壮性比星型网络要强很多;网状网络拓扑(Mesh),是一种类似网状的拓扑结构,网络健壮性最强,但同时也需要很大的硬件资源来支持。2.7.3 网络层路由算法的分析在无线传感网络中,如何降低节点的功耗是个很重要的研究课题。经研究显示:路由选择协议和MAC协议对无线通信模块的能量消耗起着关键的影响。衡量一个传感器网络路由协议的重要指标就是合理的利用网络中各个传感器节点的有限能量,使得网络保持联通性的时间更长。一个好的ZigBee路由,不仅要在有效利用ZigBee协议不太丰富的硬件资源基础上,还要符合ZigBee协议的低功耗要求。1 路由成本计算路由成本使用到得算法是衡量路径成本在路由发现和维护之间进行路径比较。例如链路成本,就是针对网络中的每一链路。对链路成本值求和,即是这个链路层上的路劲成本。一般情况下,定义路径M长N,对于一组有序的节点A1,A2,A3.,AL,其中一个链路,Ai,Aj,其子路径长度为2,那么成本就是SP=对于每个值作为一个链路的成本。链路成本S(l)是对链路l的函数,取值范围为07,公式定义为:其中 Pl为在链路层上传输数据包的概率10。问题是如何计算pl的。可以通过计算实际接收到的信标和数据帧,即是通过观察合适的数据序列号来检测丢失的帧,这种方法被认为是接受概率最准确的测量方法。然而实际应用中最直接的方法就是估算一个均值,这个均值是有IEEE802.15.4-2003物理层和媒体接入层提供的每一个帧LQI值的平均。可以使用一个函数映射出LQI与S(l)的关系。由于不精确的测量结果会影响到ZigBee路由算法的性能,所以该组织推荐使用者要检测他们生产的测试数据11。路由表非终端节点需要对路由进行维护,并将数据暂存于ZigBee路由表中。如表2-4路由表所示。表2-4路由表域名型号描述目的地址2B本节点2Byte网络地址状态3B路由状态,见表3-5下一条地址2B下一条2Bytet网络地址表2-5 路由状态域值数值状态0x0ACTIVE0x1DISCOVERY_UNDERWAY0x2DISCOVERY_FAILED0x3INACTIVE0x4-0x7保留作为有路由能力的非终端的ZigBee节点(协调器、路由器)它本身需要有一定的物理资源来存储这些表项。同时它也需要维护一个路由发现表,路由表项是一直存在的,并使动态更行的。路由发现表的持续时间仅仅在当路由器需要进行路由发现操作时进行12,如表2-6路由发现表所示。表2-6 路由发现表域名型号描述路由请求ID16bit路由的请求命令帧序列号,在每次的操作后会自动加1源地址16bit数据发出节点的16bit的网络地址发送者地址16bit数据在路由中,这个表项记录发出最新最低成本的路由的中间路由节点的16bit的网络地址,这个值最终决定了路由响应的命令帧的路径。运输成本16bit累计一个数据包从源地址到当前设备所经过的所有路径成本剩余成本16bit累计一个数据包从当前设备到目的设备所经过的的路径成本路由发现当一个数据需要被发送时,如果此节点是终端节点则直接将数据传至给其能够进行路由的父亲节点。由父亲节点代为进行路由发现。当网络层接收到来自高层的NLDE_DATA.Reques原语时,其Discover参数设置为0x02或者是0x01时,都需要使用网络层路由发现能力。如果网络层接收到了来自底层MAC层的数据帧,而且其地址为广播地址,首先网络层将会广播这个数据帧,然后将数据帧转交给上层进行处理。如果接收到的来自MAC的帧不是广播帧,网络层将检查数据帧的目的地址是否是它本身的逻辑地址。如果相等则说明是传给自己帧,立刻交给上层APS层进行数据的处理,否则,该设备将作为中间设备继续讲此数据帧进行路由发现操作13。图2-8为节点接收到上层或其他节点发送的数据包时,网络层处理程序的流程图。图2-8路由算法流程图2.8 ZigBee应用支持子层(APS层)协议 2.8.1 应用层概述应用层包括应用支持子层,设备管理配置层(ZDO)和用户的应用程序组成的。用户的应用程序由具体的ZigBee模块生产厂商,根据需求来规定。它使用应用支持层提供的协议栈管理功能,来管理ZigBee协议栈。2.8.2 帧格式 APS帧格式由一个APS帧头和APS有效载荷组成。APS帧头域有固定的顺序,在帧中可以不包含地址域,图2-9 为APS的帧格式结构图。图2-9 APS帧格式结构图2.8.3 ZigBee协议栈各层帧结构之间的关系在ZigBee的协议栈中,协议层之间的数据的通信是利用帧的格式来组织的。协议层的每一层都有自己特定的结构,当应用层需要发送数据时,协议层会将数据从应用层向下一层层的封装,经过的每一层都需要加上相应的帧头部,最后构成要发送的帧的信息。其帧结构之间的关系如下图2-10所示:图2-10协议帧之间的关系第3章 ZigBee开发平台3.1 ZigBee开发平台介绍3.1.1 IAR EW8051集成开发环境及其使用说明IAR Embedded Workbench 是一套集成开发工具,主要是使用c/c+等语言编写的嵌入式程序进行编译和调试。IAR Embedded Workbench 是一套高度精密且使用方便的嵌入式应用编程开发工具。IAR集成了,编辑器,编译器,连接器,调试器,工程管理器等。使用非常的方便,而且编译出二进制代码的效率非常高。代码优化性能好。3.1.2 CC2430芯片概述CC2420/30射频芯片是Chipcon公司(挪威)推出的全球首款符合ZigBee联盟制定的标准的设备芯片,主要工作在2.4GHz。CC2430采用的是片上集成系统(SoC),是高集成度的解决方案。不需要搭配过多的外置原件,使用底层本的原件,使得ZigBee节点的构建成本低廉。CC2430延续了CC2420的优良的射频性能。功耗低,灵敏度高,抗噪性能好以及抗干扰性强等。CC2430采用工业标准的增强型8051作为微控制核心,另外CC2430同时具有很强大的外设功能。例如定时器/计数器、看门狗(Watch Dog)、ADC、以及多个中断源上电复位电路等。在接收和发射时电流损耗低,工作模式转换迅速,这使得模块节点的损耗更低,满足ZigBee低功耗的要求,是一款很好的ZigBee节电模块的解决方案14。ZigBee网络中的节点都可以实用CC2430作为主要的控制芯片。Ti(德州仪器公司)研发的CC2430/31、CC2530/31等芯片具备了实现ZigBee技术的各种底层硬件要求,是真正的一体化解决方案,完全符合ZigBee技术对节点“体积小、低功耗、低成本”的要求15。3.2 TI Z-Stack软件架构3.2.1系统初始化Z-Stack的main函数在ZMain.c中,main函数里主要是先进行各种硬件模块的初始化操作,完成后进入一个简单的ZigBee操作系统实体,如图3-1 Z-Stack软件架构所示。系统初始化初始化执行操作系统主程序开始图3-1 Z-Stack软件架构在系统初始化阶段,主要是完成各个硬件外设和软件的初始化,为进入操作系统做好准备。下面结合代码说明:ZSEG int main( void )osal_int_disable( INTS_ALL );/关闭所有的中断HAL_BOARD_INIT();/初始化晶振zmain_vdd_check(); /检测电压zmain_ram_init(); /初始化堆栈InitBoard( OB_COLD ); /配置系统定时器以及重启原因检查HalDriverInit(); /初始化硬件模块osal_nv_init( NULL ); / NV System初始化Flash存储zmain_ext_addr(); /形成节点MAC地址zgInit(); /NV items初始化非易失变量ZMacInit(); /MAC初始化MAC层osal_init_system(); /初始化操作系统osal_int_enable( INTS_ALL );/打开中断InitBoard( OB_READY ); /初始化按键osal_start_system(); /执行操作系统 / main()3.2.2初始化的具体流程系统的初始化,主要是对软、硬件的初始化,为进入操作系统准备条件。主要分为初始化系统时钟、检测芯片的工作电压、初始化堆栈、初始化各个硬件模块、初始化FLASH存储、形成芯片MAC地址、初始化非易失变量、初始化MAC层协议、初始化应用层帧协议、初始化操作系统等十余部分16,其具体流程图和对应的函数如 图3-2所示。图3-2 ZigBee系统结构的初始化3.2.3 操作系统的执行 程序的开始代码里,首先进行一系列的初始化工作,(主要是针对ZigBee模块上的硬件)。随后启动代码为操作系统执行做好准备工作后,就开始执行操作系统入口程序,并由此彻底将控制权移交给操作系统,完成新老更替,自己则光荣的推出舞台。操作系统实体只有一句代码:Osal_start_system();/没有返回值这是一个死循环的函数。当程序进入到操作系统里,就会一直重复操作系统的规则,去轮询的检查各个事件的发生并及时的去处理优先级较高的部分,函数主题代码如下:void osal_start_system( void )for(;) / 进入死循环 uint8 idx = 0;Hal_ProcessPoll(); / 硬件抽象层事件的检测do if (tasksEventsidx)/高优先级事件产生.break; while (+idx tasksCnt);if (idx tasksCnt)uint16 events;halIntState_t intState;HAL_ENTER_CRITICAL_SECTION(intState);/进入临界去tasksEventstask_id |= event_flag; events = tasksEventsidx;/提取事件tasksEventsidx = 0; /清除事件HAL_EXIT_CRITICAL_SECTION(intState);events = (tasksArridx)( idx, events );/调用处理函数HAL_ENTER_CRITICAL_SECTION(intState); tasksEventsidx|=events;/未处理完的事件继续放入事件数组中HAL_EXIT_CRITICAL_SECTION(intState);/其中tasksEvens用于存放所有事件的数组,数组中每一个元素对应一个任务事件。程序中,首先使用while循环检查是否有事件发生,按照顺序检查这样就会先考虑较高优先级的任务事件也就是安排到数组地位置的任务事件。在找到具有事件的第一个任务后,跳出循环并获得此任务的idx号events=tastsEventsidx。然后调用存放对应位置的事件处理函数(tasksArridx)(idx,events)来对所发生的事件进行处理。根据不同的idx就可以执行不同的处理不同的事件17。3.2.4 ZStack-1.4.3-1.2.1协议栈项目文件的组织架构 App:应用层目录,这个目录下的三个文件就是创建一个新项目时主要添加的文件,当要创建另外一个新项目时,也只需主要换掉这三个文件。 HAL:硬件抽象层,用于调试,hal_drivers.c驱动文件,抽象出与硬件无关的函数,包含有与硬件相关的配置和驱动及操作函数。Include目录下主要包含各个硬件模块的头文件,而Target目录下的文件是跟硬件相关的可以看出有两个平台CC2430DB和CC2430EB其中CC2430DB是白色的,说明当前并没有使用此平台。 MAC:MAC层目录,High Level和low Level两个目录表示MAC层分为了高层和底层两层,在Include文件下存放了MAC层的一些参数配置文件和MAC的Lib库文件。 MT:该目录下主要是存放了一些用于通过串口调试与各层进行交互的内容。 NWK:该目录下主要是存放了网络层的配置参数文件及网络层库的函数接口文件。 OSAL:简单的针对协议栈的操作系统 Profile:AF层目录,主要包含了AF层处理函数接口文件。 Security:安全层目录,包含安全层处理函数接口文件。 Services:ZigBee和802.15.4处理地址的函数目录。 Tools:配置工程的目录,包括空间划分及ZigBee配置的相关信息。 ZDO:指ZigBee设备对象,可认为是一种公共的功能集,方便用户用自定义的对象调用APS子层的服务和NWK层的服务。 ZMac:其中zmac.c是Z-Stack MAC导出层接口文件,ZDAPP_CONFIG_PAN_ID是ZMAC需要调用的网络层函数。 ZMain:在此文件中最终了函数是ZSEG int main( void )它在ZMain.c中是整个程序的入口。 Output:工程输出文件目录,这个是由IAR自动生成的文件。第4章 系统模块的设计与实现4.1设备类型在ZigBee网络中存在三种逻辑设备类型:协调器(coordinator),路由器(router)和终端设备(end-device)。ZigBee网络由一个协调器以及多个路由器和多个终端设备组成,它最主要的作用是启动网络,其方法是选择一个相对空闲的信道,形成一个PANID。它也会协助建立网络中的安全层及处理应用层的绑定。当整个网络启动和配置完成后,它的功能退化为一个路由器。路由器的主要功能是提供接力作用,能扩展信号的传输范围,因此,一般情况下它应该一直处于活动状态下,不应睡眠。终端设备可以睡眠或者唤醒,因此可以用电池供电。4.2 信道2.4GHz的射频频段被分为16个独立的信道。每一个设备都有一个DEFAULT_CHANLIST的默认信道集。协调器扫描自己的默认信道并选择噪声最小的信道作为自己所建网络的信道。终端节点和路由器也要扫描默认信道集并选择一个信道已经存在的网络加入。4.3 PANIDPANID是网络的编号,用于标识不同的ZigBee网络。设备的PANID值与ZDAPP_CONFIG_PAN_ID值的设置有关。如果协调器ZDAPP_CONFIG_PAN_ID被设置为0xffff,协调器将会产生一个随机的PANID,最为自己的网络编号。如果路由器的ZDAPP_CONFIG_PAN_ID为0xffff,路由器将根据自己的配置信道随机选择一个ZigBee网络加入。若协调器的ZDAPP_CONFIG_PAN_ID非0xffff那么协调器将会根据自己的网络长地址(64bit)随机产生一个PANID。并以此PANID建立网络。如果非协调器节点的ZDAPP_CONFIG_PAN_ID非0xffff则该节点将会以ZDAPP_CONFIG_PAN_ID作为PANID去加入此网络。如果协调器的PANID为小于0x3fff的值。那么协调器将会以此PANID去建立网络,如果在此PANID上已经存在了ZigBee网络,那么协调器将会继续搜寻其他的PANID直到不冲突为止。这样就存在了问题如果协调器在默认的信道上发生了PANID的冲突而去更改了自己的PANID,而路由器和终端节点并不知道协调器PANID的改变。还会集训加入的PANID为ZDAPP_CONFIG_PAN_ID值的网络中18。4.4 方案的整体设计该设计选用天运公司的ZigBee模块,该模块主要集成了Ti公司cc2430为主要控制芯片,使用搭配的SmartRF04EB下载调试器进行实验。工程的整体架构的数据流向如图3-4所示,其中两个非协调器端点各自携带了一个显示lcd设备。Lcd设备选择HS12232-9,它内置了ST7920A驱动控制器,点阵为 12232点,每行7个半汉字,共2行 HS12232-9集成了汉字字模且具有显示信息丰富、功耗低、体积小、重量轻、超薄,与单品机的连接可选择并行或者串行两种方式等优点21。 图4-1 方案的总体设计4.5 CC2430的串口机制协调器通过232串口于上位机进行数据的交流,主要是将网络中的数据通过串口传送给上位机,同时接收上位机发出的命令和数据。协调器到路由器数据流程的流程图如图3-3所示。图4-2串口机制流程图4.5.1 回调函数当与协调器连接的设备(通常为PC机)向协调器通过232串口写入数据时,协调器的串口回调函数将处理相关信息,并在串口回调函数中触发事件UART_RX_CB_EVT通知应用层进行处理22。串口回调函数代码如下。程序代码:static void rxCB( uint8 port, uint8 event )extern uint8 SampleApp_TaskID; rxlen=Hal_UART_RxBufLen(SPI_MGR_DEFAULT_PORT); /接收缓冲区数据长度,字节为单位 rbuf=osal_mem_alloc(rxlen+1); /多分配3字节,分配如下 rbuf0=rxlen; /一字节存放数据长度 HalUARTRead ( SPI_MGR_DEFAULT_PORT, rbuf+1, rxlen);/读接收缓冲区数据到内存 if(!rxlen) osal_mem_free( rbuf ); /释放内存 osal_set_event(SampleApp_TaskID,UART_RX_CB_EVT);/向所注册的层发送事件4.5.2 处理事件UART_RX_CB_EVT当接收到来自串口的信息后,在串口回调函数的最后触发了事件UART_RX_CB_EVT,而该事件的任务ID为SampleApp_TaskID,即应用层任务ID,所以会被SampleApp工程应用层的事件处理函数SampleApp_ProcessEvent()处理,具体程序如下。uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events ) if ( events & UART_RX_CB_EVT ) /串口有数据需要处理 SampleApp_UART(MSGpkt); /调用处理函数,处理来自上位机的信息 return (events UART_RX_CB_EVT); 4.6 工程任务的初始化操作4.6.1工程选项设置自定义的任务事件:#define RETURN_NET_WORK_ADDR 0x01 /返回物理地址#define RETURN_PHY_WORK_ADDR 0x02 /返回网络地址#define NET_ADDR_SEND 0x03 /发送命令#define PHY_ADDR_SEND 0x04 /发送命令#define BROAST_SEND 0x05 /广播#define GROUP_SEND 0x06 /组播#define COUNT_NODE 0x07 /返回节点个数#define BIND 0x08 /绑定#define SPI_INCOMING_ZTOOL_PORT 0x21 / 串口数据触发事件#define AF_INCOMING_MSG_CMD 0x1A /有网络层数据到来触发事件这些事件由pc串口与单片机通信使用,为pc通过串口传送中使用的命令。应用层定义输入和输出协议簇命令。const cId_t SampleApp_ClusterListSAMPLEAPP_MAX_CLUSTERS = SAMPLEAPP_PERIODIC_CLUSTERID,/周期信息 SAMPLEAPP_FLASH_CLUSTERID;定义端点描述符:const SimpleDescriptionFormat_t SampleApp_SimpleDesc =SAMPLEAPP_ENDPOINT, /应用层端点号SAMPLEAPP_PROFID, /profile IDSAMPLEAPP_DEVICEID, /设备IDSAMPLEAPP_DEVICE_VERSION, /设备版本SAMPLEAPP_FLAGS, /程序标识SAMPLEAPP_MAX_CLUSTERS, /输入命令数(cId_t *)SampleApp_ClusterList, /输入命令列表地址SAMPLEAPP_MAX_CLUSTERS, /输出命令数(cId_t *)SampleApp_ClusterList /输出命令列表;在程序初始化阶段,void SampleApp_Init( uint8 task_id ),会被调用完成端点的注册。同时在该函数体中:RegisterForKeys( SampleApp
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!