摘要:提出了一种根据ARM9的嵌入式Web长途实时温度监控体系的规划办法。在根据ARM9和Linux2.6内核的嵌入式体系渠道上操控温度传感器DS18B20收集数据,并装备完结了Boa服务器;运用CGI完结了客户端浏览器和嵌入式Web服务器之间的交互,并选用Ajax技能完结了温度收集数据在长途客户端的动态实时显现。
关键词:ARM9;嵌入式Web服务器;BOA;Ajax
在现有的各种监控体系中,一部分选用传统的51单片机或ARM7作为监控体系的微操控器,但这类芯片遭到主频等要素的限制,无法对杂乱体系进行操控。还有一部分体系收集数据的传输选用CAN,RS-485,RS-232等通讯办法,只能在本地显现和操控,客户无法在远端监控。跟着计算机技能、网络技能的开展,在对长途实时监控体系充沛研讨之后,结合当时最盛行的嵌入式技能,提出一种快捷、实在能完结长途实时的温度监控体系。选用根据ARM9和linux2.6的嵌入式渠道来收集数据,并经过建立Boa服务器,将数据经过Internet将数据发送给长途客户端,并选用Ajax技能完结客户端网页对服务器收集数据的部分动态实时更新,客户端也可经过页面按钮完结对前端收集体系操控。
1 体系组成
体系组成如图1所示,首要由前端温度收集服务器和客户端两部分构成,其间前端温度收集服务器以三星公司的S3C2410 ARM9处理器为中心,并由温度传感器、LCD显现、串口通讯和以太网通讯等部分构成;客户端由两部分组成,一种是前端温度收集服务器经过internet的办法向本地客户计算机发送收集到的数据,另一种是经过GSM模块无线发送收集数据到用户手机等移动设备上。
体系软件开发首要在前端温度收集服务器上移植操作体系Linux2.6,在此渠道下开发相应硬件开发驱动程序,并将读取到的温度传送给同享文件;在Linux2.6下装备Boa服务器;CGI程序首要完结长途客户端与服务器之间操控的数据交互,编写CGI程序分别从同享文件中读取实时更新的温度数据并发送给长途客户的WEB浏览器以及完结长途客户端对服务器收集的操控;经过Ajax技能对实时的温度数据进行实时的动态显现;编写程序完结GSM无线通讯功用。
2 体系硬件规划
2.1 测温显现部分规划
测温显现部分的硬件电路如图2所示。本体系的温度传感器选用DALLAS公司的DS18B20该传感器具有测温规模广(-55~125℃)、精度高(分辨率为0.062 5℃)的特色,并且运用简略,无需其他电路,可直接输出温度值。因为本体系内嵌Linux2.6内核,因而在运用硬件时有必要编写驱动程序,应注要遵从严厉的作业时序和通讯协议。测温时,首要对18B20进行初始化,然后调用驱动程序,再经过其内部的AD转换器将模拟量转换成16位的数字量,最终经过DO引脚将温度值送给2410的GPIO引脚。
显现部分选用移位寄存器74LS164和数码管组成。将传感器收集到的温度转换成十进制数输出,经过移位寄存器将温度值送给数码管显现。
2.2 以太网通讯规划
DM9000是一款高功用和低功耗的自适应10/100M bpsCMOS芯片,彻底兼容IEEE802.3u,支撑10/100 M bit/s单工和双工形式的以太网传输,支撑IEEE802.3x全双工流操控,具有载波多路拜访和碰撞检测(CSMA/CD)机制,具有4k双字SRAM的接纳缓冲区。支撑与处理器之间的8 bit,16 bit,32 bit接口办法。
S3C2410经过扩展一片DM9000来完结以太网通讯,其衔接电路如图3所示。将S3C2410的数据线DATA0-DATA15衔接DM9000的SD0-SD15,读写操控信号IOR和IOW对应衔接衔接S3C2410的nOE和nWE,CS片选信号由nGCS2给出。
3 体系软件规划
3.1 Boa服务器在Linux下的移植及装备
现在在Linux下的WEB服务器首要有boa和httpd等。httpd是一个简略的web Server,对认证以及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头文件中的#define SERVERROOT“/root”句子来指定。
3)装备boa.conf文件。
4)最终将boa.conf文件和mime.types文件仿制到web服务器的根目录
界说默认首页途径以及CGI程序库地点途径,即Directory Idexindex.html以及ScriptAlias/cgi-bin/root/www/cgi-bin/
装备完结后进行穿插编译,将编译后得到的可履行文件仿制进Linux服务器的文件体系中,最终运转Boa服务器./Boa。
3.2 CGI编程
CGI(Common Gateway Interfac)中文解释为通用网关接口,经过这种接口能够使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地址,MET HOD特点值用来指定恳求办法为GET或POST。
CGI程序能够用任何程序规划言语编写,并且C言语的渠道无关性很好,因而本体系挑挑选用C来编写CGI程序。别的,本体系将温度数据保存到文件wendu.txt中,CGI是经过读取文件来获取数据。
3.3 客户端AJAX控件开发
AJAXl~f即“Asynchronous Java Script and XML”(异步Java Script和XML),AJAX并非缩写词,而是由Jesse James Gaiiett发明的名词,是指一种创立交互式网页运用的网页开发技能AJAX的中心理念在于运用XMLHttpRequest目标发送异步恳求。
在传统的JavaScript编程中,假如要从服务器上的文件或数据库中得到任何的信息,或许向服务器发送信息的话,就有必要运用一个HTML表单向服务器GET或POST数据,一起用户还需求单击“提交”按钮来发送/获取信息,等候服务器的呼应,然后一张新的页面会加载成果,这样就使得传统的web运用程序变得运转缓慢,且越来越不友好。而经过AJAX,能够用XMLHttpRequest目标来直接与服务器进行通讯,即能够在不重载页面的状况与Web服务器交流数据。客户端能够停留在同一个页面,用户不会注意到脚本在后台恳求过页面,或向服务器发送过数据。本体系需求用户在客户端看到收集温度的实时动态改变折线图,因而挑选AJAX技能开发空间。
首要翻开衔接,读取wendu.txt中的字符串,用split函数截取温度数据存入字符数组中。
其代码如下:
然后编写制作温度时刻折线图函数,将保存温度的字符数组作为参数传入函数中来制作图画。页面每秒改写一次,即可完结实时制作图画。运转成果如图4所示。
1)在页面引进画图需求的Javascript文件。
2)在HTML页面onload办法中调用function(x,y),x是时刻数组,y是温度数组。
4 定论
经测验,本地客户可经过一台上网的计算机,即能够灵敏便利完结对长途温湿度的收集与监控,还能够装备GSM模块完结无线监控。此体系作业安稳,扩展性强,装备灵敏,功用丰厚,具有杰出的移植性、通用性并在丈量与操控范畴有宽广的运用远景。