引言
温室监控系统用于实时监测室内温度、湿度、CO2浓度等环境参数,以便做出相应调整,使作物处于最佳环境中生长。现有的无线温室监控系统大多在无线局域网络覆盖范围内进行环境信息监测,传输范围有限,且功耗和成本较高。 ZigBee是一种新兴的近距离、低复杂度、低功耗、低成本的无线网络技术。2节5号电池即可使ZigBee射频芯片工作6~24个月。 本设计采用ZigBee技术组建无线局域网,并通过网关接人到以太网。不但很好地解决了功耗和成本问题,而且也有效扩展了数据的传输范围。
1 系统设计
温室监控系统的结构示意图如图1所示。系统由无线传感节点、嵌入式网关、人机交互界面3个部分组成。无线传感节点通过连接传感器来获得相应的环境参数,并将数据发送至网关节点。嵌入式网关承担网络管理的功能,主要负责组建ZigBee无线网络并将传感节点传回的数据上传至以太网中。人机交互界面的作用是将这些数据实时地显示在网页上,也可以通过网页进行远程控制。 图1 温室监控系统的结构示意图 无线局域网中的各传感器节点采集温度、湿度、C02浓度等环境信息,经网关处理后,监控终端计算机通过IE浏览器即可访问这些数据,从而实现远程监控环境信息。
2 硬件设计
整个系统涉及ZigBee网络和以太网,为了使2个网络能相互通信,需要建立网关。本文用嵌入式BOA服务器作为2个网络的信息中转站,以实现网关的功能。BOA服务器是一个小巧高效的Web服务器,运行于Unix或Linux系统下,支持CGI的、适合用于嵌入式系统的单任务的HTTP服务器。
2.1 网关硬件设计 嵌入式BOA服务器可以在嵌入式Linux操作系统的支持下进行设计。网关硬件结构如图2所示。 图2 网关硬件结构 网关硬件包括如下部分: ①S3C2440A,Samsung公司的一款基于ARM920T内核的32位RISC嵌入式微处理器,运行频率可达400 MHz。 ②256MB Flash,存储Bootloader和Linux操作系统以及文件系统。 ③64MB SDRAM,作为系统运行时的程序和数据存储器。 ④DM9000A网络控制器,提供以太网连接功能,以满足用户通过TCP/IP以太网进行实时的数据交互。 ⑤JTAG仿真调试接口,支持ADS等集成开发环境利用JTAG调试接口对整个硬件电路进行软件开发和调试。 ⑥UART接口,连接CC2430射频芯片以实现ZigBee无线局域网络与以太网的互联。
2.2 ZigBee节点硬件设计 ZigBee节点硬件结构如图3所示,主要由CC2430射频芯片和传感器构成。 图3 ZigBee节点硬件结构 CC2430芯片整合了高性能2.4 GHz DSSS(直接序列扩频)射频收发器内核和工业标准的增强型8051 MCU,还包括了8 KB的SDRAM、128 KB的Flash,是一种片上系统(SoC)解决方案。 将相应的传感器与CC2430的I/O引脚连接,可测得所需的温室环境参数,并通过ZjgBee无线网络进行传输。本系统在每个ZigBee节点上分别连接温度传感器、湿度传感器和CO2传感器来监测不同节点处相应的环境信息。 3 软件设计 本设计基于嵌入式Linux操作系统,通过编写DM9000A网卡驱动和UART异步串口驱动实现以太网与ZigBee网络的互联。 网关的分层结构如图4所示。在TCP/IP协议和ZigBee协议上分别开发Web、CGI程序以及无线收发程序。Web、CGI程序用于人机交互界面,无线收发程序用来实现ZigBee网络的通信。 图4 网关的分层结构图 CGI(Common Gateway Interface)规定Web服务器调用其他程序的接口协议标准,提供给Web服务器一个执行外部程序的通道。这种服务端技术使得浏览器和服务器之间具有交互性。CGI程序属于一个外部程序,编译成可执行文件后,可以在服务端运行。通过调用CGI程序可实现Web服务器与Web浏览器的交互,CGI程序接收Web浏览器发送给Web服务器的控制命令,并进行处理,再将响应结果回送给Web服务器及Web浏览器。 由于BOA服务器搭建在Linux系统之上,因此需要将嵌入式Linux系统移植到S3C2440芯片上。
3.1 移植Bootloader
Bootloader是在操作系统内核运行之前执行的一小段程序,通过这段程序初始化硬件设备。Bootloader可移植性强,只要根据硬件资源修改少量代码即可直接使用。
3.2 移植Linux内核
Linux内核是嵌入式操作系统的核心,内核移植包括内核配置、内核编译、内核下载3个部分。嵌入式设备主要用NAND Flash作为存储器,NAND Flash容量有限,因此在配置内核时需要裁减一些不需要的功能以减小内核的体积。由于要将编译好的Linux内核映像和文件系统映像烧写到NAND Flash中,因此设置NAND Flash分区。本项目采用256 MB的NAND Flash,将其分为3个区:0区为Bootloader分区,1区为内核分区,2区为根文件系统分区。内核配置完成后执行make zImage命令生成Linux内核映像文件,然后将内核映像文件下载至NAND Flash的内核分区上。
3.3 移植根文件系统和BOA服务器
根文件系统是嵌入式Linux系统启动的重要组成部分,也是用户应用程序的载体。本方案采用busybox制作yaffs2文件系统,并在文件系统中加入BOA服务器。BOA是一款单任务的HTTP服务器,当有连接请求到来时,通过建立HTTP请求列表来处理多路HTTP连接请求,同时它为CGI程序创建新的进程。 移植好BOA服务器后,在文件系统中建立/var/www/cgi-bin文件夹,此文件夹用于存放静态网页和CGI程序。
3.4 网关软件设计
网关软件程序流程如图5所示。S3C2440通过I/O端口触发CC2430,使其无线发送相应的指令,远程控制传感器节点进行数据采集。采集到的数据通过UART串口传回S3C2440并上传至嵌入式BOA服务器。用户通过IE浏览器就可以实时采集到相应的环境信息。 图5 网关软件程序流程图 传感节点采集到的数据最终将上传至嵌入式BOA服务器上,用户可通过IE浏览器访问服务器IP地址来监测温室的环境信息,监测网页如图6所示。 图6 监测网页
结语
本文基于S3C2440平台和Linux操作系统提出了一种ZigBee网关的设计方法,并给出了硬件和软件的实现方法,实现了ZigBee无线局域网络与以太网的数据互通。该网关成功地用于温室监控系统中,具有稳定性好、实时性强、可远距离监控等特点。