1、兰 州 理 工 大 学计算机与通信学院2014 年春季学期物联网综合应用实践 课程设计题 目:基于物联网的温湿度信息采集系统设计 专业班级: 姓 名: 学 号: 指导教师: 成 绩: 2基于物联网的温湿度信息采集系统设计摘要基于物联网的无线传感网络是多学科的高度交叉,知识的高度集成的前沿热点研究领域。它通过各类集成化的微型传感器协作地实时监测,感知和采集各种环境或监测对象的信息,这些信息通过无线方式被发送,并以自组多跳的网络方式传送到用户终端无线传感器网络的特性决定了其不需要较高的传输带宽,而要求较低的传输延时和极低的功率消耗。IEEES02154ZigBee 技术是近年来通信领域中的研究热点
2、,具有低成本、低功耗、低速率、低复杂度的特点和高可靠性、组网简单、灵活等优势,逐渐成为无线传感器网络事实上的国际标准。此次课设设计并实现了用无线传感器网络构成的分布式温度湿度监控系统。关键词:物联网、信息采集、SHT10、串口通信3正文: 4一、前言 4二、基本原理 52.1 SHT10 引脚特性 .52.2 温湿度传感器模块 82.3 CC2530 串口通信原理 .92.4 Zig Bee 简介 10三、系统分析 16四、详细设计 184.1 硬件设计 184.2 软件设计 .214.3 设计结构图 .214.4 代码 .22总结 33参考文献 344正文:一、前言物联网系统是以应用为中心,
3、以计算机技术为基础,软硬件可定制,适用于不同应用场合,对功能,可靠性,成本,体积,功耗有严格要求的专用计算机系统。随着生活水平的提高和科学技术发展的需求,人类对环境信息的感知上有了更高的要求,在某些特殊工业生产领域和室内存储场合对环境要求显得特别苛刻;随着物联网技术的发展,为环境环境检测提供了更进一步的保障。基于物联网的环境信息采集系统包含感知层、传输层、应用层三个层面;传输层常见的有温湿度、烟感、一氧化碳、压力等物联网传感器模块,传输层包括有线通信和无线通信两部分,应用层包括各种终端。在室内环境监测领域,以物联网技术为基础,结合 ZigBee技术可以实现、准确、完整、可靠的反应环境信息,做到
4、实时监控。基本原理:湿度传感器和温度传感器采集到数据后,通过给 RS232 串口增加 ZigBee 功能,替代设备电缆线进行无线传输,串口传输5设计为双向全双工,无硬件流控制,强制允许 OTA(多条)时间和丢包重传。本次课设采用的 senser 节点中烧写 EndDeviceEB程序,在协调器中烧写 CoordinatorEB 程序。在设备绑定时先启动协调器绑定,后启动终端节点绑定,按键 SW1 用于设备之间绑定,SW2 用于启动匹配描述符请求。二、基本原理本实验将使用 CC2530 读取温湿度传感器 SHT10 的温度和湿度数据,最后将采样到的数据转换然后在 LCD 上显示。其中对温湿度的读
5、取是利用 CC2530 的 I/O(P1.0 和 P1.1)模拟一个类 IIC 的过程。其中该系统所使用的 SHT10 是一款高度集成的温湿度传感器芯片,提供全标定的数字输出。它采用专利的 CMOSens 技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容性聚合体测湿敏感元件、一个用能隙材料制成的测温元件,并在同一芯片上,与 14 位的 A/D 转换器以及串行接口电路实现无缝连接。2.1 SHT10 引脚特性SHT10 是一款高度集成的温湿度传感器芯片, 提供全标定的数字输出。它采用专利的CMOSens 技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容性聚
6、合体测湿敏感元件、一个用6能隙材料制成的测温元件,并在同一芯片上,与 14 位的 A/D 转换器以及串行接口电路实现无缝连接。 SHT10 引脚特性如下: (1)VDD,GND SHT10 的供电电压为 2.45.5V。传感器上电后,要等待 11ms 以越过“休眠”状态。在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个 100nF 的电容,用以去耦滤波。 (2)SCK 用于微处理器与 SHT10 之间的通讯同步。由于接口包含了完全静态逻辑,因而不存在最小 SCK 频率。 (3)DATA 三态门用于数据的读取。DATA 在 SCK 时钟下降沿之后改变状态,并仅在 SCK 时钟上
7、升沿有效。数据传输期间,在 SCK 时钟高电平时,DATA 必须保持稳定。为避免信号冲突,微处理器应驱动 DATA 在低电平。需要一个外部的上拉电阻(例如:10k)将信号提拉至高电平。上拉电阻通常已包含在微处理器的 I/O 电路中。 1、向 SHT10 发送命令:用一组“ 启动传输”时序,来表示数据传输的初始化。它包括:当 SCK 时钟高电平时 DATA 翻转为低电平,紧接着 SCK 变为低电平,随后是在 SCK 时钟高电平时 DATA 翻转为高电平。后续命令包含三个地址位(目前只支持“000” ) ,和五个命令位。SHT10 会以下述方式表示已正确地接收到指令:在第 8 个 SCK 7时钟的
8、下降沿之后,将 DATA 拉为电平(ACK 位) 。在第 9 个 SCK 时钟的下降沿之后,释放 DATA(恢复高电平) 。 2、测量时序(RH 和 T): 发布一组测量命令(00000101表示相对湿度 RH, 00000011表示温度 T)后,控制器要等待测量结束。这个过程需要大约 11/55/210ms,分别对应 8/12/14bit 测量。确切的时间随内部晶振速度,最多有15%变化。SHTxx 通过下拉 DATA 至低电平并进入空闲模式,表示测量的结束。控制器在再次触发 SCK 时钟前,必须等待这个 “数据备妥”信号来读出数据。检测数据可以先被存储,这样控制器可以继续执行其它任务在需要
9、时再读出数据。接着传输 2 个字节的测量数据和1 个字节的 CRC 奇偶校验。uC 需要通过下拉 DATA 为低电平,以确认每个字节。所有的数据从 MSB 开始,右值有效(例如:对于 12bit 数据,从第 5 个 SCK 时钟起算作 MSB; 而对于 8bit 数据, 首字节则无意义) 。用 CRC 数据的确认位,表明通讯结束。如果不使用 CRC-8 校验,控制器可以在测量值 LSB 后,通过保持确认位 ack 高电平, 来中止通讯。在测量和通讯结束后,SHTxx 自动转入休眠模式。 3、通讯复位时序: 如果与 SHTxx 通讯中断,下列信号时序可以复位串口:当 DATA 保持高电平时,触发
10、 SCK 时钟 9 次或更多。在下一次指8令前,发送一个“传输启动”时序。这些时序只复位串口,状态寄存器内容仍然保留.2.2 温湿度传感器模块温湿度探头直接使用 IIC 接口进行控制,光敏探头经运放处理后输出电压信号到 AD 输入。IIC 接口将同时连接 EEPROM 以及温湿度传感器两个设备,将采用使用不同的 IIC设备地址的方式进行区分。其电路原理图如下所示:温湿度传感器模块原理图使用 1012bit 的 AD 采集器进行光敏信号采集,使用专用温湿度传感器(IIC 接口)进行温湿度信号采集。一次采样使用 2 字节描述,MSB 方式,温湿度及光电传感器模块输出数据结构如下:(1)仅采集温度信
11、息 9温度数据高字节,温度数据低字节。 (2)仅采集湿度信息 湿度数据高字节,湿度数据低字节。(4)采集全部信息 温度数据高字节,温度数据低字节,湿度数据高字节,湿度数据低字节。 注意:本指令一次测量,最多只上传 1 次采集数据,不支持连续采集数据上传。 2.3 CC2530 串口通信原理UART 接口可以使用 2 线或者含有引脚 RXD、TXD、可选 RTS 和 CTS 的 4 线。 UART 操作由 USART 控制和状态寄存器 UxCSR 以及 UART 控制寄存器 UxUCR 来控制。这里的 x 是 USART 的编号,其数值为 0 或者 1。 当 UxCSR.MODE 设置为 1 时
12、,就选择了 UART 模式。 当 USART 收/发数据缓冲器、寄存器 UxBUF 写入数据时,该字节发送到输出引脚 TXDx。UxBUF 寄存器是双缓冲的。 当字节传输开始时,UxCSR.ACTIVE 位变为高电平,而当字节传送结束时为低。当传送结束时,UxCSR.TX_BYTE 位设置为 101.当 USART 收/发数据缓冲寄存器就绪,准备接收新的发送数据时,就产生了一个中断请求。该中断在传送开始之后立刻发生,因此,当字节正在发送时,新的字节能够装入数据缓冲器。当 1 写入 UxCSR.RE 位时,在 UART 上数据接收就开始了。然后 UART 会在输入引脚 TXDx 中寻找有效起始位
13、,并且设置 UxCSR.ACTIVE 位为 1.当检测出有效起始位时,收到的字节就传入到接收寄存器,UxCSR.RX_BYTE 位设置为 1.该操作完成时,产生接收中断。同时 UxCSR.ACTIVE 变为低电平。 通过寄存器 UxBUF 提供到的数据字节。当 UxBUF 读出时,UxCSR.RX_BYTE 位由硬件清 0。2.4 Zig Bee 简介1 Zig Bee 技术的使用与发展很大程度上弥补了无线通信市场上低功耗,低成本,低速率的空缺。同时随着 ZigBee 技术的深入发展和应用,越来越多的注意力和研究力量将会转到应用的设计,实现互联互通测试和市场的推广等方面。ZigBee 技术的关
14、键是发展是一种易布建,低成本,低功耗的无线网络。ZigBee 技术的应用前景非常好。Zig Bee 在未来的几十年里将在工业无线定位,工业控制,消费电子,汽车自动化,家庭网络,医用设备控制等多个控制领域具有广泛的应用,特别是工业控制和家庭自动化,将会成为今后 ZigBee 芯片的主要领11域。通常符合以下条件之一的应用,都可以采用此技术。(1)网络多:需要数据采集或监控的网络多。(2)低传输量:要求传输的数据量不大且要求数据成本低。(3)可靠性高:要求数据传输可靠性,安全性高。(4)体积小:设备体积很小,体积较大的充电电池或者电源模块不方便放置(5)电池供电。(6)覆盖量大:所需检测点多,地形
15、复杂,需要较大的网络覆盖面积。(7)现有移动网络的覆盖盲区。(8)遥测,遥控系统:使用先从移动网络进行的地数据量传输。(9)局部区域移动口标的定位系统:使用 GPS 效果差,成本高.2 ZigBee 协议标准ZigBee 协议标准采用分层结构,每一层为上层提供一系列特殊的服务:数据实体提供数据传输服务;管理实体则提供所有其他的服务。所有的服务实体都通过服务接人点 SAP 为上层12提供接口,每个 SAP 都支持一定数量的服务原语来实现所需的功能。ZigBee 标准的分层架构是在 OSI 七层模型的基础上根据市场和应用的实际需要定义的。其中 IEEE 8021542003标准定义了底层协议:物理
16、层(physical layer,PHY)和媒体访问控制层(medium access control sublayer,MAC)。ZigBee 联盟在此基础上定义了网络层(network layer,NWK),应用层(application layer,APL)架构。在应用层内提供了应用支持子层(application support sublayer,APS)和 ZigBee 设备对象(ZigBee device object,ZDO)。应用框架中则加入了用户自定义的应用对象。 ZigBee 的网络层采用基于 Ad Hoc 的路由协议,除了具有通用的网络层功能外,还应该与底层的 IEEE
17、802154 标准一样功耗小,同时要实现网络的自组织和自维护,以最大限度方便消费者使用,降低网络的维护成本。应用支持子层把不同的应用映射到 ZigBee 网络上,主要包括安全属性设置、业务发现、设备发现和多个业务数据流的汇聚等功能。ZigBee 无线测温系统的组成及原理基于 ZigBee 技术的无线测温系统主要由基于 ZigBee 技术的底层无线传感器网络、远程数据传输网络以及功能完善的上位监控系统 3 部分组成,该系统是由大量的传感器点、汇节点以及远程传输模块组成的分布式系统。基于簇的分层结构具有天然的分布式处理能力,簇头就是分布式处理中心,即无线传感器网络的一个汇节点。每个簇成员(传感器节
18、点)都把数据传给簇头,数据融合后直接传给远程传输13网络,中央控制中心通过远程传输网络与多个汇节点连接,汇节点和传感器节点之间通过 ZigBee 技术实现无线的信息交换。带有射频收发器的无线传感器节点负责对数据的感知和处理并传送给汇节点;通过远程传输网络获取采集到的相关信息,实现对现场的有效控制和管理。图 2 ZigBee 协议栈结构图1. 物理层物理层由半双工的无线收发器及其接口组成,主要作用是14激活和关闭射频收发器;检测信道的能量;显示收到数据包的链路质量;空闲信道评估;选择信道频率;数据的接受和发送。2. 媒体访问控制层媒体访问控制(MAC)层建立了一条节点和与其相邻的节点之间可靠的数
19、据传输链路,共享传输媒体,提高通信效率。在协调器的 MAC 层,可以产生网络信标,同步网络信标;支持ZigBee 设备的关联和取消关联;支持设备加密;在信道访问方面,采用 CSMA/CA 信道退避算法,减少了碰撞概率;确保时隙分配(GTS) ;支持信标使能和非信标使能两种数据传输模式,为两个对等的 MAC 实体提供可靠连接。3. 网络层网络层负责拓扑结构的建立和维护网络连接,主要功能包括设备连接和断开网络时所采用的机制,以及在帧信息传输过程中所采用的安全性机制。此外,还包括设备的路由发现和路由维护和转交。并且,网络层完成对一跳(onehop)邻居设备的发现和相关结点信息的存储。一个 ZigBe
20、e 协调器创建一个新网络,为新加入的设备分配短地址等。并且,网络层还提供一些必要的函数,确保 ZigBee 的 MAC 层正常工作,并且为应用层提供合适的服务接口。网络层要求能够很好地完成在 IEEE 802154 标准中15MAC 子层所定义的功能,同时,又要为应用层提供适当的服务接口。为了与应用层进行更好的通信,网络层中定义了两种服务实体来实现必要的功能。这两个服务实体是数据服务实体(NLDE)和管理服务实体(NLME)。网络层的 NLDE 通过数据服务实体服务访问点(NLDESAP)来提供数据传输服务,NLME 通过管理服务实体服务访问点(NLMESAP)来提供管理服务。NLME 可以利
21、用 NLDE 来激活它的管理工作,它还具有对网络层信息数据库(NIB)进行维护的功能。 在这个图中直观地给出了网络层所提供的实体和服务接口等。 NLDE 提供的数据服务允许在处于同一应用网络中的两个或多个设备之间传输应用协议数据单元(APDU)。NLDE 提供的服务有:产生网络协议数据单元(NPDU)和选择通信路由。选择通信路由,在通信中,NLDE 要发送一个 NPDU 到一个合适的设备,这个设备可能是通信的终点也可能只是通信链路中的一个点。NLME 需提供一个管理服务以允许一个应用来与协议栈操作进行交互。 NLME 需要提供以下服务: 配置一个新的设备(configuring a new d
22、evice)。具有充分配置所需操作栈的能力。配置选项包括:ZigBee 协调器的开始操作,加入一个现有的网络等。 4. 应用层应用层包括三部分:应用支持子层(APS) 、ZigBee 设备对16象(ZDO)和应用框架(AF) 。应用支持子层的任务是提取网络层的信息并将信息发送到运行在节点上的不同应用端点。应用支持子层维护了一个绑定表,可以定义、增加或移除组信息;完成 64 位长地址(IEEE 地址)与 16 位短地址(网络地址)一对一映射;实现传输数据的分割与重组;应用支持子层连接网络层和应用层,是它们之间的接口。这个接口由两个服务实体提供:APS 数据实体(APSDE)和 APS 管理实体(
23、APSME) 。APS数据实体为网络中的节点提供数据传输服务,它会拆分和重组大于最大荷载量的数据包。APS 管理实体提供安全服务,节点绑定,建立和移除组地址,负责 64 位 IEEE 地址与 16 位网络地址的地址映射4。ZigBee 设备对象负责设备的所有管理工作,包括设定该设备在网络中的角色(协调器、路由器或终端设备) ,发现网络中的设备,确定这些设备能提供的功能,发起或响应绑定请求,完成设备之间建立安全的关联等。用户在开发 ZigBee 产品时,需要在 ZigBee 协议栈的 AF 上附加应用端点,调用 ZDO 功能以发现网络上的其他设备和服务,管理绑定、安全和其他网络设置。ZDO 是一
24、个特殊的应用对象,它驻留在每一个 ZigBee 节点上,其端点编号固定为 0。AF 应用框架是应用层与 APS 层的接口。它负责发送和接收数据,并为接收到的数据寻找相应的目的端点。17三、系统分析该系统通过具有 IIC 总线接口的单片全校准字式新型相对温湿度传感器 SHT10 实现对温湿度的采集,将信号送至 Zig Bee 技术,从节点采集温湿度数据每隔一定的时间轮流向主节点发送,主节点收到数据之后通过串口将各节点的温湿度数据传给智能主板。具体步骤描述(1)给职能主板供电(USB 外接电源或 2 节干电池) ;(2)将一个无线节点模块插入到带 LCD 的智能主板的相应位置;(3)将温湿度及光电
25、传感器模块插入到智能主板的传感及控制扩展口位置;(4)接下来将 CC2530 仿真器的一端通过 USB 线(A 型转 B 型)连接到 PC 机,另一端通过 10Pin 下载线连接到智能主板的 CC2530 JTAG 口(J203) ;(5)将智能主板上电源开关拨至开位置。按下仿真器上的按钮,仿真器上的指示灯为绿色时,表示连接成功;(6)使用 IAR7.51 打开18“OURS_CC2530LIBlib10(HumiTempLight) IAR_files”下的 HumiTempLight.eww 文件,下载运行程序;(7)观察 LCD 上温度、湿度和光照强度的变化;(8)向温湿度传感器吹一口气
26、体,观察 LCD 上温湿度数据的变化;四、详细设计本设计是基于 CC2530 的温湿度数据采集系统设计。因此,其重点是温湿度数据采集设计的实现,主要可分为二大部分,一是实现无线传感的硬件模块;二是实现无线传感的软件支持,也就是 Zigbee 协议框架的编程。实现湿度数据采集的硬件部分主要包括:无线传感基本结构、无线传感实现原理、本设计所使用的试验箱以及软件支持、常见的无线传感模块以及实现基于 CC2530 的温湿度采集系统节点模块设计。实现温湿度数据采集的软件部分主要包括:Zigbee 协议栈整体构架,Zigbee 协议栈网络层。4.1 硬件设计物联网温湿度采集系统的硬件部分可以大体有无线传感
27、基本结构、无线传感实现原理、本设计所使用的试验箱以及软件19支持、常见的无线传感模块以及实现基于 CC2530 的温湿度采集系统节点模块设计等组成。其具体内容如下:1、无线传感基本结构及实现原理无线传感器网络在设计目标方面是以数据为中心的,在无线传感器网络中,因为节点通常运行在人无法接近的恶劣甚至危险的远程环境中,所以除了少数节点也要移动外,大部分节点是静止不动的。在被检测区域内,节点任意散落,节点除了需要完成感测特定的对象外,还需要进行简单的计算,维持互相之间的网络连接等功能。并且由于能源的无法替代以及低功耗的多跳通信模式,设计无线传感节点时,有效的延长网络的生命周期以及节点的低功耗成为无线
28、传感器网络研究的核心问题,其无线传感节点模型如下图:无线传感网络的建立是基于传感器加无线传输模块的,传感器采集的数据,简单处理后经过无线传输模块传到服务器或应用终端。目标,观测节点,传感节点和感知视场是无线传感20器网络所包括的4个基本实体对象。大量传感节点随机部署,单个节点进过初始的通信和协议,通过自组织方式自行配置,形成一个传输信息的单跳链接或一系列无线网络节点组成的网络,协同形成对目标的感知视场。传感节点检测的目标信号经过传感器本地简单处理后通过单播或广播以多跳的方式通过邻近传感节点传输到观测节点。用户和远程任务管理单元则能够通过卫星通信网络或 Inteernet 等外部网络,与观测节点
29、进行数据信息的交互。观测节点向网络发布查询请求和控制指令,接受传感节点返回的目标信息。2、使用的试验箱以及软件支持物联网创新试验系统 IOV-T-2530采用系列传感器模块和无线节点模块组成无线传感网,扩展物联网网关实现广域访问,可实现多种物联网构架,完成物联网相关的各种传感器的信息采集、无线信号收发、Zigbee 网络通讯,组件控制全过程。该工具提供了无线传感网通信模块,基本的传感器及控制器模块、物联网网关、计算机服务器参考软件等。3、实现温湿度采集系统节点模块设计实验系统包含4个无线传感网通信节点和一个无线网络协调器,其中具体情况如下:无线节点模块:主要有射频单片机构成,MCU 是 TI
30、的CC2530,2.4G 载频,棒状天线。21传感器及控制模块:包括温湿度传感器模块,继电器模块和 RS232模块等,也可以通过总线扩展用户自己的传感器及控制部件。电源板或智能主板:即实现无线节点模块与传感器及控制模块的连接,又实现系统供电。4.2 软件设计实现温湿度数据的采集的软件部分主要有 Zig Bee 技术概述,协议栈整体架构,Zig Bee 协议栈网络层,AODV 路由协议等几部分组成。而 Zig Bee 协议层主要包括:网络层概述,网络层所实现的功能,网络层中常用的路由协议。AODV 路由协议主要包括:协议概述,协议的基本原理,AODV 路由协议消息控制帧。4.3 设计结构图1、串
31、口通信设计程序流程图及核心代码:224.4 代码1、串口通信部分代码:/* * 函数名称:initUART * 功能描述:CC2530 串口初始化 23*/ void initUART(void) PERCFG = 0x00; /位置 1 P0 口 P0SEL = 0x3c; /P0用作串口 U0CSR |= 0x80; /UART 方式 U0GCR |= 11; /baud_e = 11; U0BAUD |= 216; /波特率设为 115200 UTX0IF = 1; U0CSR |= 0X40; /允许接收 IEN0 |= 0x84; /uart0接收中断 /* * 函数名称:UartT
32、X_Send_String 24* * 功能描述:串口发送数据函数 * * 参 数:*Data - 发送数据指针 * len - 发送的数据长度 * * 返 回 值:无 */ void UartTX_Send_String(UINT8 *Data,int len) int j; for(j=0;jlen;j+) U0DBUF = *Data+; while(UTX0IF = 0); UTX0IF = 0; 25 /* * 函数名称:HAL_ISR_FUNCTION * * 功能描述:串口接收数据中断函数 * * 参 数:halUart0RxIsr - 中断名称 * URX0_VECTOR -
33、中断向量 * * 返 回 值:无 */ HAL_ISR_FUNCTION( halUart0RxIsr, URX0_VECTOR ) 26UINT8 temp; URX0IF = 0; temp = U0DBUF; *(str + count) = temp; count+; /* * 函数名称:main * 功能描述:串口间歇发送 字符串,当串口接收到数据后,再通过串口 * 回发出去。 */ void main() 27UINT8 *uartch = “ “; UINT8 temp = 0; SET_MAIN_CLOCK_SOURCE(CRYSTAL); /设置主时钟为 32M 晶振 in
34、itUART(); /初始化串口 while(1) UartTX_Send_String(uartch,17); /发送 halWait(200); halWait(200); if(count) /判断串口是否接收到数据 temp = count; /保存接收的数据长度 halWait(50); /等待数据接收完成 if(temp =count) /判断数据是否接收完成 28 UartTX_Send_String(str,count); /回发接收到的数据 str = 0; count = 0; 2、核心代码及程序流程图:29代码清单:void main() int tempera; int
35、 humidity; char s16; UINT8 adc0_value2; 30float num = 0; SET_MAIN_CLOCK_SOURCE(CRYSTAL); / 设置系统时钟源为 32MHz 晶体振荡器 GUI_Init(); / GUI 初始化 GUI_SetColor(1,0); / 显示色为亮点,背景色为暗点 GUI_PutString5_7(25,6,“OURS-CC2530“); /显示 OURS-CC2530GUI_PutString5_7(10,22,“Temp:“); GUI_PutString5_7(10,35,“Humi:“); GUI_PutString5_7(10,48,“Light:“); LCM_Refresh(); while(1) th_read( /读取温度和湿度 sprintf(s, (char*)“%d%d C“, (INT16)(int)tempera / 10), (INT16)(int)tempera % 10); /将