温室环境监控系统整体结构框图如图1所示,网络中采用传感器测量节点和具有简单执行控制功能的控制节点构成无线传感器网络。测量节点用来测量空气温度、湿度、光照强度等重要环境数据,控制节点(能对调温、调湿等设备进行相关控制)用来接收计算机传来的远程控制信息,以便对温室环境参数进行适当调控。测量节点采集的数据沿着其他测量节点通过多跳的方式进行传输,在传输过程中监测数据可能被多个测量节点处理,信息经由多跳路由后到达汇聚节点,汇聚节点将接收到的数据直接上传到计算机,所有数据都由计算机进行复杂的数字信号处理,并通过数据库对传感器网络进行配置和管理,发布监测任务和收集监测数据等信息,最后这些数据还可以通过Internet与远程控制中心进行交互,从而实现温室环境的远程监控。
1 CC2431简介
CC2431是TI公司的产品,它是一个真正的基于无线传感器网络ZigBee/IEEE802.15.4解决方案的片上系统,其内部集成了CC2420射频收发器,工业标准增强型8051 MCU内核,128 KB可编程闪存,8 KB的RAM,精确的定位引擎等丰富的片内资源,支持硬件调试,支持基于IAR7.20以上C51开发环境下的在线调试,提供强大、灵活的开发工具。CC2431体积小、功耗低、集成度高,非常适合于无线传感器网络节点的设计。它可工作在4种工作模式下,且工作模式之间的转换时间较短,因而能够满足超低功耗系统设计的要求。
2 传感器网络节点的硬件
传感器网络节点由传感器测量节点、控制节点和汇聚节点组成。测量节点负责采集周围环境信息,采集的环境信息经多跳路由后到达汇聚节点,最终通过Internet到达控制中心。控制节点用来接收计算机传来的远程控制信息,对温室环境参数进行调控。
2.1 测量节点硬件
传感器测量节点由传感器模块、微处理器模块、无线通信模块和电源模块组成。其硬件结构框图如图2所示。
(1)传感器模块
由不同类型的传感芯片组成,具有对温度、湿度和光照强度的感知能力。其中温、湿度传感器采用I2C总线数字式温、湿度传感器SHTll,其体积小、能耗低、两线数字接口、温度量程为-40℃~85℃、相对湿度量程为0%~100%RH。光照强度传感器选用TSL2550D,其功耗可以满足无线传感器低功耗系统设计的要求,其总线也易于与CC2431接口。
(2)微处理器模块
采用集成在CC2431内部的8051 CPU。集成的CPU有4种不同的内存空间:代码区、数据区、扩展数据区和特殊功能寄存器区,不同的内存空间有利于代码和数据的分离,提高CPU对内存的访问速度。
(3)无线通信模块
①传感器网络节点在通信时消耗了大量的能量,选择一款低功耗的无线通信芯片将有效地降低通信模块的能量消耗。CC2431是一款符合ZigBee标准的低功耗通信芯片,具有快速唤醒和搜索外部设备功能,可以使节点更多地处于休眠状态而节约功耗,而且其信道频率和功耗等参数可以灵活设置。CC2431通信模块的天线考虑到无线传感器网络通信质量的要求,采用单极性天线,单极性天线在差分输出与天线之间要求使用“平衡-不平衡变压器”。
②无线传感器网络节点电源为电池供电系统,选用的电池为手机专用锂电池。为了使系统在电池供电时,工作时间持续长,在设计电源模块时要考虑到节点的节能问题。CC2431提供4种电源管理模式:PM0、PM1、PM2和PM3,合理地使用这4种模式可有效地降低节点的能耗。
③LED灯用于显示传感器节点的运行状态。
(4)电源模块
为其他模块提供能源。
2.2 控制节点
控制节点由驱动器模块、微处理器模块、无线通信模块和电源模块组成。驱动器模块能对调温、调湿等设备进行相关控制,其硬件结构框图如图3所示。
2.3 汇聚节点的硬件研究
汇聚节点由微处理器模块、无线通信模块、存储器模块、以太网接口模块、串行接口模块和电源模块组成,其硬件结构框图如图4所示。
(1)存储器模块由1片Atmel公司出品的AT45DB041组成,直接接入CC2431 SPI输入端。该芯片集成2 046页×264 B Flash存储单元,用于存储传感器重要历史数据。
(2)为提供以太网的接入通道,在该设计中,使用DM9161作为以太网的物理层接口。DM9161是一款低功耗、高性能的CMOS 芯片,支持10 MB/s和100 MB/s的以太网传输,它起编码、译码、输入和输出数据的作用,这样就可以将汇聚节点轻松连接到因特网以便于实现远程控制。
(3)串行接口模块由1片低功耗MAX3232和COM母口组成。CC2431串口端接入MAX3232进行电平转换,通过COM口与计算机进行通信。
(4)由于汇聚节点需要融合处理所有采集节点采集的数据,并且需要将数据经过较远的距离传输到计算机,因而能量消耗较大,因此其电源采用从市电转换后介入的方式供电。
(5)LED灯用于显示汇聚节点的运行状态。
3 TinyOS操作系统的移植
嵌入式操作系统能够简化嵌入式系统的开发,确保程序运行的稳定性和可靠性,便于程序的维护和更新,但是由于无线传感器网络节点是一个小型嵌入式系统,其硬件资源非常有限,需要高效利用其有限的内存、处理器和通信模块,并且最大限度地减少系统能耗,延长节点的使用寿命,因此传统的嵌入式操作系统不能满足其要求。基于此,本文移植了针对无线传感器网络特点而开发的操作系统TinyOS。
3.1 TinyOS简介
TinyOS是加州大学伯克利分校开发的一种典型的无线传感器网络操作系统,通过nesC语言可以开发基于TinyOS的应用程序。TinyOS设计的目标就是代码量小、耗能低、并发性高、鲁棒性好,可以适应不同的应用,采用轻量级线程技术,事件驱动模式,组件化编程等,从而使其成为面向无线传感器网络的操作系统。TinyOS提供了Main配件,以及针对某些硬件的感知组件、执行组件、通信组件和硬件抽象组件。在这些组件的基础上,用户可以定制开发应用组件,然后将所有组件连接起来,就构成了整个应用程序。
3.2 TinyOS的移植
TinyOS操作系统有很多版本,要移植的是TinyOS 2.0版本,采用的编译器是Keil。TinyOS 2.0必须在Linux平台下才能工作,而Keil则是一个Windows下的软件,因此,要安装一个在Windows平台上运行的模拟linux开发环境的软件——Cygwin。下面具体介绍移植步骤:
(1)安装SmartRF04 Flash Programmer、Keil、Java 1.5 JDK、Cygwin软件;
(2)下载TinyOS开发必备的编译工具的安装包;
(3)启动Cygwin,并在Cygwin下安装下载好的编译工具安装包;
(4)安装TinyOS 2.0。
将下载好的TinyOS 2.0的安装包解压缩,将解压好的tinyos-2.0-contrib文件夹拷贝到Cygwinopt目录下,此时已经搭建好了TinyOS的开发环境。所有的例子都在tinyos-2.0-contrib/diku/common/apps/下面。以BlinkNoTimerTask为例,在Cygwin下面输入:cd/diku/common/apps/BlinkNoTimerTask,然后回车输入:make cc2431em,如果顺利的话,TinyOS将被编译生成app.hex文件,只要把这个文件烧录进单片机就可以了。
(5)烧录
插好仿真器,打开SmartRF04 Flash Programmer软件,在System-on-Chip选项卡下选择app.hex文件,然后选择“Perform actions”就可以顺序烧写了,烧写成功后,TinyOS就成功移植到CC2431上了。
4 传感器网络节点的软件设计
传感器测量节点的主要功能就是接收PC机采集数据的指令、采集数据,然后将采集的数据通过无线信道发送出去。汇聚节点的功能就是创建无线网络,配置网络节点属性,接收传感器测量节点采集的数据,然后通过串口上传到计算机。传感器测量节点程序结构流程图如图5所示,汇聚节点程序结构流程图如图6所示。
在农业生产中,随着规模化经营的出现,可能会建有很多个温室,根据应用的设计,在每个温室中都建有一个无线传感器网络,由于温室中的环境都比较相似,因而,每个温室中的无线传感器网络的功能和技术也都是一样的。如果所有温室都通过控制中心的计算机来进行统一管理,可以大大提高了工作效率,使温室管理更加科学,控制更加简单,从而达到提高作物产量、改善品质、调节生长周期、提高经济效益的最终目的。而本文介绍的无线传感器网络节点具有功耗低、体积小、工作可靠、易于扩展等优点,基于该无线传感器网络的温室环境监控方案将会有很好的应用前景。