楊頌 張少偉 孫培壯 郭軍
摘 要:現有的農情監測設備在實際作業中常會遇到作業范圍小、實時監測難、作業效率低等難題。為解決這些難題,設計了一種以無人機為平臺的農情監測系統。將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.