譚 燕,秦風元
(1.重慶三峽職業學院智能制造學院,重慶 404155;2.江蘇大學電氣信息工程學院,江蘇 鎮江 212013)
我國為世界13大最缺水國家之一,且農業方面的相關用水量占我國總用水量的1/2左右,而近年來電子科學技術的發展不斷推進了農業工程相關領域智能化的更新與完善[1-3]。因此,研究智能灌溉系統,提高灌溉系統的用水效率對節約水資源具有重要的意義。
Raspberry Pi是一種基于Linux操作系統的微信電腦,作為開源硬件領域的高階硬件產品,其在車輛工程、農業工程等方面有了廣泛應用[4-6]。姬江濤等通過Raspberry Pi設計一款智能蔬菜耕作設備,其耕作的株距合格率為94.91%,誤播率為5.09%,具有良好的工作性能[7]。楊柳等將Raspberry Pi應用于拖拉機的無人駕駛系統的研究中,該系統的響應時間為0.3 s左右,且舵機的角度偏差為3°[8]。張世昂等通過樹莓派研究設計了一種田間農作物的智能巡檢車,其能夠較好的完成巡檢車預期的各項巡檢要求[9]。本研究通過搭建Raspberry Pi 3b與相關傳感器的硬件系統,應用pyhton語言編寫控制與后臺程序,前端界面程序采用Html5、Css以及Java Script編寫,具有跨平臺、兼容性好、界面表現性好等優點。同時采用 MySQL 對數據進行存儲,系統自身的模糊運算控制器能夠根據數據庫中的數據輸出合適的灌水量,從而使所研究設備成為一個“云”平臺,達到智能化灌溉的目的。進而為智能灌溉設備的實現提供了新的思路。
從所研究灌溉系統的穩定性出發,選取的硬件包括Raspberry Pi 3b(圖1)、DHT11型空氣溫濕度檢測模塊(圖2)、卡默爾微型電機蠕動泵(圖3)、L298N型電機驅動模塊(圖4)、YL-69型土壤濕度計檢測模塊以及PCF8591型A/D轉化模塊(圖5)等。總體結構示意圖如圖6所示。

圖1 樹莓派3bFig.1 Raspberry Pi 3b

圖2 空氣溫濕度檢測模塊Fig.2 Air temperature and humidity detection module

圖3微型電機蠕動泵Fig.3 Micro motor peristaltic pump

圖4 電機驅動模塊Fig.4 Motor drive module

圖5 土壤濕度計檢測模塊與A/D轉化模塊Fig.5 Soil hygrometer detection module and A/D conversion module

圖6 硬件總體結構圖Fig.6 Hardware architecture
采用SD Formatte對樹莓派所安裝的16G內存卡進行格式化,將NOOBS安裝程序拷貝至內存卡中,并使內存卡插入樹莓派內用NOOBS安裝本研究所需的Linux Ubuntu mate系統(見圖7)。安裝系統之后,以局域網作為計算機與樹莓派的連接媒介,使計算機通過putty(見圖8)對樹莓派進行控制。

圖7 NOOBS界面Fig.7 NOOBS Interface

圖8 putty界面Fig.8 Puty Interface
本研究的智能灌溉系程序的編寫語言為Python3.5.2,選取Flask為Web的程序框架,選擇MySQL為數據庫。系統軟件的整體設計如圖9所示。

圖9 軟件整體結構框圖Fig.9 Software block diagram
圖9中相關傳感器通過獲取土壤溫度、空氣溫濕度等數值,將輸入存數到數據庫中,并通過WEB將其顯示,除此之外,控制程序將數據庫內的數據送入模糊算法,并將模糊算法的結果存入數據庫。WEB程序在整個過程中即可顯示相關結果,也可對整個系統進行操作控制。
Raspberry Pi 3b的開發語言主要為C語言與Python語言,因若采用C語言對整個系統進行編程會復雜且不便,從而加長了開發周期,故采用Python進行開發[10-12]。選擇B/S(Browser/Server)作為程序結構,Flask作為框架,采用BCM的編碼方式。打開Raspberry Pi 3b內 ootconfig.txt 文件,刪除文件內的##并保存,之后打開打開etcmodules文件,在文件內輸入 i2c_bcm2708和i2c-dev ,最后安裝SMBUS文件,從而來完成Raspberry Pi 3b的I2C的載入。
由于本研究中所選取土壤濕度計檢測模塊的PCF8591型A/D轉化模塊的引腳均為接地,故地址為0X48,二進制為1001000,通過A0、A1、A2來進行地址的修改。空氣溫濕度檢測模塊與Raspberry Pi 3b的GPIO連接,安裝Python-GPIO 模塊,從而給樹莓派傳入空氣溫度與濕度的二進制數值。電機的驅動模塊與Raspberry Pi 3b的GPIO20與21連接,通過編程使電機可以達到正反轉以及通過PWM的大小來進行變速工作與關閉。
為便于對編寫好的程序及時調用,避免重復的編程工作,對所編寫好的各模塊程序進行封裝,類視圖如圖10所示。

圖10 類視圖Fig.10 Category view
按照圖10所示類視圖分別對通過Python編程語言對土壤濕度計檢測模塊、空氣溫濕度檢測模塊、電機的驅動模塊的程序進行封裝。
采用Html5、Css以及Java Script對灌溉系統的登陸以及控制頁面進行設計,通過對css的添加、js的引用、添加泵的控制程序、空氣溫濕度和灌溉水量等表格生成按鈕的添加等來實現系統前端的全部設計。將前文中土壤濕度計檢測模塊、空氣溫濕度檢測模塊、電機的驅動模塊的程序導入,并安裝My SQL數據庫,通過Python在數據庫中建立table來對后續的試驗數據進行記載。對進入相關界面的賬戶名稱與密碼進行設置,最后對空氣的溫濕度、電機的正反轉以及調速相關程序進行設計。
為使灌溉系統通過采集土壤濕度計檢測模塊與空氣溫濕度檢測模塊的數據,從而調整電機的轉速,達到智能灌溉的目的,采用模糊算法作為控制系統的方法。
本研究采用的控制器為二維模糊控制器,測控量為土壤濕度與土壤濕度的變化,其中土壤濕度作為被控制量,詞集為:{負大,負大低,負中,負中低,負小,負小低,正零,正小低,正小,正中低,正中,正大低,正大},濕度的誤差、誤差變化以及濕度分別為A、B、C,其模糊集全部為:{FB,FBL,FM,FML,FS,FSL,0,ZSL,ZS,ZML,ZM,ZBL,ZB},對應的論域:{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6},為使系統盡快到達濕度設定值,建立模糊控制的規則,并對其變量進行賦值。由公式(1)將精確數值轉化為模糊值。
(1)
式中:a為精確數值上限;b為精確數值上限;X為精確數值;Y為模糊值;n為模糊值上、下限值(兩者對稱)。
在對被控制量以及電機的控制進行編程中,電機的控制需要計算其PWM值,計算流程如圖11所示。

圖11 電機PWM計算流程圖Fig.11 PWM flow chart of motor
圖11為計算電機PWM值,需將土壤、空氣的相關數值乘以權值系數。不同因素的權值系數不同,本研究采用AHP(即層次分析法)來求得各權值系數的大小。通過一致矩陣法建立判斷矩陣,以Santy法來求得矩陣內各元素的大小,結果為:

將其列向量歸一化、行向量求和以及歸一化,分別得到:
通過Aω=λω,求得λ=3.011。通過將ω四舍五入最終得到三因素的權值系數分為:0.69、0.19、0.12。
分別對系統進行服務器功能測試以及種植試驗。服務器功能試驗圖如圖12所示,其數值顯示、按鈕功能等均正常,符合預期設計要求。通過試驗設備系統(圖13)對單顆黃瓜幼苗進行試驗灌溉,試驗周期為90 d,黃瓜的移種、葉子的長出、開花如圖14所示(因授粉技術的限制,本實驗未結出果實)。

圖12 服務器前端功能測試圖Fig.12 Server front end function test chart

圖13 試驗設備系統Fig.13 Test equipment system

圖14 種植試驗Fig.14 Planting test
從圖14可以得知黃瓜幼苗到開花的生長過程良好,且通過系統統計得知,一周內黃瓜幼苗的澆水量約為20 mL左右,低于一般的人工澆水量。驗證了采用Raspberry Pi 3b研究精準灌溉系統的可行性。
(1)采用Raspberry Pi 3b、卡默爾微型電機蠕動泵等設計了智能灌溉系統的硬件部分。
(2)通過Python語言對智能灌溉系統程序控制與顯示等部分進行了編程。
(3)編寫模糊算法對智能灌溉系統的電機實現控制,并通過服務器功能測試以及種植試驗進行了驗證,表明了采用Raspberry Pi 3b研究精準灌溉系統的可行性。