摘要:提出了一种基于ARM9的嵌入式Web远程实时温度监控系统的设计方法。在基于ARM9和Linux2.6内核的嵌入式系统平台上控制温度传感器DS18B20采集数据,并配置实现了Boa服务器;利用CGI实现了客户端浏览器和之间的交互,并采用Ajax技术实现了温度采集数据在远程客户端的动态实时显示。
关键词:ARM9;嵌入式Web服务器;BOA;Ajax
在现有的各种监控系统中,一部分采用传统的51单片机或ARM7作为监控系统的微控制器,但这类芯片受到主频等因素的制约,无法对复杂系统进行控制。还有一部分系统采集数据的传输采用CAN,RS-485,RS-232等通信方式,只能在本地显示和控制,客户无法在远端监控。随着计算机技术、网络技术的发展,在对远程实时监控系统充分研究之后,结合当前最流行的嵌入式技术,提出一种便捷、真正能实现远程实时的温度监控系统。采用基于ARM9和linux2.6的嵌入式平台来采集数据,并通过搭建Boa服务器,将数据通过Internet将数据发送给远程客户端,并采用Ajax技术实现客户端网页对服务器采集数据的局部动态实时更新,客户端也可通过页面按钮实现对前端采集系统控制。
1系统组成
系统组成如图1所示,主要由前端温度采集服务器和客户端两部分构成,其中前端温度采集服务器以三星公司的S3C2410ARM9处理器为核心,并由温度传感器、LCD显示、串口通信和以太网通信等部分构成;客户端由两部分组成,一种是前端温度采集服务器通过internet的方式向本地客户计算机发送采集到的数据,另一种是通过GSM模块无线发送采集数据到用户手机等移动设备上。
本文引用地址:
系统软件开发首先在前端温度采集服务器上移植操作系统Linux2.6,在此平台下开发相应硬件开发驱动程序,并将读取到的温度传送给共享文件;在Linux2.6下配置Boa服务器;CGI程序主要实现远程客户端与服务器之间控制的数据交互,编写CGI程序分别从共享文件中读取实时更新的温度数据并发送给远程客户的WEB浏览器以及实现远程客户端对服务器采集的控制;通过Ajax技术对实时的温度数据进行实时的动态显示;编写程序实现GSM无线通信功能。
2系统硬件设计
2.1测温显示部分设计
测温显示部分的硬件电路如图2所示。本系统的温度传感器采用DALLAS公司的DS18B20该传感器具有测温范围广(-55~125℃)、精度高(分辨率为0.0625℃)的特点,而且使用简单,无需其他电路,可直接输出温度值。由于本系统内嵌Linux2.6内核,因此在使用硬件时必须编写驱动程序,应注要遵循严格的工作时序和通信协议。测温时,首先对18B20进行初始化,然后调用驱动程序,再通过其内部的AD转换器将模拟量转换成16位的数字量,最后通过DO引脚将温度值送给2410的GPIO引脚。
显示部分采用移位寄存器74LS164和数码管组成。将传感器采集到的温度转换成十进制数输出,通过移位寄存器将温度值送给数码管显示。
DM9000是一款高性能和低功耗的自适应10/100MbpsCMOS芯片,完全兼容IEEE802.3u,支持10/100Mbit/s单工和双工模式的以太网传输,支持IEEE802.3x全双工流控制,具备载波多路访问和碰撞检测(CSMA/CD)机制,具备4k双字SRAM的接收缓冲区。支持与处理器之间的8bit,16bit,32bit接口方式。
S3C2410通过扩展一片DM9000来实现以太网通信,其连接电路如图3所示。将S3C2410的数据线DATA0-DATA15连接DM9000的SD0-SD15,读写控制信号IOR和IOW对应连接连接S3C2410的nOE和nWE,CS片选信号由nGCS2给出。
3系统软件设计
3.1Boa服务器在Linux下的移植及配置
目前在Linux下的WEB服务器主要有boa和httpd等。httpd是一个简单的webServer,对认证以及CGI都不支持;而boa较httpd更为完善,尤其Boa源码开放且性能较高。本系统选择Boa作为Web服务器,但是Linux内核中不包含Boa的源代码,因此要想存本系统中实现Boa服务器,需要完成Boa源代码的下载、修改和交叉编译。之后再对boa.conf和mime.tyPes这两个文件进行配置才能实现,其修改和配置过程如下:
1)创建目录
即在root目录下通过mkdir创建服务器目录。
2)配置Web服务器的根目录路径(SERVER_ROOT)
可通过使用命令行boa-c/root/,的方式来指定服务器根目录。或者还可以在boa/src/目录下,修改define.h头文件中的#defineSERVERROOT“/root”语句来指定。
3)配置boa.conf文件。
4)最后将boa.conf文件和mime.types文件复制到web服务器的根目录
定义默认首页路径以及CGI程序库所在路径,即DirectoryIdexindex.html以及ScriptAlias/cgi-bin/root//cgi-bin/
配置完成后进行交叉编译,将编译后得到的可执行文件复制进Linux服务器的文件系统中,最后运行Boa服务器./Boa。
3.2CGI编程
CGI(CommonGatewayInterfac)中文解释为通用网关接口,通过这种接口可以使Web服务器执行外部请求再将结果转回给应用程序,这种从用户处接受和返回的方法实现了客户端和Web服务器之间交互。CGI程序的语法格式要求很严格,原因是CGI主要通过HTTP协议实现的客户端与服务端之间的通信,每次当用户从客户端向服务端发送请求消息时,该消息会处理用输入的CGI扩展程序的URL地址的真实值,当CGI扩展程序在处理结束之后才将HTTP响应消息返回给客户端。因此,CGI程序的输出数据得语法格式必须和相应消息的语法格式一致,才能保证正确处理。
CGI程序的调用方法有2种:1)直接输入地址方式。用户在浏览器地址中直接输入正确的URL地址,经Web服务器解析完URL后调用正确的CGI程序。2)在CGI程序中使用FROM表单样式实现调用。CGI程序使用HTTP协议完成的,在HTTP表单元素中ACTION属性值用来指定URL地址,METHOD属性值用来指定请求方式为GET或POST。
CGI程序可以用任何程序设计语言编写,而且C语言的平台无关性很好,因此本系统选择择用C来编写CGI程序。另外,本系统将温度数据保存到文件wendu.txt中,CGI是通过读取文件来获取数据。
3.3客户端AJAX控件开发
AJAXl~f即“AsynchronousJavaScriptandXML”(异步JavaScript和XML),AJAX并非缩写词,而是由JesseJamesGaiiett创造的名词,是指一种创建交互式网页应用的网页开发技术AJAX的核心理念在于使用XMLHttpRequest对象发送异步请求。
在传统的JavaScript编程中,如果要从服务器上的文件或数据库中得到任何的信息,或者向服务器发送信息的话,就必须利用一个HTML表单向服务器GET或POST数据,同时用户还需要单击“提交”按钮来发送/获取信息,等待服务器的响应,然后一张新的页面会加载结果,这样就使得传统的web应用程序变得运行缓慢,且越来越不友好。而通过AJAX,可以用XMLHttpRequest对象来直接与服务器进行通信,即可以在不重载页面的情况与Web服务器交换数据。客户端可以停留在同一个页面,用户不会注意到脚本在后台请求过页面,或向服务器发送过数据。本系统需要用户在客户端看到采集温度的实时动态变化折线图,因此选择AJAX技术开发空间。
首先打开连接,读取wendu.txt中的字符串,用split函数截取温度数据存入字符数组中。
其代码如下:
4结论
经测试,本地客户可通过一台上网的计算机,即可以灵活方便实现对远程温湿度的采集与监控,还可以配置GSM模块实现无线监控。此系统工作稳定,扩展性强,配置灵活,功能丰富,具有良好的移植性、通用性并在测量与控制领域有广阔的应用前景。
推荐: