鐔曉剛 高國偉 張立強 趙云杰
農業生產在我國的經濟發展中具有重要地位,其中,果園栽培、大棚蔬菜中的很多品種,對土壤濕度有著極高的要求。農用土壤濕度反應了農作物的水分供應狀況。土壤濕度不當時,不僅嚴重影響其正常生長,甚至會導致種植品死亡,造成農民嚴重的經濟損失。土壤濕度低,形成土壤干旱,農作物的光合作用不能正常進行,將會降低農作物的產量和品質,嚴重缺水會導致農作物凋萎和死亡。土壤濕度高,將會惡化農用土通氣性,影響土壤微生物的活動,使農作物根系的呼吸、生長等生命活動受到阻礙,從而影響作物地上部分的生長,造成病害滋生。土壤水分的多少還影響田間耕作措施和播種質量,并影響土壤溫度的高低。另外,我國的水資源十分有限,傳統的漫蓋澆法還會造成水資源的浪費。
為此,農民非常需要一種成本低、體積小且檢測可靠的土壤濕度控制器,用以對土壤環境的濕度進行檢測和控制,以實現數據采集濕度調節等各項功能[1]。為了解決以上問題,本文設計了高穩定性、低成本的農用土壤濕度控制器。
該控制器主要是依靠土壤濕度傳感器感知土壤濕度,單片機可對土壤濕度進行實時A/D轉換,通過開發環境自帶的串口監視器實時顯示濕度數據,并根據實際情況來驅動繼電器帶動水泵進行灌溉,起到高效灌溉、節水、節能的作用。
農用土壤濕度控制器系統由土壤濕度傳感器、Arduino Nano開發板、一路帶光耦繼電器、水泵、電源組成。系統框圖如圖1所示 。
土壤濕度傳感器首先會檢測土壤的濕度,將采樣濕度信號傳送給Arduino Nano開發板,根據編寫的程序,Arduino開發板會判別該濕度信號,是否小于設定的閥值,若小于設定的閥值,說明土壤干燥,繼電器會使水泵開啟,水泵將向土壤進行蓄水。蓄水后,土壤濕度傳感器會再次檢測土壤濕度,當達到設定的閥值時,繼電器會關斷水泵,水泵將會停止向土壤蓄水。


1、Arduino模塊
Arduino是一款便捷靈活的開源電子平臺,由歐洲團隊開發完成并且由硬件部分和軟件部分組成。其中硬件部分是可以用來做電路連接的Arduino電路板,該電路板有很多種型號,包括Arduino Uno,Arduino Nano,Arduino LilyPad等等。軟件部分是ArduinoIDE程序開發環境。
由于該土壤濕度控制器具有成本低、體積小、開發周期短的特點,因此本文選用Arduino Nano開發板,該開發板能通過濕度傳感器感知農用土壤的濕度,通過控制水泵等裝置來給土壤補充水分。Arduino Nano是Arduino USB接口的微型版本,最大的不同是沒有電源插座以及USB接口是Mini-B型插座。Arduino Nano是尺寸非常小的而且可以直接插在面包板上使用。其處理器核心是ATmega168(Nano2.x)和ATmega328(Nano3.0),同時具有14路數字輸入/輸出口(其中6路可作為PWM輸出),8路模擬輸入,一個16MHz晶體振蕩器,一個mini-B USB口,一個ICSP header和一個復位按鈕[2]。Arduino Nano開發板基本參數如表1所示,實物圖如圖2所示。

表1 Arduino Nano開發板基本參數

表2 主控芯片ATMEGA328P基本參數
2、主控芯 片ATmega328P
本文選取主控芯片為ATmega328P,ATmega328P主要特性如下:高性能、低功耗的 8 位AVR 微處理器;先進的RISC 結構;非易失性程序和數據存儲器。其外設特點:兩個具有獨立預分頻器和比較器功能的8位定時器/計數器;一個具有預分頻器、比較功能和捕捉功能的16位定時器/計數器;具有獨立振蕩器的實時計數器RTC;六通道PWM;8路10 位ADC;可編程的串行USART;可工作于主機/ 從機模式的SPI串行接口 ;基于字節的2-wire串行接口;具有獨立片內振蕩器的可編程看門狗定時器;片內模擬比較器;引腳電平變化可引發中斷及喚醒MCU。
特殊的微控制器特點:上電復位(POR) 以及可編程的掉電檢測(BOD);經過校準的片內RC 振蕩器;片內、片外中斷源;6種休眠模式:空閑模式、ADC 噪聲抑制模式、省電模式、掉電模式、待機模式和延長待機模式。ATMEGA328P基本參數如表2所示,電路原理圖如圖3所示。
2、土壤濕度傳感器模塊
本系統采用的傳感器為 FC-28土壤濕度傳感器,該傳感器是利用的水分不一樣時對傳感器的電阻值影響不一樣,導致傳感器的電阻值發生變化,由此可以得出土壤的水分值。為了方便使用該模塊,本文對從模塊進行了擴展,增加了一個電位器和一個比較器,這樣可以通過比較器直接輸出數字信號,這樣使得操作更為方便直觀。
比較器采用的是LM393。LM393是雙電壓比較器集成電路;工作電源電壓范圍寬,單電源、雙電源均可工作。消耗電流小,ICC=0.8mA;輸人失調電壓小,VIO=±2mV;共模輸入電壓范圍寬,VIC=0~VCC-1.5V;輸出與TTL, DTL, MOS, CMOS等兼容;輸出可以用開路集電極連接“或”門[1]。
該模塊采用了一個10kΩ的電位器接在比較器LM393的負極,增加了一個電源指示燈,電源接通時電源指示燈亮。還增加了一個工作指示燈(開關指示燈),當土壤水分很少時,則這時電阻非常大,比較器輸出的是一個高電平,即D0(接單片機)引腳輸出高電平,工作指示燈關。當土壤水分高時,比較器的正極電壓變低,則D0輸出低電平,這時工作指示燈變亮(水分過大)。D0引腳只能得到一個濕度的范圍,要想知道確切的濕度值,則還需從濕度傳感器的兩端電壓值中檢測出來把傳感器的電壓引腳A0引出來。由于電壓信號是模擬信號,所以再用A/D轉換器把該信號轉換成數字信號,就可以把水分的具體值顯示出來。擴展后的實物圖如圖4所示。



3、繼電器模塊
光耦的作用主要是用來隔離傳輸、控制,可以防止干擾和故障擴大化。由于光耦合器輸入輸出間互相隔離,電信號傳輸具有單向性等特點,因而具有良好的電絕緣能力和抗干擾能力。又由于光耦合器的輸入端屬于電流型工作的低阻元件,因而具有很強的共模抑制能力。所以,它在長線傳輸信息中作為終端隔離元件可以大大提高信噪比。基于上述優點,本文選用一路帶光耦繼電器,該繼電器的特點是可以設置高低電平觸發;可以單獨供電JD-VCC;IN信號輸入電壓:0-5V。它的主要作用是用來控制水泵的開關。當采樣濕度信號小于閥值時,繼電器控制水泵運行。當采樣濕度信號大于閥值時,繼電器控制水泵停止運行。一路帶光耦繼電器如圖5所示。
4、水泵模塊
本文選用額定電壓為9V,額定電流為1A的的水泵。最大吸程可以達到2m,流量大約為1.5~2L/min。完全可以滿足實驗的要求。實物圖如圖6所示。
5、系統電路總體連接示意圖
Arduino Nano供電方式我們采用mini-B USB接口供電,工作電壓+5V,因此VCC1、VCC2都為+5V。濕度傳感器數字量輸出端D0與Arduino Nano數字I/O端D0直接相連,通過Arduino Nano來檢測高低電平,由此來檢測土壤濕度。光耦繼電器IN1端口與Arduino Nano數字I/O端D1直接相連,IN1端接收D1端的高低電平信號,進一步控制繼電器吸合,起到了開關的作用。繼電器、水泵和直流電源+9V串聯連接。系統電路連接示意圖如圖7所示。




軟件代碼采用C++語言編寫,使用arduino集成開發環境(IDE)進行開發,該軟件能夠進行程序的編輯、編譯、調試和下載等操作,簡單易用。通過IDE串口監視器可以讀取當前采集的濕度值。根據土壤灌溉的實際情況,設定濕度的上下閾值,判斷繼電器應該處于開啟還是關閉狀態,進一步控制電機驅動水泵進行灌溉。
土壤濕度控制器的軟件設計流程如圖8所示。軟件設計流程如下:首先整個系統上電并等待系統初始化,初始化完畢后,土壤濕度傳感器采集濕度信號,arduino檢測到濕度值后與設定的濕度閾值相比較,如果當前的濕度值小于系統設定的閾值時,繼電器開啟,水泵開始給土壤蓄水;如果當前的濕度值大于等于系統設定的閾值時,繼電器關閉,水泵停止蓄水。最后延時1000ms,待系統讀取當前的濕度值,并進入下一次循環中。
系統軟件部分可以實現功能:實時采集土壤濕度值,精確控制水泵蓄水;利用上位機串口調試工具在線讀取當前土壤濕度值和繪制濕度曲線。
土壤濕度傳感器在軟硬件調試完成后進行性能測試。上電后即將程序下載到arduino,系統可以正常的工作,能實時顯示出當前的土壤濕度值。當檢測到的濕度值低于臨當濕度值低于所設定的濕度值(即植物需要澆水的臨界濕度值)時,傳感器指示燈滅,顯示器顯示干燥狀態,系統開始控制水泵進行自動灌溉。
濕度傳感器繼續采集數據,當灌溉過程中其采集到的數據高于所設定的另一濕度值(即植物不需要在澆水的臨界濕度值)時,指示燈變亮,顯示器顯示潮濕狀態,控制器使水泵停止灌溉,經過反復多次測試,濕度傳感器靈敏度比較高,系統的響應及時、穩定。[3]實驗測試結果表明土壤濕度控制器設計能夠滿足農用的需要。系統的測試圖如圖9所示。
通過在Arduino IDE軟件環境中編寫程序,利用Arduino nano開發板與土壤濕度傳感器,一路帶光耦繼電器、水泵之間的相互配合,實現了對農用土壤濕度的控制,并且實現了土壤濕度控制設備成本低,體積小的目標,實際運用效果較為良好。