杨颂 张少伟 孙培壮 郭军
摘 要:现有的农情监测设备在实际作业中常会遇到作业范围小、实时监测难、作业效率低等难题。为解决这些难题,设计了一种以无人机为平台的农情监测系统。将OV5640图像传感器、STM32处理器、4G通信等模块搭载于无人机上,由OV5640采集农作物的图像数据,通过DMA方式送入内存并通过4G网络发送至服务器,管理者通过PC客户端了解农情并制定管理方案。该系统具有低成本、高效率、高灵活性等特点。测试结果表明,系统稳定可靠,采集到的图像十分清晰,在精准农业领域具有广泛的应用前景。
关键词:农情监测;图像采集;无人机;STM32;4G网络
中图分类号:TP92;TP212 文献标识码:A 文章编号:2095-1302(2018)07-00-04
0 引 言
随着信息技术的快速普及,农业向信息化方向迈进,精准农业成为农业发展的主题之一。精准农业采用信息技术,定位、定时、定量地进行农事操作与管理,达到低投入、高收入、低污染、高效率的目的[1]。农情监测是精准农业的核心之一,需要获取及时、客观、准确、大范围的农情图像信息,如作物长势、农业灾害、作物种植面积、种植结构等信息[2]。而卫星遥感存在成本高、误差大等问题,传统的监测设备又存在作业范围小、实时监测难等问题,无法满足精准农业的发展要求[3,4]。因此,将无人机及遥感技术应用到农业方面可解决以上问题,开发出满足精准农业的无人机农情监测系统。
1 系统总体设计
为了解决现有农情监测设备面临的难题,本文设计了一种基于STM32和OV5640的无人机农情监测系统。系统总体结构如图1所示。系统由PC客户端和搭载于无人机上的OV5640摄像头、STM32F429处理器、4G通信、电源等模块组成。PC客户端为上位机,无人机及其搭载的模块为下位机。OV5640摄像头拍摄到的农作物图像数据通过STM32F429的DCMI数字摄像头接口送入处理器进行下一步处理,处理器通过DMA将图像数据送入内存,同时通过控制4G通信模块将采集到的图像数据传输到服务器,连接因特网的PC客户端负责把采集到的农作物图像数据保存并呈现给管理者,同时还需控制无人机飞行。
2 系统硬件设计
2.1 STM32F429处理器
2.1.1 STM32F429处理器简介
下位机处理器采用Cortex-M4内核的STM32F429。最高主频为168 MHz,提供2 MB的FLASH,192 kB的SRAM,16个DMA通道,每个DMA通道有4×32位FIFO。拥有单精度浮点运算单元,支持对图像信息使用DSP进行高速图像处理[5]。值得注意的是,该处理器内置DCMI数字摄像头接口,能够驱动摄像头采集图像数据并进行加工处理。
2.1.2 DCMI接口
STM32F429内置有同步并行的DCMI数字摄像头接口,能够接收由CMOS摄像头输出的8位、10位、12位、14位图像数据。可以采用DMA方式传输,当DCMI_CR寄存器中的CAPTURE位被置为1时,DMA接口被激活。当其寄存器中接收到一个32位数据时,触发一个DMA请求。
DCMI接口的信号有以下几种:
(1)数据输入信号D[0:13]:用于接摄像头的数据输出;
(2)行同步输入信号HSYNC:指示行的开始或结束,用于接摄像头的HSYNC/HREF信号;
(3)帧同步输入信号VSYNC:指示帧的开始或结束,用于接摄像头的VSYNC信号[6];
(4)像素时钟输入信号PIXCLK:用于接摄像头的PCLK信号。
DCMI信号波形如图2所示,结构框图如图3所示。
2.2 图像采集模块
2.2.1 OV5640摄像头
系统的任务是向管理者提供高质量、清晰的农作物图像信息,因此采用OmniVision公司設计的CMOS图像传感器OV5640。该传感器支持输出最大为500万像素的图像(2 592×1 944),具有自动对焦功能,带有两个1 W的高亮LED闪光灯,支持夜间或者光线昏暗的拍摄场景。
通过SCCB总线控制图像质量、数据格式和传输方式,包括伽玛曲线、白平衡等功能的设置。可以输出整帧、子采样等方式的各种分辨率为8或10位的图像数据。QSXGA(分辨率为2 592×1 944的输出格式)图像最高达到15帧/秒[7,8]。
2.2.2 SCCB总线
由于I2C和SCCB总线类似,因此处理器可使用I2C外设与它通信。通过SIO_C和SIO_D两根数据线传输时钟信号和数据信号,从而控制摄像头。
起始信号指SCCB开始传输发生在SIO_C为高电平时,SIO_D出现一个下降沿,如图4所示。停止信号指SCCB停止传输发生在SIO_C为高电平时,SIO_D出现一个上升沿,如图5所示。数据有效性指在数据传输过程中,当SIO_C为高电平时,SIO_D上的数据稳定[9],如图6所示。
2.2.3 DVP接口
OV5640支持数字视频接口DVP,同时处理器STM32F429内置的DCMI接口也支持DVP接口,因此可以采用OV5640的DVP接口向处理器输出图像数据。OV5640提供的DVP接口虽是10位,但也支持8位接法,使用时一般采用8位连接方式,如图7所示。
2.2.4 图像数据输出时序
OV5640的输出信号包括像素时钟信号PCLK、帧同步信号VSYNC和行同步信号HREF/HSYNC。在PCLK,VSYNC和HREF/HSYNC的控制下由Y2~Y9的8个引脚输出图像数据。
行输出时序如图8所示,图像数据在HREF为高电平时输出,采用8位接法,每一个PCLK时钟输出一个8位数据。
QSXGA模式下的帧时序如图9所示,处理器可以按照这个时序读取OV5640的图像数据。
2.3 4G通信模块
相比2G和3G网络,4G网络不仅数据传输速度大大提高,且时延较低,因此能够满足本系统实时传输高视频数据的要求。本系统采用移远EC204G模块,该模块同时支持LTE,UMTS和GSM/GPRS网络,最大上行速率为50 Mbps,最大下行速率为100 Mbps,供电电压在3.3~4.3 V之间,内置多个标准接口。通过串口和处理器连接,并以AT命令来控制。本系统将4G模块插入Mini PCIE转接板,从而和STM32单片机相连接,实现串口通信,由于4G模块自身内部集成有TCP/IP协议,因此使用TCP/IP协议与服务器通信,实现数据传输。STM32单片机与4G模块之间的连接如图10所示。
2.4 四旋翼飞行器
下位机作为图像采集设备,要求无人机具有体积小,机动灵活,维护方便等特点,因此采用四旋翼飞行器作为搭载设备。同时,由于无人机搭载的各类模块数量较少且普遍较轻,对动力没有过于苛刻的要求,因此对各种姿态传感器进行如下设计。
2.4.1 无刷电机和电调
在下位机工作时,无人机要尽量机动灵活,因此采用A2212-1400 kV型号的无刷电机,该电机运转顺畅,体积小,效率高,调速宽度大。同时采用好盈30 A电调,持续输出电流为30 A,短时电流为40 A,具有欠压保护,过压保护,过热保护等功能。
2.4.2 姿态传感器模块
飞行器在飞行过程中需要测量的姿态信息一般包括加速度、角速度、航向和高度,进而采用特定的算法来控制飞行姿态。本文采用集成了3轴加速度计和3轴陀螺仪的MPU6050测量飞行器的加速度和角速度;采用HMC5883L磁力计测量飞行器的航向;采用MS5611气压计测量气压,并根据式(1)计算出海拔高度,分辨率为0.1 m,再根据地面的海拔高度就可以算出飞行器相对地面的高度了。
3 系统软件设计
3.1 下位机软件设计
3.1.1 DCMI驱动OV5640
DCMI驱动OV5640步骤如图11所示。这部分软件设计的重点是与OV5640和DCMI相关的函数功能设计,以下是几个较为重要的函数:
(1)与OV5640相关:
①OV5640_Init函数:初始化OV5640相关的I/O口,并完成OV5640的寄存器序列初始化;
②OV5640_ImageWin_Set函数:用于设置ISP输入窗口;
③OV5640_OutSize_Set函数:用于设置预缩放窗口和输出大小窗口;
④OV5640_Focus_Init函数:用于初始化自动对焦功能;
⑤OV5640_Focus_Single函数:用于实现一次自动对焦;
⑥OV5640_Focus_Constant函数:用于开启持续自动对焦功能。
(2)与DCMI相关:
①DCMI_IRQHandler函数:用于处理帧中断,可以实现帧率统计和JPEG数据处理等;
②DCMI_DMA_Init函数:用于配置DCMI的DMA传输;
③DCMI_Init函数:用于初始化STM32F407的DCMI接口;
④DCMI_Start函数:用于开启DCMI接口;
⑤DCMI_Stop函数:用于停止DCMI接口。
3.1.2 飞行器的控制
通过PC客户端控制飞行器的飞行状态,主要过程是通过客户端发出指令和数据,下位机通过4G通信网络接收处理器综合姿态传感器的测量数据,采用特定的算法计算后发出控制量控制飞行。
目前用来控制飞行器的算法有多种,但应用较为普遍的是PID控制,其中包括比例、积分及微分的计算过程,具有结构简单、高可靠性、高稳定性的特点[10]。
3.2 上位机客户端设计
PC客户端基于Java的可扩展平台Eclipse开发,其功能包括获取服务器数据并显示图像、飞行器控制、飞行器高度显示等。具体功能如下:
(1)图像显示:客户端从服务器获取图像,并进行一定的处理。
(2)控制指令:通过客户端向飞行器发送控制指令,控制飞行器的飞行方向与高度。
(3)高度显示:显示客户端从服务器获取的飞行器高度信息,为用户提供调整飞行器高度的参考信息。
3.3 服务器与数据库的搭建
在实验测试过程中,使用迅为电子的ARM9 Linux开发板作为服务器与数据库的搭载平台,进行Linux系统编程,从而实现网络通信,即连接4G模块与STM32单片机进行数据传输。利用花生壳软件实现内网穿透,将服务器与已存在IP地址的端口对应起来(端口映射),以保证4G模块可以访问服务器进行数据传输。服务器接收数据并存储后,就可以在客户端访问服务器,以获取从摄像头采集到的数据。同时服务器还负责接收来自客户端对四旋翼飞行状态的控制指令,并且将该指令发送给下位机控制飞行器飞行。
4 系统测试结果
系统测试在一片白皮松种植地里进行,无人机低空飞行进行农情监测。下位机如图12所示。调试下位机和上位机的通信状态后,从客户端控制无人机在距离地面3~10 m的高度飞行,打开摄像头采集图像数据,图像数据经STM32F429处理器处理之后通过具有高速特点的4G网络传输至服务器,最后在客户端可以实时监测植被的生长状态,上位机客户端图像显示如图13所示。
测试结果表明,系统具有较强的稳定性、可靠性。下位机部分,无人机飞行平稳;上位机部分,客户端显示的图像清晰,色彩真实,失真较小。因此系统在通信稳定度、图像清晰度等方面均满足设计要求。但是在续航能力、灵活度等方面还有待提高。
5 结 语
本文设计了一种基于STM32和OV5640的无人机农情监测系统,由无人机及其搭载的OV5640图像传感器、STM32F429处理器、4G通信等模块和PC客户端上位机组成。利用500万像素的图像传感器OV5640采集图像,并通过DCMI接口送入处理器进行处理,采用DMA方式存储,同时利用4G网络传输至服务器,最后可以在连接因特网的PC客户端上实时监测农田里的农作物。测试结果表明,相比现有的农情监测设备,本系统具有稳定性高、效率高、成本低等特点,可以大范围、实时、精准、高效率地进行农情监测,能够满足精准农业发展中农情监测的要求,在信息化农业领域的应用前景十分广阔。
参考文献
[1]胡承健.加速宁夏农用无人机开发应用 促进精准农业发展[J].宁夏农林科技,2014,55(5):8-10.
[2]李中元,吴炳方,GOMMES René,等.農情遥感监测云服务平台建设框架[J].遥感学报,2015,19(4):578-585.
[3]李继宇,张铁民,彭孝东,等.小型无人机在农田信息监测系统中的应用[J].农机化研究,2010,32(5):183-186.
[4]贾鹏宇,冯江,于立宝,等.小型无人机在农情监测中的应用研究[J].农机化研究,2015,37(4):261-264.
[5]徐伦.基于STM32与图像采集模块OV5640的物品表面缺陷检测仪设计[J].应用能源技术,2017(10):53-56.
[6]曾文兵. 基于STM32F407的视频采集与传输系统设计[D].武汉:华中师范大学,2016.
[7]张震. 基于FPGA的USB3.0高速图像采集系统设计与图像特征提取算法研究[D].西安:西安电子科技大学,2015.
[8]赵厉. 基于FPGA的彩色球形目标检测技术研究[D].柳州:广西科技大学,2015.
[9]郑焱雄,赵立宏.基于STM32F4和OV5640尿液分析仪的图像采集系统设计[J].科技风,2017(17):74-75.
[10]王文建. 四旋翼无人机控制系统设计[D].乌鲁木齐:新疆大学,2017.