实践教学
*******************
兰州理工大学
计算机与通信学院
2013年春季学期
嵌入式系统开发技术课程设计
题 目:
专业班级:
姓 名: 学 号: 指导教师:
成 绩:
目录
目录 .................................................................................................................................................. 1 摘要 .................................................................................................................................................. 2 前言 .................................................................................................................................................. 3
一 基本原理 ........................................................................................................................... 4 1.1 温湿度数据采集原理 ........................................................................................................ 4
1.1.1SHT10 引脚特性 ..................................................................................................... 4
二 系统分析 ................................................................................................................................... 6
2.1具体步骤描述 ..................................................................................................................... 6 2.2 程序流程图 ........................................................................................................................ 7 三 详细设计 ................................................................................................................................... 8
3.1实现温湿度数据采集的硬件部分 ..................................................................................... 8
3.1.1无线传感基本结构及实现原理 .............................................................................. 8 3.1.2使用的实验箱以及软件支持 .................................................................................. 9 3.1.3实现温湿度采集系统节点模块设计 ...................................................................... 9 3.2实现温湿度数据采集的软件部分 ................................................................................... 10
3.2.1 ZIGBEE技术概述................................................................................................. 10 3.2.2 ZIGBEE协议栈..................................................................................................... 11 3.2.3 ZIGBEE协议栈网络层 ......................................................................................... 12 3.2.4AODV路由协议 .................................................................................................... 13 3.3总体软件结构图 ............................................................................................................... 13 3.4核心程序代码 ................................................................................................................... 14
3.4.1 AODV协议源代码分析 ....................................................................................... 15
总结 ................................................................................................................................................ 18 参考文献......................................................................................................................................... 19 致谢 ................................................................................................................................................ 20
1
摘要
嵌入式系统是以应用为中心,以计算机为基础,软硬件可定制,适用于不同应用场合对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。嵌入式系统已广泛应用于各种领域,如通信领域、工业控制、交通领域、医疗卫生、消费娱乐等。
正如温湿度采集系统的设计,其包括了数据的采集过程、传输过程以及数据的处理过程是嵌入式系统在国家森林火灾的防范、大型粮库的温湿度控制以及家庭温湿度控制等方面的典型应用。由于传统的有线方式在数据的检测、采集、以及传输过程中需要大量的节点且这些节点不集中,因此需要大量布线。为了避免该问题本设计主要从无线传感方向进行改进,本设计对温湿度的读取是利用CC2530的I/O(P1.0和P1.1)模拟一个类IIC的过程,对光照的采集则使用内部的AINO通道。该系统使用CC2530读取温湿度传感器SHT10的温度和湿度数据,并通过CC2530内部的ADC得到光照传感器的数据。最后将采样得到的数据转换然后在LCD上显示。
关键字:温湿度的采集 CC2530 温湿度传感器SHT10
2
前言
本设计是一种基于CC2530和数字温湿度传感器的温湿度采集系统。即该系统是采用Zigbee无线通信技术结合传感器,并通过运用Zigbee协议架构组建无线传感网络,来实现主从节点的数据采集和传输的。同时,需要在网络层通过AODV路由协议来进行节点间的连接以及数据的收发。总之,基于无线传感技术的无线网络传感器是一种将传感器、控制器、计算能力、通信能力完美的结合于一身的嵌入式设备。
它们跟外界的物理环境交互,实时的采集信息,并且将收集到的信息通过无线传感器网络传送给远程用户。无线网络传感器一般是由一个低功耗的微控制器(MCU)和若干个存储器、无线电/光通信装置、传感器等组件所集成的,通过传感器、动臂机构、以及通信装置和它们所处的外界物理环境进行交互。由此而引入的无线传感网络更是一种开创了新的应用领域的新兴概念和技术,广泛被应用于医疗领域、大规模环境监测、智能建筑、战场监视、智能家装、工业自动化和大区域内的目标追踪等领域。
如,在医院Zigbee网络可以帮助医生及时并准确的收集急诊病人的信息及相关度检查结果,从而快速准确的作出诊断;同时,对一些特殊的病人,可让其携带Zigbee终端而对其进行24小时的体温、脉搏控制。生命诚可贵,时间价更高!
又如,在工业控制领域内,就可以很好的通过无线传感网络实现厂房内不同区域的温湿度的检测及控制,以及相关机器运转状况是否正常的有关信息,统计库存量,等等。
总的来说,我们的工作及生活在无形的改变着,变得更精致更高效更美丽。而这无形中进行着的神奇改变的关键莫过于高端的技术——嵌入式系统开发技术及无线技术。
3
一 基本原理
1.1 温湿度数据采集原理
温湿度探头直接使用IIC接口进行控制,本实验将使用CC2530 读取温湿度传感器SHT10的温度和湿度数据,并将采样到的数据转换然后再LCD显示。其中对温湿度的读取是利用CC2530的I/O(P1.0和P1.1)模拟一个类IIC得过程。其中该系统所使用的SHT10 是一款高度集成的温湿度传感器芯片, 提供全标定的数字输出。它采用专利的CMOSens 技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容性聚合体测湿敏感元件、一个用能隙材料制成的测温元件,并在同一芯片上,与 14 位的 A/D 转换器以及串行接口电路实现无缝连接。 1.1.1SHT10 引脚特性
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 电路中。
(1)向 SHT10 发送命令:
用一组“ 启动传输”时序,来表示数据传输的初始化。它包括:当 SCK 时钟高电平时DATA 翻转为低电平,紧接着 SCK 变为低电平,随后是在 SCK 时钟高电平时 DATA 翻转为高电平。后续命令包含三个地址位(目前只支持“000”,和五个命令位。SHT10 会以下述方)式表示已正确地接收到指令:在第 8 个 SCK 时钟的下降沿之后,将 DATA 拉为低电平(ACK位)。在第 9 个 SCK 时钟的下
4
降沿之后,释放 DATA(恢复高电平)。
(2)测量时序(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 自动转入休眠模式。
(3)通讯复位时序:
如果与 SHTxx 通讯中断,下列信号时序可以复位串口:当 DATA 保持高电平时,触发SCK 时钟 9 次或更多。在下一次指令前,发送一个“传输启动”时序。这些时序只复位串口,状态寄存器内容仍然保留。
5
二 系统分析
嵌入式温湿度采集系统是一种基于CC2530和数字温湿度传感器SHT10的温湿度采集系统。该系统采用Zigbee无线通信技术结合传感器,通过运用Zigbee协议架构组建无线传感网络,实现主从节点的数据采集和传输,以及一点对多点,两点之间的通信。并且也是基于Zigbee协议栈的中心节点和终端节点的协议传输,主要是从Zigbee协议栈网络层里AODV路由协议着手,在网络层通过AODV路由协议进行节点间的连接以及数据的收发。
2.1具体步骤描述
1、给智能主板供电(USB 外接电源或 2 节干电池);
2、将一个无线节点模块插入到带 LCD 的智能主板的相应位置; 3、将温湿度及光电传感器模块插入到智能主板的传感及控制扩展口位置; 4、将 CC2530 仿真器的一端通过 USB 线(A 型转 B 型)连接到 PC 机,另一端通过 10Pin下载线连接到智能主板的 CC2530 JTAG 口(J203);
5、将智能主板上电源开关拨至开位置。按下仿真器上的按钮,仿真器上的指示灯为绿色时,表示连接成功;
6、使用 IAR7.51 打开“…\\OURS_CC2530LIB\\lib10(HumiTempLight)\\ IAR_files”下的HumiTempLight.eww 文件,下载运行程序;
7、观察 LCD 上温度、湿度和光照强度的变化;
8、用一个物体挡住光照传感器的光线,观察 LCD 上光照强度数据的变化;
9、向温湿度传感器吹一口气体,观察 LCD 上温湿度数据的变
6
2.2 程序流程图
开始 系统时钟初始化 LCD初始化 读取温湿度数据 显示温湿度数据 AINO通道采样初光照数据采集 显示光照数据
图1-1 系统程序流程图
7
三 详细设计
本设计是基于CC2530的温湿度数据采集系统设计。因此,其重点是温湿
度数据采集设计的实现,主要可分为二大部分,一是实现无线传感的硬件模块;二是实现无线传感的软件支持,也就是基于Zigbee协议架构的编程。
实现温湿度数据采集的硬件部分主要包括:无线传感基本结构、无线传感实现原理、本设计所使用的实验箱以及软件支持、常见的无线传感模块以及实现基于CC2530的温湿度采集系统节点模块设计。
实现温湿度数据采集的软件部分主要包括:Zigbee协议栈整体架构、Zigbee协议栈网络层、AODV路由协议。
3.1实现温湿度数据采集的硬件部分
嵌入式温湿度采集系统设计的硬件部分可以大体有无线传感基本结构、无
线传感实现原理、本设计所使用的实验箱以及软件支持、常见的无线传感模块以及实现基于CC2530的温湿度采集系统节点模块设计等组成。其具体内容如下: 3.1.1无线传感基本结构及实现原理
无线传感器网络在设计目标方面是以数据为中心的,在无线传感器网络中,因为节点通常运行在人无法接近的恶劣甚至危险的远程环境中,所以除了少数节点需要移动以外,大部分节点都是静止不动的。在被监测区域内,节点任意散落,节点除了需要完成感测特定的对象以外,还需要进行简单的计算,维持互相之间的网络连接等功能。并且由于能源的无法替代以及低功耗的多跳通信模式节,设计无线传感节点时,有效的延长网络的生命周期以及节点的低功耗成为无线传感器网络研究的核心问题,其无线传感节点模型如下图1-2所示。
无线传感网络的建立是基于传感器加无线传输模块的,传感器采集的数据,简单处理后经过无线传输模块传到服务器或应用终端。目标、观测节点、传感节点和感知视场是无线传感器网络所包括的4个基本实体对象。大量传感节点随机部署,单个节点经过初始的通信和协商,通过自组织方式自行配置,形成一个传输信息的单跳链接或一系列无线网络节点组成的网络,协同形成对目标的感知视
8
场。传感节点检测的目标信号经过传感器本地简单处理后通过单播或广播以多跳的方式通过邻近传感节点传输到观测节点。用户和远程任务管理单元则能够通过卫星通信网络或Internet等外部网络,与观测节点进行数据信息的交互。观测节点向网络发布查询请求和控制指令,接收传感节点返回的目标信息。
节点定位系统 移动系统 传感器 模块 转换 处理器 存储器 无线通信 模块 电源 电源自供电系统
图1-2 无线传感节点模型
3.1.2使用的实验箱以及软件支持
物联网创新实验系统IOV-T-2530采用系列传感器模块和无线节点模块组成
无线传感网,扩展嵌入式网关实现广域访问,可实现多种物联网构架,完成物联网相关的各种传感器的信息采集、无线信号收发、Zigbee网络通讯、组件控制全过程。该工具箱提供了无线传感网通信模块、基本的传感器及控制器模块、嵌入式网关、计算机服务器参考软件等。 3.1.3实现温湿度采集系统节点模块设计
实验系统包含4个无线传感网通信节点和一个无线网络协调器。其中具体情况如下:
无线节点模块:主要有射频单片机构成,MCU是TI的CC2530,2.4G载频,棒状天线。
9
传感器及控制模块:系列传感器模块,包括温湿度传感模块、继电器模块和RS232模块等,也可以通过总线扩展用户自己的传感器及控制器部件。
电源板或智能主板:即实现无线节点模块与传感及控制模块的连接,又实现系统供电,目前主要有两节电池供电,保留外接电源接口,可以直接有直流电供电。
3.2实现温湿度数据采集的软件部分
实现温湿度数据采集的软件部分主要有Zigbee技术概述、Zigbee协议栈整
体架构、Zigbee协议栈网络层、AODV路由协议等几部分组成。而Zigbee协议栈网络层主要包括: 网络层概述、网络层所实现功能、网络层中常用路由协议。AODV路由协议主要包括:协议概述、协议的基本原理、AODV路由协议消息控制帧。一下将是温湿度数据采集的软件部分各部分的具体介绍: 3.2.1 ZIGBEE技术概述
Zigbee技术的使用与发展很大程度上弥补了无线通信市场上低功耗、低成本、低速率的空缺。同时随着Zigbee技术的深入发展和应用,越来越多的注意力和研究力量将会转到应用的设计、实现互联互通测试和市场的推广等方面。Zigbee技术的关键点是发展一种易布建、低成本、低功耗的无线网络。
Zigbee技术的应用前景非常好。Zigbee在未来的几年里将在工业无线定位、工业控制、消费电子、汽车自动化、家庭网络、楼宇自动化、医用设备控制等多个控制领域具有广泛的应用,特别是工业控制和家庭自动化,将会成为今后Zigbee芯片的主要应用领域。通常符合以下条件之一的应用,都可以考虑采用Zigbee技术:
(1)网点多:需要数据采集或监控的网点多。
(2)低传输量:要求传输的数据量不大且要求数据成本低。 (3)可靠性高:要求数据传输可靠性、全性高。
(4)体积小:设备体积很小,体积较大的充电电池或者电源模块不便放置。 (5)电池供电。
(6)覆盖量大:所需检测点监测点多,地形复杂,需要较大的网络覆盖面积。
10
(7)现有移动网络的覆盖盲区。
(8)遥测、遥控系统:使用现存移动网络进行的低数据量传输。 (9)局部区域移动目标的定位系统:使用GPS效果差、成本高的。 Zigbee无线传感网络是基于IEEE802.15.4技术标准和Zigbee网络协议而设计的无线数据传输网络,该网络主要应用在压力过程控制数据采集、流量过程控制数据采集、温度湿度监控、楼宇自动化、工业控制、数据中心、社区安防、设备监控、环境数据监控、制冷监控、仓库货物监控等方面。适用于蔬菜大棚温度、湿度和土壤酸碱度监控,钢铁冶炼温度控制,煤气抄表等各个领域。这种网络主要用于无线系统中短距离的连接,提供传感器网络接入,能够满足各种传感器的数据输出和输入控制的命令和信息的需求,实现系统网络化、无线化。
Zigbee技术是一种应用于各种电子设备之间的无线通信技术,这种通信组网是基于中短距离范围内、低传输速率下的。根据Zigbee技术的本质,它具有下列特性:低功耗、高度扩展性、可靠性高等。 3.2.2 ZIGBEE协议栈
Zigbee协议栈由一组子层组成,每一层为其上层提供一定的特定服务:一个数据实体提供数据传输服务,一个管理实体提供管理、维护等服务。每个服务实体通过一个服务接入点(SAP)为其上层提供服务接口,并且每个服务接入点(SAP)提供了一系列的基本服务指令来实现相应的功能。Zigbee协议栈中包括应以下各个子层:
(1)APP(Application Programming):应用层目录,这是用户创建各种不同工程的区域,在这个目录中包含了应用层的内容和这个项目的主要内容,在协议栈里面一般是以操作系统的任务实现的。
(2)HAL(Hardware (H/W) Abstraction Layer):硬件层目录,包含有与硬件相关的配置和驱动及操作函数。ZigBee硬件层通过射频固件和射频硬件提供了一个从MAC层以硬件层无线信道的接口。在硬件层中,包含一个硬件层管理实体(PLME),该实体通过调用硬件层的管理功能函数,为硬件层管理服务提供其接口,同时,还负责维护由硬件层所管理的目标数据库,该数据库包含有硬件层个域网络的基本信息。
(3)MAC:介质接入控制子层,包含了MAC 层的参数配置文件及其MAC 的LIB 库的函数接口文件。实现的功能有:1、能产生网络信标。2、支持PAN的连
11
接和断开连接。3、同信标保持同步。4、在对等的MAC实体之间提供一个可靠的通信链路。5、处理和维护GTS机制。6、信道接入采用CSMA-CA接入机制。7、支持设备的安全性。介质访问控制层(MAC)帧被称为MAC协议数据单元(MPDU),其长度不超过127个字节。它具有四种不同的帧形式,即信标帧、数据帧、确认帧和命令帧。
(4)MT(Monitor Test):实现通过串口可控各层,与各层进行直接交互。 (5)NWK(ZigBee Network Layer):网络层目录,含网络层配置参数文件及网络层库的函数接口文件,APS 层库的函数接口。
(6)OSAL(Operating System (OS) Abstraction Layer):协议栈的操作系统。
(7)Profile:AF(Application work) 层目录,包含AF 层处理函数文件。
(8)Security:安全层目录,安全层处理函数,比如加密函数等。 (9)Services:地址处理函数目录,包括着地址模式的定义及地址处理函数。
(10)0Tools:工程配置目录,包括空间划分及ZStack 相关配置信息。 (11)ZDO(ZigBee Device Objects):ZDO 目录。
(12)ZMac: MAC 层目录,包括MAC 层参数配置及MAC 层LIB 库函数回调处理函数。
(13)ZMain:主函数目录,包括入口函数及硬件配置文件。 (14)Output:输出文件目录,这个EW8051 IDE 自动生成的。 3.2.3 ZIGBEE协议栈网络层
ZigBee网络层必须提供一定的功能,其主要是提供一些必要的函数,以保证IEEE 802.15.4-2003ZigBee协议栈的MAC层能够正确操作,正常工作,并且为应用层提供一个合适的服务接口。为了和应用层通信,必须向其提供接口,网络层的概念包括了两个必要的功能服务实体。它们分别为数据服务实体(NLDE)和管理服务实体(NLME)。网络层数据实体(NLDE)通过网络层相关的数据库服务接入点(NLDE-SAP)提供数据传输服务,网络层管理实体(NLME)通过网络层相关的管理库服务接入点(NLME-SAP)提供网络管理服务,网络层管理实体利用网络层数据实体来获得一些网络管理任务,并完成一些网络的管理工作。并且,
12
网络层管理实体还维护一个管理对象的数据库,叫做网络信息库(NIB),网络层管理实体完成对网络信息库(NIB)的维护和管理。 3.2.4AODV路由协议
AODV自组织按需请求型距离向量路由协议(Ad Hoc On Demand Distance Vector,简称AODV),AODV采用的是逐跳转发分组方式,在每个节点之间保存了路由请求和路由回答的结果,因此路由的头部不需要携带完整的路由信息,从而提高了协议的效率。算法旨在多个移动节点中建立和维护一个自启动的,动态的,多跳路由的专属网络。它是一种按需的改进的距离向量路由协议,具有按需路由协议的特点即在AODV路由协议中,网络中的每个节点在需要进行通信时才发送路由分组,而不会周期性地交互路由信息以得到所有其它主机的路由;同时具有距离向量路由协议的一些特点,即各节点路由表只维护本节点到其他节点的路由,而无需掌握全网拓扑结构。网络中连接的断开和异动都会影响网络的拓扑结构,AODV 使得移动节点能适时对这种变化做出响应。AODV 的操作是无自环的,并且由于解决了 Bellman-Ford“无穷计数”的问题,使得该算法在网络拓扑变化时能够快速收敛。当一个连接断开时,AODV 会告知所有受到影响的节点,这些节点会让用到这个连接的路由失效。AODV 的一个显著特点是它在每个路由表项上使用了目的序列号。目的序列号由目的节点创建,并且被包含在路由信息中,然后这些路由信息将被回发到所有向它发起请求的节点。目的序列号的使用确保了无回环,并且易于编程。如果到一个目的有两条路由可供选择,那么收到请求的节点将会选择序列号最大的那一条。此外,AODV另一个显著的特点是它加入了组播路由协议扩展,并支持QOS。它的缺点是:不支持单向信道,原因是AODV协议基于双向信道的假设工作,路由回答分组直接沿着路由请求的反方向回到源节点。
3.3总体软件结构图
该温湿度数据采集系统是由温湿度探头直接以IIC接口进行控制,并用CC2530 读取温湿度传感器SHT10的温度和湿度数据,并将采样到的数据转换然后再LCD显示。其中对温湿度的读取是利用CC2530的I/O(P1.0和P1.1)模拟一个类IIC得过程,而使用的SHT10 是一款高度集成的温湿度传感器芯片。因
13
此,可以将该过程划分为三个子模块:温度数据采集模块、数据处理模块、湿度数据采集模块,其总体软件结构图如图1-3所示。
温度采集模块 数据处理模块 湿度处理模块 电源模块
图1-3 总体软件结构图
3.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); // 显示色为亮点,背景色为暗点
14
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.4.1 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);
//收到的不是广播分组,解析分组
15
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
if(ih->saddr()
==
index) rqueue.enque(p); sendRequest(rt->rt_dst);
//链路中断,在维护中
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 (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) {//
16
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内容,并向受影响的节点发送该RERRvoid AODV::recvError(Packet *p) {
17
总结
在本次嵌入式系统开发技术课程设计中,主要目的是设计一个基于CC2530的温湿度数据采集系统。该系统是一个采用CC2530无线单片机进行温湿度的数据采集,并且结合Zigbee协议架构进行编程的设计,主要是用C51实现基于CC2530的温湿度数据采集系统模块的设计,并在IAR集成环境开发环境中进行基于Zigbee架构的编程,节点模块的调试,最后,实现无线传感网络的构建。
值得一说的是在这为期二周的嵌入式系统开发技术课程设计中我们收获了不少。我们不仅学习了如何使用CC2530读取温湿度传感器SHT10的温湿度数据,而且了解了如何通过CC2530内部的ADC得到光照传感器的数据。甚至也了解了一些无线传感器的知识。总之,我觉得本次训练让我了解了课本上不曾提到的知识。因此,这次课程设计训练对将来从事这一方面工作的同学尤为重要,这等于让我们提前对这方面的知识有了进一步的认识。当然,在这次训练过程中也遇到了很多实际问题,不过在老师的进一步讲解之后,我们逐步认识和理解了其中的关键,而且又对所学的理论知识有了升华。
同时本次训练,也在一定方面加深了我对所学过的各种理论的认识和理解,并在一定程度上掌握并会运用。更为难得的是,在这次训练过程中,屡屡碰见一些问题,在解决这些问题的过程中,不断加强了我对嵌入式系统的理解。对于一些自己不清楚,不明白但平时又很难发现的知识点有了一次全面的巩固与复习。在大学阶段,理论的学习和实践是密不可分的。离开了实践的理论如同空中阁楼。与此同时,理论是需要实践来不来不断完的。理论与实践就如同鱼与水,是相互依存的。同时,在与同学共同解决一些问题的过程中,提高了团队协作精神。
18
参考文献
[1]赵宏、曹洁.Linux系统指南.成都:西南交通大学出版社,2008.
[2]张晓林,崔迎炜 .嵌入式系统设计与实现.北京:北京航空航天大学出版社,2006.
[3]陈文智. 嵌入式系统开发原理与实践.北京:清华大学出版社 ,2005. [4]王宜怀、刘晓升.嵌入式技术基础与实践.北京:清华大学出版社,2007. [5]刘洪涛、孙天泽.嵌入式技术与设计.北京:人民邮电出版社,2009. [6]陈渝.嵌入式系统原理及应用开发.北京:机械工业出版社,2002. [7]张石. 嵌入式系统技术教程.北京:人民邮电出版社,2009.
19
致谢
通过二周的嵌入式系统开发技术课程设计,我们真的学习到了很多东西,不仅仅是嵌入式系统方面的理论知识,还有许多技能。如如何找一些有用的相关材料,如何删选有价值的部分等等。当然,对于理论知识如此欠缺的我们来说,初次接触综合性如此强的课程设计会遇到许许多多问题,这时候就少不了老师的细心指导和认真讲解。一直以来老师都是我们的指路人,孜孜不倦的发光发热,在这里我想首先向我们敬爱的老师道声谢,老师辛苦了!还要谢谢帮助我的同学们,愿我们一起进步,一起更努力!
20
因篇幅问题不能全部显示,请点此查看更多更全内容