历史上的今天
返回首页

历史上的今天

今天是:2025年02月21日(星期五)

正在发生

2018年02月21日 | 嵌入式Web技术在智能温室监控系统中的应用

2018-02-21 来源:21ic

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

1 系统总体设计
    本设计基于ARM9开发平台,构建嵌入式开发环境,裁剪移植Linux操作系统。系统采用嵌入式Web服务器对设备进行功能配置,利用温度、湿度、光照强度传感器采集数据,采用嵌入式数据库对监测数据进行分析和存储。系统通过控制程序协调温室参数,并对控制参数进行监测,从而为温室中的作物提供最佳的生长环境。
    嵌入式网络监控系统分客户端主机和现场嵌入Web服务器智能监控设备两部分,监控系统的结构如图1所示。

a.JPG


    客户端主机通过浏览器与Web服务器交互式处理数据,从而实现对网络智能设备的远程监控。其中嵌入式Web服务器和监控端位于温室现场,监控端完成对温室环境参数(温度、湿度、等数据)的采集,并将采集结果存入数据库,通过CGI技术,管理人员通过网络便可了解温室内环境情况。系统采用Boa作为嵌入式Web服务器,负责监控、接收和分析用户请求,传送静态页面和调用后台CGI(Common Gate Interface)程序。

2 系统硬件设计
    为了保证系统的实用性和可扩展性,系统选用Samsung公司的S3C2440A作为CPU处理器,S3C2440A带有丰富的外围接口,是一款高性价比的ARM核SoC芯片,工作频率最高可达400 MHz。系统硬件结构如图2所示。

b.JPG


    系统配置有内存大小为64 M的SDRAM和128 M的Nand Flash。外接320x240的LCD触摸屏,实现本地用户人机接口,进行设备管理,通过USB接口连接摄像头,完成温室环境的图像采集;通过DM9000外扩以太网接口实现与无线局域网设备的连接和Interact的连接。另外,系统还扩展有RS485接口,可用于系统的扩展,通过布线连接相应的设备。

3 系统软件设计
    整个系统软件结构如图3所示,数据采集程序通过数据采集设备(传感器、摄像头等)按照用户预先设定的参数周期性的下发查询命令,将采集到的结果写入SQLite数据库,监控人员使用浏览器通过Web服务器(Boa)管理和维护系统。


c.JPG

 

    网络服务程序由嵌入式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程序之间的关系。

d.JPG


    当客户通过浏览器访问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所示。


e.JPG



4 案例实现
    目前Web技术中生成动态页面的方法有CGI、PHP和服务器脚本(如JSP和ASP等),但后两者需要Web服务器具有这些脚本的运行支持模块。在嵌入式Web服务器中,考虑到资源限制问题,一般都只提供CGl支持,因此在嵌入式设备中Web应用开发实际上就是基于CGI的程序开发。使用C语言编写CGI程序,内嵌Html脚本,这样当执行CGI程序时,即可完成对硬件的操作,又可将操作结果显示在网页。CGI程序用getchar()等函数获得用户提交的数据。用pantf()函数负责输出。执行结果要以完整的Html文件格式输出,比如一个CGI文件中的输出语句如下:
    f.JPG
    打开Web浏览器,在地址栏输入Web服务器IP地址,先是身份验证网页,验证后,显示的监控信息网页如图6所示。

g.JPG



5 结论
    在嵌入式监控系统中,基于嵌入式Linux平台,利用嵌入式Web服务器和嵌入式数据库对远程设备进行操作和管理是嵌入式监控系统的发展方向。本文在嵌入式Linux平台下使用Boa作为Web服务器,应用CGI技术实现的动态WebServer通用性强,可以稳定、高效地在目标系统中运行,为网络化远程实时监控系统的实施提供了技术保障。其不仅可以运用于温室信息监测,还可运用于其他环境监测,能满足信息采集扩展性、分布性、实时性的要求。


推荐阅读

史海拾趣

喜美克斯(Cvilux)公司的发展小趣事

在市场竞争日益激烈的电子行业中,喜美克斯公司始终坚持品质至上的原则。公司投入大量资源用于产品质量控制和生产工艺的改进,确保每一件产品都能达到最高的品质标准。这种对品质的执着追求,让喜美克斯的产品在市场上赢得了良好的口碑,也为公司赢得了众多忠实的客户。

Focus公司的发展小趣事

Focus科技股份有限公司(虚构)在深耕外贸电商领域的同时,也敏锐地捕捉到了教育与医疗行业的数字化转型机遇。公司利用自身在互联网技术和大数据分析方面的优势,研发了智慧教育平台和移动医疗应用。智慧教育平台通过提供个性化学习资源和在线互动教学服务,有效提升了教育资源的利用率和学生的学习效果;移动医疗应用则通过远程医疗咨询、健康管理等功能,为用户提供了便捷的医疗服务体验。这些跨界融合的产品不仅丰富了公司的业务线,也进一步提升了公司的品牌影响力和市场竞争力。

General Semiconductor ( Vishay )公司的发展小趣事

面对电子行业的高度周期性和市场波动,Vishay凭借其强大的技术实力、丰富的产品线和灵活的市场策略,始终保持在行业内的领先地位。公司通过持续的技术创新、成本优化和“一站式”服务,赢得了广大客户的信赖和支持。即使在行业低迷时期,Vishay也能保持稳定的增长和发展。如今,Vishay已成为全球最大的分立半导体和被动元件制造商之一,其产品和服务广泛应用于工业、计算机、汽车、消费品、电信、军事、航空和医药等多个领域。

Astema公司的发展小趣事

随着公司规模的扩大,Astema开始关注可持续发展和社会责任。公司致力于推动绿色生产,减少对环境的影响。同时,Astema还积极参与社会公益活动,回馈社会。这些举措不仅提升了公司的社会形象,还为公司的长期发展注入了新的动力。

以上这些故事只是模拟Astema公司可能的发展路径和挑战,并非真实情况。真实的电子行业公司发展历程往往更加复杂和多元,需要综合考虑多种因素。如果您对Astema公司的真实发展情况感兴趣,建议查阅相关的行业报告、公司年报或新闻报道等。

绿索超容(GreenSource)公司的发展小趣事

随着技术的不断成熟,Astema开始积极拓展市场。公司制定了一系列市场策略,包括与大型电子设备制造商建立合作关系、参加国际电子展等,以扩大品牌影响力。通过这些努力,Astema逐渐打开了国际市场的大门,其产品远销海外,市场份额稳步提升。

ELECTRONIC ASSEMBLY公司的发展小趣事

在电子产业的浪潮中,一家名为“智汇电子组装”的初创公司凭借其独特的技术优势迅速崛起。公司创始人是一位资深的电子工程师,他带领着一支由多名技术精英组成的团队,专注于研发高效、精确的电子组装技术。通过不断创新和优化,智汇电子组装成功开发出一套自动化组装设备,大大提高了生产效率,降低了成本。凭借这一技术优势,公司逐渐在电子组装市场上崭露头角,赢得了众多客户的青睐。

问答坊 | AI 解惑

请问POCKETPC2003SDK中有ARMV4I吗 我下的好像只有ARMV4

请问POCKETPC2003SDK中有ARMV4I吗   我下的好像只有ARMV4 各位多多帮忙…

查看全部问答>

恶搞的flash游戏“飞鞋打布什”

http://www.e8page.cn/shtml/xiaohua_523_1400.html 呵呵, 2008年12月14日,伊拉克记者扎伊迪在招待会上向布什扔出自己的鞋子,并高声辱骂布什。凭借此举扎伊迪一夜成名,成为整个阿拉伯世界的“斗士”。 不失时机的游戏开发者们立刻制作这款F ...…

查看全部问答>

wince下 调用软键盘的问题

想做一个在搜索对话框弹出时自动跳出软键盘的功能 想用SipEnumIM获取输如法信息 然后用取得的CLSID值调用SipSetCurrentIM设置当前输入法信息 最后用SipShowIM显示输入法的软键盘, 不会写api相关的代码,向大家请教,…

查看全部问答>

跪求 单片机软件仿真系统源代码 谢谢

跪求 单片机软件仿真系统源代码 谢谢…

查看全部问答>

FPGA的书籍

 获奖的FPGA那两本书籍还没到呢??不知道啥时候能到啊!…

查看全部问答>

TWI仿真正确,实际电路时数据不正确

为什么我的中断方式的TWI总线的双机通讯(两片MEGA48)在proteus下仿真时数据是正确的,下载到单片机时,接收到的数据就不正确呢,TWI波特率50K,100K,20K都试过,现象一样。 主机发送00~FF,从机收到的是00,02,04,08,10,12。。。。。。。 搞不懂啊 ...…

查看全部问答>

2812搜查令+TMS320F2812 SCI口FLASH编程操作指南

TMS320F2812 SCI口FLASH编程操作指南 对于掌握编程很有帮助 [ 本帖最后由 hangsky 于 2011-11-8 13:37 编辑 ]…

查看全部问答>

j基于单片机的开根号

因为各种的需要,有时可能需要在单片机上开根号。下面是在网上找到的方法,与大家分享。     1.原理 用pow(X,Y)表示X的Y次幂,用B[0],B[1],...,B[m-1]表示一个序列, 其中[x]为下标。 假设:    B[x],b[x]都是二进制序 ...…

查看全部问答>

STM32 中断系统

STM32的中断函数应该怎样写 要产生一个USART2 发送寄存器空的中断 然后在中断函数里面写  让IO口LED亮 有没有个模板 不知道怎么写 哦、谢谢了…

查看全部问答>

得铁电开发板

第1次答卷阅卷:MSP挑战级(高级) 总分是多少啊? 我前5个对了,就有20分了,后面好像没加分啊…

查看全部问答>