贠汝文 , 王亞娟 , 辛 華
(黑龍江能源職業(yè)學(xué)院機(jī)電工程系,黑龍江 雙鴨山 151100)
我國是農(nóng)業(yè)病蟲害多發(fā)國家[1],在農(nóng)業(yè)生產(chǎn)中,病蟲害一直是重要影響因素,其解決辦法之一是人工巡查。人工巡查作物病蟲害的優(yōu)勢是能夠近距離觀察作物的生長情況,較為全面地掌握第一手病蟲害資料;缺點是排查效率低,在對癥處理上不能利用智能化技術(shù)制訂較為科學(xué)的工作方案[2]?,F(xiàn)在病蟲害防治一般有化學(xué)、生態(tài)、生物等手段。由于生態(tài)和生物防治方法見效慢,因此大部分病蟲害控制采用化學(xué)防治的方式。長期大規(guī)模地使用化學(xué)農(nóng)藥雖然增加了農(nóng)業(yè)產(chǎn)出,但是不可避免地對生態(tài)環(huán)境造成了污染,影響了生態(tài)平衡,造成社會公害[3]。
因此,合理安全地使用農(nóng)藥化肥,減少化學(xué)藥品對環(huán)境的污染成為當(dāng)前科研工作者們的重要課題。在既能提高農(nóng)作物產(chǎn)量又能消滅病蟲害的前提下,合理施用化學(xué)藥品的關(guān)鍵技術(shù)之一是能快速準(zhǔn)確地獲取農(nóng)作物病蟲害信息,這樣就可以根據(jù)病蟲害信息,采取有效的手段進(jìn)行科學(xué)、合理的防治,減少因病蟲害帶來的經(jīng)濟(jì)損失。
當(dāng)前,我國農(nóng)民文化素質(zhì)有所提高,但還達(dá)不到與農(nóng)業(yè)生產(chǎn)相互適應(yīng)的程度,在作物遭蟲災(zāi)、患病的時候他們急需尋求專業(yè)人士進(jìn)行診斷與指導(dǎo),但是由于地域和專家數(shù)量的限制,無法及時得到科學(xué)必要的指導(dǎo)?;诖耍n題組提出了一種結(jié)合網(wǎng)絡(luò)、圖像、通信、嵌入式等多種技術(shù)的解決方法,即構(gòu)建一套農(nóng)作物病蟲害檢測專家系統(tǒng),以此來代替農(nóng)業(yè)專家深入田間地頭進(jìn)行診斷。
下位機(jī)主要由Arduino 開發(fā)板加相應(yīng)的作物生產(chǎn)因數(shù)的采集傳感器組成,利用485 串口通信的功能,在可調(diào)的時間間隔區(qū)間范圍內(nèi)把Arduino 下位機(jī)采集到的作物生產(chǎn)信息及病害信息傳輸?shù)缴衔粰C(jī)中進(jìn)行儲存分析判定,在下位機(jī)中主要采集了生長作物環(huán)境的溫度和濕度以及作物的生產(chǎn)圖像信息。環(huán)境信息使用了簡單通用的DHT11 傳感器,多點掛接在Arduino 開發(fā)板上,可大范圍定點定時地監(jiān)測溫濕度的變化,當(dāng)環(huán)境變化超出設(shè)定的范圍會有相應(yīng)的下位機(jī)蜂鳴報警,也可以在上位機(jī)報警,并且通過網(wǎng)絡(luò)把報警信息傳輸?shù)奖O(jiān)控者管理者的手機(jī)上,同時通過OV7670 攝像頭拍照的功能定時針對作物進(jìn)行拍照取片,同溫濕度等環(huán)境因子一起通過串口上傳到控制中心服務(wù)器電腦中進(jìn)行儲存分析發(fā)布。本系統(tǒng)最終的系統(tǒng)硬件構(gòu)架圖如圖1 所示。
圖1 系統(tǒng)硬件構(gòu)架圖
采用的圖像傳感器是由OV(OmniVision)公司生產(chǎn)的OV7670,它是一顆1/6 寸的CMOS VGA 圖像傳感器,該傳感器體積小,工作電壓低[4],并且?guī)IFO模塊。之所以必須用帶FIFO 模塊的攝像頭是因為Arduino UNO速度比較慢,帶FIFO模塊可以將攝像頭取到的圖像數(shù)據(jù)暫存在FIFO 里,然后再由Arduino 慢慢將拍攝暫存的數(shù)據(jù)讀取出來,通過串口發(fā)送到串口上位機(jī)顯示。
由于OV7670 的時鐘是24 MHz 的,所以它提供24 MHz 的像素時鐘(PCLK)輸出。FIFO 提供3 Mbps的視頻幀緩沖存儲器,OV7670 與Arduino 的信息交流是通過I2C 接口運行的,本項目使用的是內(nèi)置庫。我們只需把相應(yīng)的庫文件加進(jìn)程序即可,因此要把ArduinoIDE 的內(nèi)置庫I2C 類庫加進(jìn)程序中,兩者的硬件連線圖如圖2 所示。
圖2 Arduino 與攝像頭模塊連線圖
在程序驅(qū)動開發(fā)中,要編寫OV7670 設(shè)備數(shù)據(jù)讀寫、設(shè)備設(shè)置及設(shè)備初始化相應(yīng)的功能模塊,采用模塊化編程思路,編寫的相關(guān)程序如下:
unsigned char wr_Cmos7670(unsigned char regID,unsigned char regDat);//設(shè)備寫數(shù)據(jù)功能
unsigned char rdCmos7670Reg(unsigned char regID);//設(shè)備讀數(shù)據(jù)功能
unsigned char Cmos7670_init(void);//攝像頭初始化功能函數(shù)
void set_Cmos7670reg(void);// 寄存器設(shè)置函數(shù),對OV7670 內(nèi)部寄存器設(shè)置
相應(yīng)函數(shù)具體內(nèi)容如下:
Arduino 是近年來流行的開源硬件平臺[5],它是一種開源電子平臺。該平臺起源于意大利,主要基于AVR單片機(jī)微控制器和相應(yīng)的開發(fā)軟件而設(shè)計,具有高度的模塊化特點[6]。之所以選擇Arduino 是因為它是一款開源電子原型平臺,不管硬件還是軟件在網(wǎng)上都是開源的,在開源協(xié)議范圍內(nèi)里可以隨意針對原有點設(shè)計以及代碼進(jìn)行裁剪改編,并且它具有使用類似Java、C 語言的Processing/Wiring 開發(fā)環(huán)境,與上位機(jī)開發(fā)軟件同屬于一個系列,整體上保證了軟件開發(fā)的流暢性。系統(tǒng)程序整體流程圖如圖3所示。
圖3 系統(tǒng)程序流程圖
在本設(shè)計中采用了B/S 框架模式,該架構(gòu)具備運行穩(wěn)定、操作簡單、維護(hù)容易等特性[7];使用的編程工具是ASP.NET,它實質(zhì)上就是ASP 的升級版本。它保留了傳統(tǒng)技術(shù)的一些優(yōu)勢,同時又結(jié)合平臺進(jìn)行補(bǔ)充使其具備更強(qiáng)大的功能與性能[8]。由于下位機(jī)要定時大量傳送環(huán)境參數(shù)等信息,使用的后臺數(shù)據(jù)庫是Oracle 11g,它性能高、伸展性強(qiáng)、可用性和安全性好,且能方便地在低成本服務(wù)器和存儲設(shè)備組成的網(wǎng)格上運行。
上位服務(wù)網(wǎng)站收集從下位機(jī)各客戶端回傳過來的溫濕度、光照、二氧化碳和作物的圖像等信息,能夠把這些有用的數(shù)據(jù)放到數(shù)據(jù)中存儲備用。網(wǎng)站使用SOL 技術(shù)按照前端用戶的需求把數(shù)據(jù)顯示到網(wǎng)頁上。ASP.NET 使用3 層的分布式應(yīng)用模型,按功能劃分為3 個組件。基于三層模型開發(fā)的系統(tǒng)也有利于后期系統(tǒng)的升級與維護(hù)[9],各個應(yīng)用組件根據(jù)它們所在的層分布在不同的位置上。普通用戶僅需要一臺可以上互聯(lián)網(wǎng)的機(jī)器,并安裝相應(yīng)的網(wǎng)頁瀏覽(如InternetExplorer)工具,就可以使用本系統(tǒng)。系統(tǒng)流程圖如圖4 所示。
圖4 系統(tǒng)流程圖
該農(nóng)作物病蟲害檢測專家系統(tǒng)具有的主要功能有:可實時在線顯示作物生長環(huán)境參數(shù)信息,并可以按照時間查詢相關(guān)的環(huán)境參數(shù),針對數(shù)據(jù)中已經(jīng)收集的信息通過內(nèi)部數(shù)據(jù)的分析計算給出作物長勢建議,并對病發(fā)的作物作出分析診斷,同時會把病發(fā)作物的現(xiàn)場圖片通過網(wǎng)絡(luò)的方式傳輸給專家,讓專家在第一時間給出診斷治療意見。
作物信息采集的智能化和信息化是實施精細(xì)農(nóng)業(yè)的關(guān)鍵技術(shù)之一[10]。課題組針對農(nóng)業(yè)生產(chǎn)植物病害與生長環(huán)境監(jiān)測診斷需要,將當(dāng)前流行的嵌入式、電子通信、數(shù)據(jù)庫大數(shù)據(jù)等多種技術(shù)應(yīng)用在溫室大棚監(jiān)測管控中,為遠(yuǎn)程的管理者和專家提供了定時間隔的作物生產(chǎn)環(huán)境信息與作物圖像信息,從而讓不能深入現(xiàn)場的專家掌握作物第一手生長或者病發(fā)資料,為農(nóng)業(yè)的豐產(chǎn)高產(chǎn)保駕護(hù)航,以促進(jìn)我國農(nóng)業(yè)建設(shè)的智能化和信息化發(fā)展。