基于ARM9的嵌入式Web服务器数据动态显示的实现
2014-04-04陈侃松刘洪波熊攀
陈侃松+刘洪波+熊攀
摘 要:随着无线传感网络的迅猛发展,将嵌入式系统接入互联网已成为无线传感网络研究中的热点,其中通过访问嵌入式服务器网页实现采集数据的动态显示是一个技术难点。文中采用DS18B20温度传感器采集温度,在嵌入式网关搭建ARM-Linux开发平台;然后移植BOA服务器;同时利用CGI程序、Ajax技术及HTML语言,在上位机通过访问嵌入式网关,从而实现了对传感器节点采集的温度数据在网页中的动态显示。实际应用表明,该系统消耗CPU资源少,可减轻服务器负担,而且无需刷新页面更新数据,因而可减少用户实际等待的时间。
关键词:嵌入式服务器;ARM-Linux;CGI;Ajax;动态显示
中图分类号:TP311 文献标识码:A 文章编号:2095-1302(2014)03-0018-02
0 引 言
当今,以互联网为标志的嵌入式系统正处于一个飞速发展的阶段。嵌入式系统接入Internet后,相当于一个功能齐全的小型Web服务器,用户在上位机打开浏览器,通过Internet即可获取该Web服务器上的数据信息,从而实现了对现场信息的远程监控,而且这种基于HTML语言标准化的Web用户界面降低了系统开发、维护以及人员培训的费用[1]。
对于无线传感网络来说,可将嵌入式网关作为Web服务器,用户在上位机通过Internet访问网页的方式获取下位机传感器节点采集的数据。基于此,本系统采用DS18B20温度传感器和ZigBee[2]无线通信模块构成无线传感网络,以ARM9作为核心处理器搭建嵌入式Web服务器Boa和嵌入式数据库SQLite,采用C语言、HTML语言、JavaScript程序、CGI程序、Ajax技术,实现了对远端传感器节点采集信息的处理、存储及在网页上的动态显示。
1 系统硬件整体设计
本系统的硬件主要由3部分组成:上位机PC端、嵌入式网关(ARM9)和ZigBee无线网络,系统的整体设计框图如图1所示。
ZigBee无线网络由传感器节点和协调器构成,传感器节点将采集的信息经协调器发送至网关,同时协调器也可接收网关发送的指令进而控制节点的打开与关闭。嵌入式网关介于上位机和传感器节点之间,它既要支持TCP/IP协议,允许用户通过Internet访问,又要实现无线网络和Internet之间的地址映射、协议转换和路由功能,类似于Internet网关[3]。由于嵌入式网关CPU串口引脚不是标准RS232电平,在ZigBee与网关之间需加入电平转换电路[4]。PC端即上位机客户端,用户在上位机通过浏览器输入嵌入式网关的IP地址可进入系统登录界面,登录后用户经管理系统获取传感器节点采集的数据,以访问网页的方式实时显示数据信息,并可输入指令实现对下位机传感器节点的控制。本文重点介绍嵌入式网关Web服务器的设计,实现温度数据在上位机的动态显示。
图1 系统整体框图
2 嵌入式Web服务器的搭建
硬件电路采用ARM9微处理器及外围电路,开发环境:MINI2440,Linux_2.6.32.2内核,虚拟机Redhat5,交叉编译版本ARM-Linux-gcc-4.3.2。主要工作包括Linux内核移植、根文件系统制作、交叉编译工具安装、Web服务器源码分析等。
2.1 交叉编译工具安装
交叉编译即在一个平台上编译生成可在另一平台运行的代码[5]。本设计包括安装Linux系统的宿主机和基于ARM MINI2440的目标板,由于二者处理器体系结构不同,因此需借助交叉编译工具在宿主机编译生成目标板上可运行的机器代码。本系统使用交叉编译工具版本为ARM-Linux-gcc-4.3.2,将其拷贝到宿主机系统,把编译器路径加入环境变量保存,重启系统后在终端输入arm-linux-gcc –v出现交叉编译工具版本信息,表示交叉编译器安装成功。
2.2 BOA源码分析及安装
Web服务器采用BOA文件生成,它能按照顺序完成用户请求,支持认证、CGI程序,其可执行代码约60 KB。BOA服务器的编译与移植如下[7]:进入boa-0.94-13文件夹的src目录,运行configure配置安装文件,根据Makefile.in 生成Makefile文件进行修改,再执行make,生成可执行程序boa后修改/etc/boa.conf,对boa进行配置编译,与虚拟机etc目录下mine.types一起拷贝到目标板var目录,执行./boa,Web服务器在目标板上即可运行。
3 数据动态显示的实现
通过上位机实时显示传感器节点发送给网关的数据是一个难点,一般采用手动或自动刷新来实现数据更新,但都无法实现数据的实时动态显示。本设计以采集温度数据为例,在网页中嵌入JavaScript,采用Ajax技术实现温度信息的动态实时显示,节约了CPU资源。
3.1 软件流程
在嵌入式网关中,通过串口采集温度信号,每个温度数据前面带有设备号字符,将不同传感器节点采集的温度信息分别存储在txt文档中,上位机通过Internet访问嵌入式网关读取txt文档信息,并在网页上动态显示。采用txt文档存储数据,一方面有利于在现场直接从网关SD卡中读取信息;另一方面有利于上位机编程读取数据。其温度动态显示软件流程图如图2所示。
图2 温度动态显示流程图
3.2 温度信息处理
协调器将传感器节点采集的温度值通过串口传送到嵌入式网关,需定义传感器节点的设备号,以实现不同节点采集的温度值在txt文档中存储,数据格式如表1所列。
把编写好的串口C程序在宿主机编译后生成的temper文件,并将temper、CGI程序和js程序拷贝到ARM板服务器WWW目录下,执行temper,在服务器WWW目录下生成3个txt文档,实现了温度数据的存储。
表1 数据传送格设备号 温度值(℃) 电压值(V)
设备1 温度值1 电压值1
设备2 温度值2 电压值2
设备3 温度值3 电压值3
3.3 数据的读取及显示
为了实现温度的动态显示,在温度显示网页(temper.html)中采用javaScript(js)程序[8],通过加入定时器每隔一段时间调用CGI程序以获取txt文档的温度值。由于采样数据不断存储到txt文档,CGI程序采用倒序方法首先读取txt文档最后一行获取最新数据,从而在网页上动态显示温度。
4 结果分析
在IE浏览器中输入目标机的IP地址,登录系统进入到温度显示页面(temper.html),如图3所示,点击获取按钮,温度值将显示在页面上,设置温度数据5秒更新一次,当改变温度传感器采集的温度时,网页显示数据也同时更新,温度显示页面如图3所示,从图3可以看出,当采集温度数据发生变化时,页面显示温度值也随之改变,实现了传感器节点采样数据的动态显示。
图3 温度数据显示页面
5 结 语
本文通过构建ARM-Linux嵌入式网关,利用BOA服务器、运用JavaScript、CGI、Ajax技术及HTML语言实现了传感器节点采集的温度在上位机网页的动态显示,与传统的手动或自动刷新网页相比,该系统占用服务器CPU资源少,缩短了用户等待时间,实现了下位机采集的现场数据在上位机实时动态显示。
参 考 文 献
[1]张喜民,张建国,周利华.微嵌入式系统Web服务器技术[J].西安电子科技大学学报:自然科学版,2005,32 (2):116-121.
[2]高守玮,吴灿阳.ZigBee技术实践教程[M].北京:北京航空航天大学出版社,2009.
[3]冯承金.基于ZigBee和ARM9的智能家居系统的研究与设计[D].武汉:武汉理工大学,2010.
[4]毛汉华,孙先松.基于ARM+ZigBee的通用网络测控系统硬件设计[J].现代电子技术,2010,33(23):136-137.
[5]李善平, 刘文峰.Linux与嵌入式系统[M].北京:清华大学出版社,2006.
[6]张军.基于ARM的嵌入式手姿态跟踪设备控制系统研究[D].青岛:青岛科技大学,2009.
[7]梁华军.基于ARM9与ZigBee无线监测系统的开发研究[D].广州:华南理工大学,2012.
[8] Hbhuangang. 嵌入式Linux之我行——C+CGI+Ajax在S3C2440中的应用[EB/OL].[2012-5-18].http://blog.chinaunix.net/uid-20620288-id-3204338.html.
Implementation of dynamic displaying data of embedded Web server based on ARM9
CHEN Kan-song1, LIU Hong-bo2, XIONG Pan1
(1. School of Computer and Information Engineering, Hubei University, Wuhan 430062, China;
2. Department of Physics and Electronic Information Science, Hengyang Normal University, Hengyang 421002, China)
Abstract: With the rapidly development of wireless sensor network, it has become a hot spot in the research of wireless sensor network to access embedded system into internet, and one of the technical difficulties is to realize the dynamic display of the collected data through accessing the Web in the embedded operating system. Using temperature sensor DS18B20 to collect the temperature data, and then ARM-Linux is constructed in the embedded gateway. BOA server is migrated while the CGI program, Ajax technique and Html language are used to realize real-time displaying the data in the Web page. The actual application shows that the system consumes less CPU resources, which can reduce the burden of the server, and need not to update the data, thus the waiting time for users in practical application is reduced.
Keywords: embedded Web server; ARM-Linux; CGI; Ajax; dynamic display