当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]嵌入式Web技术在智能温室监控系统中的应用

摘要:探讨了基于Linux的嵌入式Web Server系统在温室设备监控系统中的应用。提出一种基于嵌入式和Web技术的温室设备监控系统方案,使管理者可以通过Intemet利用Web浏览器完成对远程设备的访问、监控和维护等操作,无需安装特定软件,具有跨平台性,有效解决利用有限资源实现设备的网络接入问题。实际运行效果表明该系统具有良好的稳定性与实时性,具有实际应用和推广价值。
关键词:嵌入式Web;智能温室;监控系统;CGI

    智能温室监控系统是近年来发展起来的节约型设施农业技术,通过计算机综合控制,在充分利用自然资源的基础上,调节温度、湿度、光照强度等环境因素来获得作物生长的最佳条件,从而达到提高作物产量、改善品质、增加经济效益的目的。嵌入式系统与Intemet技术的结合是当今发展的趋势,如何将嵌入式产品与Internet连接起来实现室内设备的统一监控与管理,通过Internet实现对设备行为的访问与交互是目前研究的热点。本文提出一种基于嵌入式Web技术的智能温室监控系统设计方案,系统以嵌入式处理器作为上位机,通过构建嵌入式Web服务器,借助CGI(Common Gateway Interface)技术控制中心与嵌入式Web服务器端之间的动态数据交互,来满足嵌入式设备直接与Internet联网的要求,使管理者可以不受空间限制,通过Internet利用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接口,可用于系统的扩展,通过布线连接相应的设备。[!--empirenews.page--]

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程序输出的内容上附加一些头标信息和状态行,然后把结果送回浏览器。[!--empirenews.page--]
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 结论
    在嵌入式监控系统中,基于嵌入式Linux平台,利用嵌入式Web服务器和嵌入式数据库对远程设备进行操作和管理是嵌入式监控系统的发展方向。本文在嵌入式Linux平台下使用Boa作为Web服务器,应用CGI技术实现的动态WebServer通用性强,可以稳定、高效地在目标系统中运行,为网络化远程实时监控系统的实施提供了技术保障。其不仅可以运用于温室信息监测,还可运用于其他环境监测,能满足信息采集扩展性、分布性、实时性的要求。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭