史兴燕,李俊霞
(河南农业职业学院电子信息工程系,河南 郑州 451450)
21世纪飞速发展的世界经济和不断增长人口,使世界各国面临的粮食危机越来越严重。2009年的罗马世界粮食安全峰会声明:“为了能够持续解决世界粮食安全问题,到2050 年,……,需每年增产4400 万吨粮食。”[1]也就是说,今后每年需要在现有粮食增长规模的基础上再增产38%并再持续发展40年。要实现这一目标,就必须不断改革农艺学、作物育种学等传统技术[2]。
稳定可靠的作物生长环境是世界粮食增产的基本前提。全球CO2浓度的升高、土地沙漠化和盐碱化面积的增加等生态问题正日益侵蚀生产农田,并进一步导致水土流失、生物多样性破坏、粮食作物减产等负面效应。如何在可用耕地面积不断减少、作物生态环境日益恶化的情况下,更为有效地降低病虫害发生率,调控作物生长影响因素,实现农作物尤其是粮食作物的丰产和增产,已成为现代农业亟需解决的一个重要科学问题[1-3]。
为解决上述问题,本文基于精细农业的思想和Qt应用程序框架,设计实现了一套农田信息远程数字化监测系统,通过采集温度、湿度等影响田间作物生长的因素和实时图像信息,为分析制定科学的作物田间浇灌、施肥、施药及异常信息预警管理平台提供技术支撑。
精细农业[1]是基于信息采集和知识处理的现代农业技术,其本质是一种以知识为基础的农业管理信息体系。该过程可以描述为:在动态、实时获取农田水、肥、温度、光照、病虫害等农作物信息的基础上,分析诊断作物长势与产量之间的时空差异,指导灌溉、施肥、喷药时机,提高水、肥、杀虫剂的单位利用效率,降低环境污染,从而获得最佳的经济效益和生态效益。
从精细农业技术的具体实施过程而言,主要包括农田信息获取、信息管理与分析、决策分析和决策的田间实施4个部分[2]。田间信息的获取则主要有传统采集法、田间GPS采集法、智能农机作业法和多平台遥感法4种方法[3]。可见,农田信息获取是精细农业后续实施步骤的基础和重要环节,将对决策系统的总体实施效果起到决定性因素。
今天,计算机技术和“3S”(遥感技术RS、地理信息系统GIS、全球定位系统GPS)技术的发展已使农田信息监测向数字化、智能化和网络化方向迈进。在农业成果的推广实践过程证明,为了能够快速、实时地提供后续数字化决策依据,成本低、复用能力强、实时性好的产品具有较好的实际应用,这又使监测设备逐步向基于嵌入式和网络技术的远程信息系统发展。
由于农业田间现场的气候复杂多变,这就要求监测系统必须能够适应应用现场的环境要求。鉴于以微处理器为控制中心的嵌入式控制系统已在工农业自动化、国防、航天等领域取得了广泛的应用,且具有可远程实时监控、后期维护成本低、软硬件扩展性良好等优点,本文选用基于ARM9芯片的韩国三星S3C2440嵌入式微处理器作为系统的硬件控制核心,选择Linux操作系统作为嵌入式系统的软件开发平台;然后,通过外围电路、摄像头、温度传感器等构成信息采集硬件平台,以从总体上实现软硬件开发成本和开发难度的降低。系统的总体技术架构如图1所示。
图1 远程监测系统的总体技术架构图
监测系统选用飞凌公司的OK系列目标板作为硬件开发平台,以使监测系统能够拥有较好的稳定性、兼容性和数据处理能力。如图2a所示,在硬件系统开发调试过程中,其嵌入式服务器平台主要由嵌入式微处理器S3C2440、存储器、电源和时钟模块、外围电路及接口、3.5 in(1 in=2.54 cm)液晶显示屏(带触摸功能)、ZC0301摄像头和DS18B20温度传感器等硬件模块。各硬件的参数和主要功能如下:
1)基于S3C2440的飞凌OK2440-Ⅲ目标开发板是系统的控制核心和嵌入式硬件开发平台。S3C2440的ARM9处理器主频400 MHz(可倍频至533 MHz),板载集成网络控制接口和DMA网络通道,拥有64 Mbyte的ROM和NAND Flash,并提供SD 卡、USB HOST、IDE 硬盘、LCD触摸屏和摄像头接口;5 V电源供电系统。
2)摄像头采用中芯微ZC0301,它拥有301PLUS快速高性能图像压缩主控芯片,可输出高清晰MJPEG视频图像数据,并有图像数据压缩(压缩率可达6∶1)和传输功能;工作电压3.3 V,电流200 mA,功耗较低。
图2 检测系统硬件平台构建
3)温度传感器采用Dallas公司的单总线数字式温度传感器DS18B20,具有结构简单、成本低、操作方便等特点。该传感器可通过一根I/O数据线实现供电和数据传输两种功能,抗干扰能力强;此外,温度的转换时间可根据分辨率自动调节:分辨率为9位时,转换时间为93.75 ms;10位时为187.5 ms;12位时则可达750 ms。
在图2b中,给出了农田监测系统硬件搭接后在实验室进行开发测试的工作场景。为了能够提高温度、湿度和图像的采集效率,在实验室内组建了一个微型温室,通过快速更换“室内”空气的温度和土壤内的水份含量,测试各监测设备的灵敏度并校正其偏差度。
监测系统的软件程序是有效控制硬件平台中各传感器和集成设备的关键。因此,软件开发应包括两个步骤[4]:1)移植嵌入式系统;2)开发监测设备的控制程序。
2.3.1 建立嵌入式开发环境
通过PC主机(host)为基于Linux OS的目标板(target)上开发农田信息监测软件,因host和target的体系结构不同,需要先为其建立交叉编译环境。这一过程可以分为两步:
1)建立交叉编译工具链。首先需要确定target的平台名称(这里是arm-linux-gnu),然后构建交叉编译工具链的工作环境及其包含的目录等,最后通过分步骤的手工编译或者脚本编译即可。
2)为host和target之间建立网络文件系统(Networking File System,NFS)。这一步骤中包括对target的网卡设置、启动NFS服务等操作,以实现本地文件可通过网络进行输出或者由远程计算机通过mount命令进行挂载访问。
这样即可实现农田监测系统在host与host、host与target之间的文件资源共享或下载,为后续的监测数据接收和发送提供底层实现接口。
2.3.2 移植BootLoader
BootLoader是嵌入式系统加电运行后的第一段代码,也是系统的引导加载程序,类似于PC机的BIOS程序[4]。由于BootLoader具有硬件依赖性,导致不同的BootLoader仅适于不同的硬件体系,故在移植BootLoader时需依据target中的设备而在操作系统内核中进行支持配置,如U-Boot,VIVI,ARMboot等。考虑到目标板主要基于三星公司的系列芯片,故而BootLoader选用VIVI。
在监测系统中移植BootLoader的步骤主要有:首先,对下载的VIVI源码包进行解压,修改其Makefile文件和分区信息,实现设备信息的配置;然后,通过交叉编译器完成VIVI的编译并获得生成的映像文件;最后,通过host上的JTAG接口和sjf2440.exe工具,将生成的映像文件烧写到target上。
2.3.3 编译嵌入式系统内核
嵌入式系统的性能很大程度取决于内核的功能[4]。由于本文所采用的Linux内核具有较好的硬件独立性,故可方便地对其内核进行裁剪和配置,主要包括:1)对CPU、U盘驱动、串口驱动、MMC/SD卡驱动、触摸屏驱动、USB摄像头驱动、网卡驱动和YAFFS文件系统等选项的修改配置;2)通过#make dep和#make zImage命令开启内核编译进程;3)获得Linux内核的压缩映像zImage。
2.3.4 Qt的移植
Qt[5]最初是一个跨平台的图形用户接口(GUI)工具包。由于Qt自身良好的跨平台特性,现已发展成类库、开发工具和集成开发环境(IDE)为一体的应用框架,可轻松实现应用程序在PC、移动平台和嵌入式设备上的“一次编写,随处编译”。
Qt for Embedded Linux(前期称为 Qtopia)[6]是一个基于Linux的全方位应用程序开发平台,可方便地为嵌入式设备提供和创建GUI。通过设置交叉编译器的编译选项和Qt的环境变量后,即可利用make命令完成Qt的交叉编译,从而实现Qt的移植。
经过上述步骤,全部移植工作就结束了。但对于target而言,还需加载YAFFS类型的嵌入式文件系统以避免内核恐慌[7],并由此实现硬盘、U盘的管理和维护。最后,再次利用sjf2440.exe工具将文件系统写入目标板,并最终完成整个嵌入式系统平台的构建工作。
本文中,农田信息的监测主要是指温度、湿度和图像数据的采集。在软件算法上,为降低冗余噪声信息所占用的数据传输带宽,在所设计的采集节点处,由嵌入式服务器应用程序首先会对数据信息进行滤波处理:以10个采样时间片段内的采样值为基准,后续采样数据与其对比,如果超过该基准值的2倍,则认为是无效采样值而予以舍弃,并同时调用重新采用命令进行二次采样;否则,则认为该采样值有效,通过网络将采样数据传回监控中心服务器。
嵌入式目标板中已有的Qt应用程序开发环境为快速开发处理程序提供了极大便利。在利用上述方法构建的嵌入式设备应用程序开发中,可较好地避免编写大量代码而仅实现应用程序较少功能的局面。在基于Qt的嵌入式开发环境下,要快速处理键盘、鼠标甚至触摸屏的输入事件,可直接调用Qt类QWSKeyboardHandler的函数processKeyEvent()、pro-cessKeycode()等或对其予以重载而快速实现自定义设备的数据输入或者其他扩展功能。
在Qt应用程序的开发方面,可直接基于QtCreator集成开发环境实现应用程序的开发。其主要流程如图3所示。这一过程中用到的工具有:跨平台的Makefile生成器tmake;元对象编译器moc;将UI文件生成C++代码的界面编译器uic;用户界面设计师QDesigner;以及Qt for Embedded Linux模块中的qvfb,qpe等,它们为嵌入式平台下开发各类应用程序提供了极大的便利,并使host上开发的代码可直接在target上编译运行。
图3 使用QtCreator IDE开发应用程序流程
利用Qt开发环境和上述流程,可以方便地开发出基于Qt的农田信息监测系统。图4给出的是集成了Qt和GIS[8]软件的系统运行效果。
图4 基于Qt的农田信息程序运行效果(截图)
基于三星S3C2440微处理器的飞凌公司ARM9目标板为农田信息监测系统的控制平台,使用嵌入式Linux操作系统和温度、湿度传感器及摄像头,采集处理了田间作物的基本生长信息,通过有线网络实现了数据信息的实时传输,构建了一套远程数字化监测系统。
在该系统的初始设计时期引入Qt应用程序框架,不仅有利于设计出简单易用的人机交互界面,来满足当今农业工作人员计算机水平普遍不高的现实需求,还有利于化解嵌入式设备事件响应处理困难的局面,以充分利用Qt类库来实现监测系统的并发处理功能和后续扩展兼容能力,为精细农业在田间实施规范化施肥、用药和预警管理提供科学依据。
在系统的下一步开发中,在保证系统通信稳定性的基础上,将通过重用现有ARM9目标板的软硬件模块并引入GPRS无线模块来实现远程监测信息的实时无线传输。
[1]于帮伟,邓华秋.基于Qt/Embedded的嵌入式数字监控系统控制界面的实现[J]. 电视技术,2011,35(24):25-28.
[2]姚建松,刘飞.数字农业田间信息获取技术研究现状和发展趋势[J].农机化研究,2009,8(8):215-220.
[3]樊丰义.基于嵌入式Linux的农业远程监测系统的研究[D].咸阳:西北农林科技大学,2010.
[4]周春喜,唐军,金心宇.面向目标跟踪的混合WMSN设计与实现[J].计算机工程与应用,2011,47(2):52-56.
[5]BLANCHETTE J,SUMMERFIELD M.C++GUI Qt4编程[M].2版.闫锋欣,曾泉人,张志强,译.北京:电子工业出版社,2008.
[6]于帮伟,邓华秋.基于Qt/Embedded的嵌入式数字监控系统控制界面的实现[J]. 电视技术,2011,35(24):25-28.
[7]包乃兰.基于嵌入式PC/104的矿山监测系统设计与开发[D].天津:河北工业大学,2004.
[8]姜代红,戴磊.Dijkstra算法在嵌入式GIS中的改进与研究[J].计算机工程与应用,2011,47(31):209-211.