基于Zigbee的温度湿度监测系统的研究
扫描二维码
随时随地手机看文章
摘要:根据一些环境温度湿度实时监测的需要,采用首个符合Zigbee标准的CC2430射频芯片,以SHT10为温湿度传感器来设计实现温度湿度的数据采集与传输。利用TI公司的Z—Stack协议栈在IAB开发环境下,建立一个无线传感器网络。网络协调器通过RS232串口与PC通信,实现对温度湿度的无线智能监测。
关键词:Zigbee;无线网络;CC2430;温度湿度监测
在生命科学设施、计量校准实验室和电子制造环境,温度和湿度往往需要监测和报警显示,以保障产品和工艺;在农业种植、环境监测和我们的日常生活中,要时刻关心环境变化,只有在适宜的温度和湿度下,才能获得更大的效益。以往的测温测湿系统都是通过CAN或RS485等有线方式传送数据,线路复杂布线困难,成本高,老化、容易受雷击等问题影响了其可靠性。另外,像温度、湿度传感器这样的设备并不需要很大的功耗和数据传输速率。Zigbee技术弥补了低成本、低功耗和低速率无线通信市场的空缺,其成功的关键在于丰富而便捷的应用。
Zigbee技术有自己的无线电标准,在数千个微小的传感器之间相互协调实现网络通信。这些传感器只需要很低的功耗,以接力的方式通过无线电波将数据从一个传感器传到另一个传感器,它们的通信效率非常高。无需布线,可以按照需要增减温度湿度采集节点,自组织网络,并且节点功耗低,生命周期长,使用灵活方便。因此,采用Zigbee技术来设计温度湿度监测系统,具有明显的实用价值和现实意义。
1 Zigbee技术及协议栈
Zigbee是一种新兴的短距离、低速率、低成本无线网络技术,是一个由可多到65000个无线数传模块组成的一个无线数传网络平台。Zigb ee协议栈对那些涉及Zigbee的层予以定义。IEEE 802.15.4标准定义了最下面的两层:物理层(PHY)和介质接入控制子层(MAC)。Zigbee联盟提供了网络层和应用层框架的设计,其中应用层的框架包括了应用支持子层(APs)、设备对象层(ZDO)和由制造商制订的应用对象。Zigbee支持的设备类型包括FFD(全功能设备)和RFD(半功能设备)。FFD可以和FFD和RFD通信,可以为PAN协调器,路由器和终端设备。RFD只能和FFD通信,只能作为终端设备。在IEEE802.15.4物理层和MAC层基础上,Zigbee网络层提供了一些功能,比如动态网络的建立、地址、路由和发现
一跳的邻居节点等。
2 系统的组成
该监测系统由Zigbee协调器、Zigbee路由器、若干个SHT10温湿度传感器组成的树状网络结构图。其中,传感器节点分布于需要监测的区域,负责对数据的感知和处理,并通过无线射频信号发射给路由器,再通过路由器的转发将数据传给协调器,最终通过RS232串口将数据送入监控主机,监控主机放在监控室,负责数据存储和对数据的进一步处理。Zigbee网络中,每个设备拥有两个地址:一个是64位IEEE物理地址,每个节点拥有全球唯一的MAC地址,另一个是所在PAN里独有16位网络地址,也称短地址。网络地址是在节点加入网络时,由其父节点分配给它的。协调器在建立网络后使用0x000作为自己的短地址。路由器和终端加入网络后,使用父设备给它分配的短地址来通讯。工作人员无需到现场,通过查看网络地址即可知道哪一点传来的数据,这样既方便快速又可集中查询、管理数据。
3 硬件设计
为了便于系统功能扩展,节点采用模块化设计,分为核心板、底板、传感器模块3个部分。核心板负责传感器的驱动以及数据的传输工作。它的主控芯片是CC2430[4],是一款真正符合IEEE802.15.4标准的片上Zigbee产品,具有超低功耗、高灵敏度、出众的噪声及抗干扰能力。核心板即为CC2430单片机的最小系统板,它将CC2430单片机的P0口、P1口和P2_0-P2_2全部引出,满足模块化设计的需求。由于CC2430在单个芯片上整合了ZigBee射频(RF)前端、内存和微控制器。内部集成了大量必要的电路,因此采用较少的外围电路即实现信号的收发功能,如图1所示。
底板一方面连接核心板与传感器模块,在传感器与芯片之间进行数据传输,另一方面为整个模块供电和节点与PC机之间通信的接口,主要由电源电路、单片机接口电路、复位电路等组成。系统中CC2430芯片需要的电源是3.3 V直流稳压电源,而我们常用的电源电压是5 V,所以需要用DC—DC直流转换器1117—3.3将5 V直流电转换为3.3 V直流电,以供系统正常工作需求。电源模块电路如图2所示。
传感器模块采用温湿度传感器SHT10,负责采集温度、湿度数据,其工作电压为2.4~5.5 V,测湿精度为±4.5%RH,25℃时测温精度为±0.5℃。由于传感器SHT10既可以采集温度数据也可以采集湿度数据。它用两条串行线与处理器进行数据通信,SCK数据线负责处理器和SHT10的通讯同步;DATA三态门用于数据的读写。将模拟量转换为数字量输出,所以用户只需按照它提供的接口将温湿度数据读取出来即可。数据采集完成后Zigbee无线通信芯片将数据经路由器传输到协调器,这样温湿度采集节点便完成了一次工作周期。本设计中CC2430的引脚P0_0用于连接SCK,P0_4用于连接DATA。
4 系统软件设计
本系统软件设计基于TI公司推出的CC2430芯片配套的Z—Stack协议栈和IAR集成开发环境。在TI免费协议栈的基础上,通过修改其应用层来实现不同的功能。一般情况下,我们只需要添加三个文件就可以完成一个项目,一个是主文件,存放具体的任务处理函数,一个是这个主文件的头文件,另一个是操作系统接口文件,专门存放任务处理函数数组tasksArr[]的文件。无需改动Z—Stack核心代码,大大增加了项目的通用性和易移植性。我们把Coordinator、Router和End Device这三种设备一起添加到项目中,在“project==>edit configurations”中,分别建立“Coordinator”“Router”及“EndDevice”三种设备的项目设置。无线传感器网络代码包括协调器代码、路由器代码、传感器节点代码。这些代码都在同一个工程文件中,通过条件编译的方式将代码分成不同的功能。
4.1 协调器节点设计
在一个Zigbee无线网络中,协调器作为网络的中心节点最先启动。复位上电以后,首先进行系统初始化。完成之后,就会扫描DEFAULT_ CHANLIST指定的信道,最后选择一个合适的信道建立网络,等待有子节点加入时,就会发出入网响应。子节点加入网络成功后,协调器接收到传来的数据包,解析出数据源的短地址、温度和湿度值并将其传送给PC显示出来。其流程图如图3所示。
4.2 子节点设计
路由器和终端设备启动后,将扫描DEFAULT_CHANLIST指定的频道。首先进行初始化,然后申请加入网络成功之后,通过JionAsRouter= TRUE?判断是否为路由器。如果是,则等待终端设备传来的温湿度数据,接收后再转发给协调器。如果是终端设备,传感器节点在不同工作模式下功耗大不一样,为了降低功耗,它平时应该处于休眠模式,被唤醒后才将数据发给父节点,发送完后再次进入休眠模式。通信协议应该简单有效,发送节点信息时使用短地址发送,使得节点的运算开销尽量小,这样可大大延长节点的寿命。子节点通信流程如图4所示。
传感器节点每隔一段时间采集一次温度、湿度值,然后把数据打包传输给父节点,如果传输成功,节点进入休眠状态;如果传输不成功,就再重新采集数据传输数据,直到成功为止。温湿度传感器烧写步骤:在项目的应用层(APP)中添加Humidity.c和Humidity.h文件,然后在操作系统接口文件OSAL_SampleApp.c中的任务数组tasksArr[]添加任务函数osalTaskAdd(Humidity_Init,Humidity_ProcessEvent,OSAL TASK_PRIORITY_LOW),最后运行程序没有错误后,把程序烧写到传感器节点即可。
4.3 低功耗设计
为了使节点有更长的生存时间,对传感器节点进行休眠设置。CC2430芯片采用0.18 μm CMOS工艺生产,工作时的电流损耗为27 mA;在接收和发射模式下,电流损耗分别低于27 mA和25 mA。CC2430的休眠模式和转换到主动模式时间超短,不会产生很大的时间延迟。Z—Stack提供了两种sleep模式,LITE和DEEP(PM2/PM3)。PM2模式比较省功耗而且可以被定时唤醒;PM3模式最省电但是只能被外部中断唤醒。系统在进入低功耗模式前,必须保证没有需要处理的消息或其他事件。当系统需要周期性地唤醒执行一些事件时使用PM2模式,如果当前没有任务那么将进入PM3模式。开启休眠模式如下:首先确认在配置文件f8wConflg.cfg中的DRFD_RCVC_ALWAYS_ON定义为FALSE;第二步,在IAR的Optio ns->C/C++Compiler->Defined symbols中添加编译选项POWER_SAVING;第三步,在Options->Linker->Linker command line里面把8w2430. xel改为f8w2430pm.xel;第四步,查看是否进去低功耗模式,在osal.c文件中osal_start_system()中以下部分加断点,看是否进入。
5 测试结果
采用一个协调器、一个路由器和3个温湿度传感器节点测试,各个节点与协调器相距大约50米。首先打开电源,待协调器建立网络之后,路由器和终端节点就开始申请加入网络。等待底板上的信号指示灯闪烁后,就表明有节点成功加入网络,终端节点开始周期性地采集周围环境的温度湿度值。采集一次数据后,指示灯熄灭,说明此时终端节点进入低功耗模式。协调器通过RS232与PC相连,通过串口调试助手显示数据,设置波特率为115200b/s,无校验位,8位数据位,1位停止位。某一时刻采集到各点的温度湿度值如图5所示(小端格式十六进制显示)。根据SHT10数据手册,实际温度=0.04x温度值-39.6,实际湿度=-4++0.648x湿度值-7.2x10-4×湿度值2,经计算实际温度约为27.5℃,实际湿度约为51.6%RH。
6 结束语
文中以CC2430为核心实现了温度湿度监测系统的设计,在传感器SHT10的配合下,完成了对环境温度湿度的无线监测。在硬件方面为模块化设计,具有扩展性,加上相应的传感器可以测其他因素如光照、气体浓度等,可以监测更多的环境因素;软件方面简化通信协议,并使终端休眠,降低了其功耗,延长了节点使用寿命。在使用过程中可以通过在Zigbee协调器及路由器上添加TI公司的2.4 GHZ射频前端CC2591来增加网络的覆盖范围,或者增加GPRS模块来进行更远程的无线监测。实用性高,可扩展性强,可广泛应用在仓储系统、中央空调系统、温室大棚、精密仪器的实验室和温度湿度条件要求严格的环境中,市场前景广阔。