引言
探讨了基于Linux的嵌入式Web Server系统在温室设备监控系统中的应用。提出一种基于嵌入式和Web技术的温室设备监控系统方案,使管理者可以通过Intemet利用Web浏览器完成对远程设备的访问、监控和维护等操作,无需安装特定软件,具有跨平台性,有效解决利用有限资源实现设备的网络接入问题。
1 系统总体设计
本设计基于arm9开发平台,构建嵌入式开发环境,裁剪移植Linux操作系统。系统采用嵌入式Web服务器对设备进行功能配置,利用温度、湿度、光照强度传感器采集数据,采用嵌入式数据库对监测数据进行分析和存储。系统通过控制程序协调温室参数,并对控制参数进行监测,从而为温室中的作物提供最佳的生长环境。
嵌入式网络监控系统分客户端主机和现场嵌入Web服务器智能监控设备两部分,监控系统的结构如图1所示。
客户端主机通过浏览器与Web服务器交互式处理数据,从而实现对网络智能设备的远程监控。其中嵌入式Web服务器和监控端位于温室现场,监控端完成对温室环境参数(温度、湿度、等数据)的采集,并将采集结果存入数据库,通过CGI技术,管理人员通过网络便可了解温室内环境情况。系统采用Boa作为嵌入式Web服务器,负责监控、接收和分析用户请求,传送静态页面和调用后台CGI(Common Gate Interface)程序。
2 系统硬件设计
为了保证系统的实用性和可扩展性,系统选用Samsung公司的S3C2440A作为CPU处理器,S3C2440A带有丰富的外围接口,是一款高性价比的arm核SoC芯片,工作频率最高可达400 MHz。系统硬件结构如图2所示。
系统配置有内存大小为64 M的SDRAM和128 M的Nand Flash。外接320x240的LCD触摸屏,实现本地用户人机接口,进行设备管理,通过USB接口连接摄像头,完成温室环境的图像采集;通过DM9000外扩以太网接口实现与无线局域网设备的连接和Interact的连接。另外,系统还扩展有RS485接口,可用于系统的扩展,通过布线连接相应的设备。
3 系统软件设计
整个系统软件结构如图3所示,数据采集程序通过数据采集设备(传感器、摄像头等)按照用户预先设定的参数周期性的下发查询命令,将采集到的结果写入SQLite数据库,监控人员使用浏览器通过Web服务器(Boa)管理和维护系统。
网络服务程序由嵌入式Web服务器和CGI脚本程序两部分组成:服务器通过监听80端口,监听来自网络的用户请求,如有用户请求,则启动相应的CGI脚本程序,将请求信息转化为服务器可以识别的数据格式,从SQLite数据库中读出所需的信息,再由CGI程序将信息转化为Web浏览器能够识别的格式,作为HTTP应答消息回送客户端显示。CGI脚本程序完成的功能主要包括:配置、查询设备相关信息及查询设备告警信息等。
3.1 嵌入式Linux操作系统
用于嵌入式系统中的操作系统很多,如Linux,Vxworks,Windows CE等。相比而言,Linux兼容POSIX1003.1标准,支持多线程、多任务系统且具有源码公开、完全免费和广泛的移植性等特点,使用更加灵活。同时具有强大而稳定的网络功能和完善的开发工具,支持TCP/IP协议栈,可提供FTP、TELNET等服务,同时还可以通过应用程序向其他系统提供服务。因此,选择Linux 2.6.32作为嵌入式操作系统。
3.2 交叉编译Boa
本系统采用尽可能简单的嵌入式Web服务器,即Boa,能够实现HTTP1.1协议的基本内容,支持CGI,支持认证,是一个单任务的HTTP服务器,Boa体积小,只有几十kB。交叉编译工具使用的是arm-linux-gcc4.3.2。
1)下载Boa源码包boa-0.94.13targz,解压后,在boa-0.94.13\src目录下运行#/configure命令生成Makefile文件。
2)修改Makefile文件,其中:CROSS_COMPILE=/usr/local/arm/4.3.2/bin/arm-linux-。
3)运行#make命令,生成可执行程序boa,运行#/usr/loeal/arm/4.3. 2/bin/arm-linux-strip boa命令删除调试信息。
3.3 嵌入式数据库的移植
Sqlite数据库对嵌入式来说是一个很好的数据库引擎,可有力地减小应用程序管理数据的开销。具体的移植过程:
1)在Sqlite的官网下载linux版本的Sqlite3.6.23,解压sqiite-amalgamation-3.6.23.tar.gz并进入sqlite-3.6.23目录。
2)mkdir build在sqlite3.6.23目录内建立编译文件夹并进入,Sqlite的编译就在这个文件夹内进行。
3)../configure--host=srm-linux--prefix=/usr/local/sqlite3选定编译器为arm-linux-gcc,并指定安装目录为/usr/local/sqlite3,这个路径是可以根据自己的需要进行修改。
4)make &&make install安装成后在sqfie3目录下生成bin、include、lib三个文件夹,分别为可执行文件,头文件与库文件,由于采用动态编译,所以生成的库是动态库,将它们复制到系统的相应文件夹下。此时,就可以在目标板上运行sqlite3
3.4 CGI程序的设计
CGI定义Web服务器与用户之间访问与执行程序的标准接口,它使浏览器和Web服务器之间具有交互性。图4表明了本系统中浏览器、Web服务器和CGI程序之间的关系。
当客户通过浏览器访问Web服务器时,浏览器与Web服务器建立TCP连接并发送HTTP请求,Web服务器收到HTTP请求后,分析请求内容,如果为静态文档请求,则直接返回该请求的结果,如果是CGI请求,则Web服务器把该请求通过环境变量、命令行参数或标准输入的方式传给指定的CGI程序,同时接管这个CGI程序的标准输出,CGI程序进行相应的信息处理后,将处理结果以HTML形式的文件送到标准输出,Web服务器在CGI程序输出的内容上附加一些头标信息和状态行,然后把结果送回浏览器。
3.5 系统软件流程图
用户通过HTML页面监控远程设备包含2个流程:1)客户端到服务器的数据通信。客户端将用户的操作传送给WEB服务器,服务器再调用相应的CGI应用程序控制底层设备,实现设备监控;2)服务器到客户端的数据通信。即服务器把CGI程序对底层设备监控的结果反馈给客户端,供用户浏览。
一个CGI应用程序首先通过环境变量REQUEST-METHOD判断客户端发送的是哪一种数据请求。若是GET请求,则通过环境变量QUERY-STRING获取数据。若是POST请求,则通过标准输入(stdin)获取客户端传送的数据。使用CET方法发送HTML表单数据时,表单数据将作为查询字符串传送给CGI应用程序,而用POST方法发送表单数据时,表单数据通过C语言标准输入(stdin)直接传给CGI应用程序。CGI应用程序完成了相关的运算和对底层设备的操作之后,还应该将相应的执行结果反馈给用户。
CGI应用程序通过WEB服务器将结果传送给客户端浏览器,使用户直观的看到操作的执行结果。使用标准输出(Printf)就可以实现数据发送,WEB服务器得到这些输出信息,以HTML网页的形式反馈给客户端浏览器。具体的操作流程如图5所示。
4 案例实现
目前Web技术中生成动态页面的方法有CGI、PHP和服务器脚本(如JSP和ASP等),但后两者需要Web服务器具有这些脚本的运行支持模块。在嵌入式Web服务器中,考虑到资源限制问题,一般都只提供CGl支持,因此在嵌入式设备中Web应用开发实际上就是基于CGI的程序开发。使用C语言编写CGI程序,内嵌Html脚本,这样当执行CGI程序时,即可完成对硬件的操作,又可将操作结果显示在网页。CGI程序用getchar()等函数获得用户提交的数据。用pantf()函数负责输出。执行结果要以完整的Html文件格式输出,比如一个CGI文件中的输出语句如下:
打开Web浏览器,在地址栏输入Web服务器IP地址,先是身份验证网页,验证后,显示的监控信息网页如图6所示。
5 小结
智能温室监控系统是近年来发展起来的节约型设施农业技术,通过计算机综合控制,在充分利用自然资源的基础上,调节温度、湿度、光照强度等环境因素来获得作物生长的最佳条件,从而达到提高作物产量、改善品质、增加经济效益的目的。嵌入式系统与Intemet技术的结合是当今发展的趋势,如何将嵌入式产品与Internet连接起来实现室内设备的统一监控与管理,通过Internet实现对设备行为的访问与交互是目前研究的热点。本文提出一种基于嵌入式Web技术的智能温室监控系统设计方案,系统以嵌入式处理器作为上位机,通过构建嵌入式Web服务器,借助CGI(Common Gateway Interface)技术控制中心与嵌入式Web服务器端之间的动态数据交互,来满足嵌入式设备直接与Internet联网的要求,使管理者可以不受空间限制,通过Internet利用Web浏览器完成对设备的远程访问、监控和维护等操作。