嵌入式农业监控系统的设计摘要:农业环境监控与管理技术是农业信息化的重要基础。提出一种基于Linux和嵌入式远程农田信息采集、压缩、传输和系统控制等方面的设计,能将监控现场的情况自动判断分析,对监控现场以报告和实时视频的形式通过网络在控制中心显示出来。关键词:农业环境;嵌入式Linux平台;远程监控;视频压缩Design of Embedded Agricultural Monitoring System based on LinuxAbstract: Agriculture environmental monitoring and management technology is an important foundation for agricultural information. An embedded distance information collection system based on Linux was proposed. This system can collect and compress farmland information and analysis scene situation. And it can demonstrate reports and real-time video through the network on the control center display monitor. Key words: agriculture environment; embedded Linux; long-distance monitoring; video compression;在全球信息化和数字化背景下,全球农业也由传统农业向现代农业转变。农业监控系统也由过去的基于同轴电缆的视频监控系统向嵌入式网络信息采集等远程Web视频监控系统转变。嵌入式农业监控系统采用高性能的ARM9芯片作微处理器,内置嵌入式Web服务器Boa,通过嵌入式多任务操作系统Linux采集视频数据[1];采集的视频信号数字化后经MJPEG算法压缩,压缩后的视频流再通过内部总线送到内置的服务器;监控系统通过对监控现场的情况自动判断分析,对监控现场以报告和实时视频的形式通过网络在中央控制中心的计算机屏幕上显示出来。1系统的硬件结构1.1嵌入式网络视频系统原理及组成结构嵌入式网络视频采集的基本原理:在嵌入式Linux操作系统中内置Web服务器Boa,摄像机采集视频信号并将其数字化,经MJPEG压缩后,传送到内置的Web服务器,通过Web页面将视频信息发布到Internet。由于嵌入式网络摄像机是视频采集终端和Web服务器的融合,因此,用户可以直接通过浏览器观看拍摄的农田视频图像,达到远程监控的目的[2]。整个系统由视频采集模块、视频压缩模块、Web服务器、通用网关接口、Web页面等5个部分组成。其硬件结构如图1所示。视频采集模块包括以S3C2410X为核心的中央控制和数据处理中心,以及USB Camera数据采集单元。中央控制和数据处理中心主要完成视频采集终端的控制和视频图像的压缩;Web服务器完成基本服务器的功能,负责响应HTTP请求,配合视频采集、压缩模块完成图像信息发布;通用网关接口CGI,可以根据用户输入的数据信息,控制摄像机、云台和镜头的动作或直接通过Web实现对系统进行配置。1.2硬件平台系统在总体布置上分为中央端(位于控制中心)和节点(位于监控现场)两个部分,如图2所示。中央端运行于控制中心,它负责各个节点的运行情况,同时实时接收、显示以及存储图像数据,采用普通电脑即可,关键要能接100M以太网接口。视频监控系统的节点运行于监控现场的远端,节点包括视频采集和控制处理两部分,负责视频信息的采集、分析处理并将视频数据通过网络向中央端发送,它还接收来自中央端的控制信息并执行相应的动作。视频采集元件可采用基于OV511芯片的网眼3000小型摄像头,节点控制处理器不宜采用低性能的CPU,可采用基于Intel XScale的IntelPXA255处理器嵌入式开发系统板,它含有最新的2.4.18版本的Linux内核,提供了众多的外设接口,特别是系统板上自适应网络接口和USB 接口,特别适合本项目的使用环境,中央端和节点间采用具有100M带宽的快速以太网联络。网络电缆采用超五类双绞线,节点与中央端之间的交换机和集线器等设备至少支持10M带宽。这样的网络平台满足一般的视频传输量的要求,而且由于快速以太网的标准是开放的,具有使用价值[3]。2软件系统的设计2.1软件操作系统虽然Linux提供了完成嵌入功能的基本内核和需要的所有用户界面。但对于嵌入式系统的开发而言,还要根据需求对Linux进行裁剪和拆分,中央端操作系统采用的是Red Hat Linux 10.3,各种运行于Linux平台上的软件都会优先保证在Red Hat Linux上运行。优点有:①功能强大的内核,性能高效、稳定、多任务;②内核小巧灵活,易于裁剪;③完善的网络、图形用户界面和文件管理机制;④具备一整套功能强大的开发工具链,如GCC、Ddb等。系统中主要使用到的软件一个是Boa,它是一个适合于嵌入式应用的Web服务器、具有简单、占用内存空间少的特点[4]。另一个是SQLite,它是一个开源的嵌入式数据库产品,具有系统开销小、检索效率高的特性,同时它还实现了完备的、可嵌入的、零配置的数据库引擎[5]。2.1.1应用数据库的构建动态链接库(Dynamic Link Library,DLL)技术是程序设计中经常采用的技术,是Windows中的一种特殊的程序单元,被称为非任务化的可执行模块,它们由调用者的任务所驱动。DLL是一个包含共享函数库的二迸制库文件,可以同时被多个应用程序使用。当执行应用程序时,动态链接库并不立即装载到系统的内存中,只是在需要时进行动态装载,并实现与应用程序的连接。在Windows系统中,动态链接库通常是以*.dll为扩展名的文件。Windows系统本身就是由大量的DLL组成的,如最基本的模块kernel.dll、user.dll等。另外,一些设备驱动文件和字体文件也是使用DLL来实现的,通常为*.drv和*.fon。DLL在运行时被系统加载到应用程序的进程空间中,成为调用进程的一部分。DLL模块中包含各种导出函数,用于实现特定的功能。DLL文件中还包含一个导出函数表,其中包含了导出函数在DLL中的地址。当Windows应用程序加载DLL时,动态链接过程通过导出函数表,将进程函数调用与DLL文件的导出函数进行匹配,并建立函数调用与函数地址的映射。删除应用程序就是通过API函数调用地址映射来实现函数的动态链接,从而完成特定的应用功能。2.1.2Web服务器的构建嵌入式系统配置成Web服务器并接人Internet后,可以同远端浏览器在Http协议下进行信息交互。Web服务器的构建和配置步骤如下:在宿主机上解压缩CGI和Httpd文件,重新编译并下载到目标板中,从而产生嵌入式系统的Web服务目录。其中/home/httpd/cgi-bin为系统中CGI程序的默认目录,存放CGI程序;/home/httpd为系统默认静态页面目录,存放网页文件[6]。2.1.3串口信息采集与控制模块的设计该模块主要用于后台的数据采集和通信,为了扩大系统挂接设备的数量和提高处理速度,特别采用了多线程的实现方式。系统中有一个通信主线程和多个通信子线程。通信主线程的主要功能是对各个通信子线程进行调度和管理、接受用户的请求并启动为之服务的线程, 并根据条件变量机制,来控制子线程对主线程中临界资源的访问。主线程的主要代码如下所示:For(int i=0;i<2 ;i ++){//暂用两个串口ithread[i]=pthreadcreate(&thread id[i],NULL(void*)function,i )}在函数function中启动的是一个守护进程,定时对设备发出请求,并把设备返回的信息写入数据库,当上面的工作完成后,就开始检查用户对具体的串口是否发出请求。若有则处理,否则就等待, 主要代码如下:num=getcomnumber( );//得到用户所请求的串口号numIf(coms[num].busy==0)ithread[num]=pthread_create(&thread_id[num],NULL,(void*)trans_function,num);2.1.4与web服务器交互的CGI程序的设计CGI程序完成Web网页中表单(Form)数据的处理、数据库查询和实现与传统应用系统的集成等工作。本系统中,用户在远端浏览器中输入嵌入式Linux系统IP地址后,就进入嵌入式系统服务器默认目录下的主页(/home/httpd/index.htm1)。是一个登录界面, 要求用户输入其用户名和密码, 当用户输入这些信息并提交之后,Web服务器将会把用户输入的信息当作参数传递给相应的CGI程序,在CGI程序中对用户的输入信息进行验证,同时将验证的结果返回给用户,如果通过验证,CGI程序访问SQLite数据库,取出数据,并在网页上进行显示。2.2软件系统模块整个软件系统划分为视频捕获子模块、图像分析处理子模块、网络传输子模块、图像显示子模块。视频捕获和图像分析子模块采用精简嵌入式Linux 操作系统和自行编写的基于Video Linux API的采集分析软件实现视频捕获和图像分析相关操作,通过USB双向传输串行的视频数据和控制指令控制视频捕捉硬件,采集监控现场的视频图像[3],捕获流程如图3所示。网络传输子模块采用Socket 编程接口将图像数据和其他数据在节点嵌入式系统和中央端控制中心传输,套接字编程接口(Socket API)是目前网络程序设计事实上的标准。为了方便传输数据和指令,本系统采用了一种自定义的格式,这种自定义的格式在网络传输中有一定的保密性。图像显示子模块使用Linux的Gtk 编程工具包在中央端监视器上完成图像的显示任务。Gtk的完全面向对象特性以及特有的信号和事件机制非常有效。2.3动态图像分析以及控制系统的视频输入可以是NTSC、PAL和SECAM制式的任何一种,或者采用S端子输入。TVP5150完成视频信号的A/D转换,为后续处理提供数字视频数据,同时它还分离出行、场同步信号并输出系统时钟供视频D/A芯片和FIFO使用。TVP5150的输出格式包括4∶2∶2、4∶1∶1、4∶2∶0和4∶1∶0等4种YUV格式输出,数据输出格式是通过I2C总线编程来选择的,TVP5150的内部寄存器初始化也通过I2C串行接口来完成。对于不同的输入制式、不同的采集要求和不同的处理要求,其帧缓存要求是不同的,如对于PAL-D制ITU-R BT.601视频输入,采样后按4∶2∶2格式输出,一帧数据为720×576×2=0.83Mbyte,若缓存三帧图像,则需要3Mbyte空间的采集帧缓存,若按4∶1∶1格式输出,则只需2Mbyte的帧缓存。系统可选择8M×32-bit的SDRAM在系统中作为采集帧缓存和处理后的数据帧缓存,也可作下载程序的存储器使用。系统提供串行接口,可与外部设备进行通信和传输图像数据。其中Xilinx Xc2s300 FPGA[5]实现以下5点功能:①完成系统中视频采集和输出部分的同步信号和消隐信号的控制,其中主要包括TVP5150和SAA7121的行同步信号、场同步信号、消隐信号;②将部分逻辑单元设计为FIFO 作数据缓存,完成外接FIFO的同步读写控制,承担TVP5150与DSP的数据传送工作;③作PCI总线控制器,完成TMS320DM642与计算机的数据通信工作以及从计算机加载各种图像处理算法;④对TVP5150输出的数字图像进行预处理,其中主要包括图像数据的色度空间转换,如YUV到RGB的转换,数据格式转换,如将4∶2∶2转换为4∶2∶0;⑤作数据总线接口,实现数据的驱动传输等功能[5]。3小结该系统是基于Linux的嵌入式农业信息采集和控制系统。嵌入式设备将采集来的信息存入本地数据库,并响应远程用户通过互联网发来的请求,以达到远程监控农田的目的。利用嵌入式Linux的Web服务功能,通过CGI程序来实现远程控制,再通过SQLite数据库存储从这些仪器仪表中采集数据, 实现数据的存储和远程显示。这种方式不但广泛适用于各种距离的监控,且由于嵌入式设备本身的特点使得该方式无论在成本、易用性、功耗、稳定性方面都远优于传统模式下的远程控制方式。参考文献:[1] 王谦,孙忠富,李秀红,等,基于嵌入式系统的农业环境监测系统的设计[J]. 微计算机信息,2006,22(23):39-41.[2] 梅大成,杨大千,赵娜,等.基于Linux的嵌入式网络摄像机设计[J]. 微计算机信息,2007,23(23):46.[3] 王瑛楠,高满屯. 基于嵌入式Linux的视频采集与传输系统的设计[J]. 现代制造工程,2007(3):49-51.[4] 孙琼. 嵌入式Linux应用程序开发详解[M].北京:人民邮电出版社,2006.[5] 韩相军,关永,王万森,等. 嵌入式视频采集系统的设计与实现[J]. 微计算机信息,2006,22(1-2):26-28,148.[6] 刘凯,余立建. 基于嵌入式Linux系统的远程数据采集[J].计算机应用,2006(26):264-265.。