鐔曉剛 高國偉 張立強(qiáng) 趙云杰
農(nóng)業(yè)生產(chǎn)在我國的經(jīng)濟(jì)發(fā)展中具有重要地位,其中,果園栽培、大棚蔬菜中的很多品種,對土壤濕度有著極高的要求。農(nóng)用土壤濕度反應(yīng)了農(nóng)作物的水分供應(yīng)狀況。土壤濕度不當(dāng)時(shí),不僅嚴(yán)重影響其正常生長,甚至?xí)?dǎo)致種植品死亡,造成農(nóng)民嚴(yán)重的經(jīng)濟(jì)損失。土壤濕度低,形成土壤干旱,農(nóng)作物的光合作用不能正常進(jìn)行,將會(huì)降低農(nóng)作物的產(chǎn)量和品質(zhì),嚴(yán)重缺水會(huì)導(dǎo)致農(nóng)作物凋萎和死亡。土壤濕度高,將會(huì)惡化農(nóng)用土通氣性,影響土壤微生物的活動(dòng),使農(nóng)作物根系的呼吸、生長等生命活動(dòng)受到阻礙,從而影響作物地上部分的生長,造成病害滋生。土壤水分的多少還影響田間耕作措施和播種質(zhì)量,并影響土壤溫度的高低。另外,我國的水資源十分有限,傳統(tǒng)的漫蓋澆法還會(huì)造成水資源的浪費(fèi)。
為此,農(nóng)民非常需要一種成本低、體積小且檢測可靠的土壤濕度控制器,用以對土壤環(huán)境的濕度進(jìn)行檢測和控制,以實(shí)現(xiàn)數(shù)據(jù)采集濕度調(diào)節(jié)等各項(xiàng)功能[1]。為了解決以上問題,本文設(shè)計(jì)了高穩(wěn)定性、低成本的農(nóng)用土壤濕度控制器。
該控制器主要是依靠土壤濕度傳感器感知土壤濕度,單片機(jī)可對土壤濕度進(jìn)行實(shí)時(shí)A/D轉(zhuǎn)換,通過開發(fā)環(huán)境自帶的串口監(jiān)視器實(shí)時(shí)顯示濕度數(shù)據(jù),并根據(jù)實(shí)際情況來驅(qū)動(dòng)繼電器帶動(dòng)水泵進(jìn)行灌溉,起到高效灌溉、節(jié)水、節(jié)能的作用。
農(nóng)用土壤濕度控制器系統(tǒng)由土壤濕度傳感器、Arduino Nano開發(fā)板、一路帶光耦繼電器、水泵、電源組成。系統(tǒng)框圖如圖1所示 。
土壤濕度傳感器首先會(huì)檢測土壤的濕度,將采樣濕度信號傳送給Arduino Nano開發(fā)板,根據(jù)編寫的程序,Arduino開發(fā)板會(huì)判別該濕度信號,是否小于設(shè)定的閥值,若小于設(shè)定的閥值,說明土壤干燥,繼電器會(huì)使水泵開啟,水泵將向土壤進(jìn)行蓄水。蓄水后,土壤濕度傳感器會(huì)再次檢測土壤濕度,當(dāng)達(dá)到設(shè)定的閥值時(shí),繼電器會(huì)關(guān)斷水泵,水泵將會(huì)停止向土壤蓄水。
1、Arduino模塊
Arduino是一款便捷靈活的開源電子平臺(tái),由歐洲團(tuán)隊(duì)開發(fā)完成并且由硬件部分和軟件部分組成。其中硬件部分是可以用來做電路連接的Arduino電路板,該電路板有很多種型號,包括Arduino Uno,Arduino Nano,Arduino LilyPad等等。軟件部分是ArduinoIDE程序開發(fā)環(huán)境。
由于該土壤濕度控制器具有成本低、體積小、開發(fā)周期短的特點(diǎn),因此本文選用Arduino Nano開發(fā)板,該開發(fā)板能通過濕度傳感器感知農(nóng)用土壤的濕度,通過控制水泵等裝置來給土壤補(bǔ)充水分。Arduino Nano是Arduino USB接口的微型版本,最大的不同是沒有電源插座以及USB接口是Mini-B型插座。Arduino Nano是尺寸非常小的而且可以直接插在面包板上使用。其處理器核心是ATmega168(Nano2.x)和ATmega328(Nano3.0),同時(shí)具有14路數(shù)字輸入/輸出口(其中6路可作為PWM輸出),8路模擬輸入,一個(gè)16MHz晶體振蕩器,一個(gè)mini-B USB口,一個(gè)ICSP header和一個(gè)復(fù)位按鈕[2]。Arduino Nano開發(fā)板基本參數(shù)如表1所示,實(shí)物圖如圖2所示。
表1 Arduino Nano開發(fā)板基本參數(shù)
表2 主控芯片ATMEGA328P基本參數(shù)
2、主控芯 片ATmega328P
本文選取主控芯片為ATmega328P,ATmega328P主要特性如下:高性能、低功耗的 8 位AVR 微處理器;先進(jìn)的RISC 結(jié)構(gòu);非易失性程序和數(shù)據(jù)存儲(chǔ)器。其外設(shè)特點(diǎn):兩個(gè)具有獨(dú)立預(yù)分頻器和比較器功能的8位定時(shí)器/計(jì)數(shù)器;一個(gè)具有預(yù)分頻器、比較功能和捕捉功能的16位定時(shí)器/計(jì)數(shù)器;具有獨(dú)立振蕩器的實(shí)時(shí)計(jì)數(shù)器RTC;六通道PWM;8路10 位ADC;可編程的串行USART;可工作于主機(jī)/ 從機(jī)模式的SPI串行接口 ;基于字節(jié)的2-wire串行接口;具有獨(dú)立片內(nèi)振蕩器的可編程看門狗定時(shí)器;片內(nèi)模擬比較器;引腳電平變化可引發(fā)中斷及喚醒MCU。
特殊的微控制器特點(diǎn):上電復(fù)位(POR) 以及可編程的掉電檢測(BOD);經(jīng)過校準(zhǔn)的片內(nèi)RC 振蕩器;片內(nèi)、片外中斷源;6種休眠模式:空閑模式、ADC 噪聲抑制模式、省電模式、掉電模式、待機(jī)模式和延長待機(jī)模式。ATMEGA328P基本參數(shù)如表2所示,電路原理圖如圖3所示。
2、土壤濕度傳感器模塊
本系統(tǒng)采用的傳感器為 FC-28土壤濕度傳感器,該傳感器是利用的水分不一樣時(shí)對傳感器的電阻值影響不一樣,導(dǎo)致傳感器的電阻值發(fā)生變化,由此可以得出土壤的水分值。為了方便使用該模塊,本文對從模塊進(jìn)行了擴(kuò)展,增加了一個(gè)電位器和一個(gè)比較器,這樣可以通過比較器直接輸出數(shù)字信號,這樣使得操作更為方便直觀。
比較器采用的是LM393。LM393是雙電壓比較器集成電路;工作電源電壓范圍寬,單電源、雙電源均可工作。消耗電流小,ICC=0.8mA;輸人失調(diào)電壓小,VIO=±2mV;共模輸入電壓范圍寬,VIC=0~VCC-1.5V;輸出與TTL, DTL, MOS, CMOS等兼容;輸出可以用開路集電極連接“或”門[1]。
該模塊采用了一個(gè)10kΩ的電位器接在比較器LM393的負(fù)極,增加了一個(gè)電源指示燈,電源接通時(shí)電源指示燈亮。還增加了一個(gè)工作指示燈(開關(guān)指示燈),當(dāng)土壤水分很少時(shí),則這時(shí)電阻非常大,比較器輸出的是一個(gè)高電平,即D0(接單片機(jī))引腳輸出高電平,工作指示燈關(guān)。當(dāng)土壤水分高時(shí),比較器的正極電壓變低,則D0輸出低電平,這時(shí)工作指示燈變亮(水分過大)。D0引腳只能得到一個(gè)濕度的范圍,要想知道確切的濕度值,則還需從濕度傳感器的兩端電壓值中檢測出來把傳感器的電壓引腳A0引出來。由于電壓信號是模擬信號,所以再用A/D轉(zhuǎn)換器把該信號轉(zhuǎn)換成數(shù)字信號,就可以把水分的具體值顯示出來。擴(kuò)展后的實(shí)物圖如圖4所示。
3、繼電器模塊
光耦的作用主要是用來隔離傳輸、控制,可以防止干擾和故障擴(kuò)大化。由于光耦合器輸入輸出間互相隔離,電信號傳輸具有單向性等特點(diǎn),因而具有良好的電絕緣能力和抗干擾能力。又由于光耦合器的輸入端屬于電流型工作的低阻元件,因而具有很強(qiáng)的共模抑制能力。所以,它在長線傳輸信息中作為終端隔離元件可以大大提高信噪比。基于上述優(yōu)點(diǎn),本文選用一路帶光耦繼電器,該繼電器的特點(diǎn)是可以設(shè)置高低電平觸發(fā);可以單獨(dú)供電JD-VCC;IN信號輸入電壓:0-5V。它的主要作用是用來控制水泵的開關(guān)。當(dāng)采樣濕度信號小于閥值時(shí),繼電器控制水泵運(yùn)行。當(dāng)采樣濕度信號大于閥值時(shí),繼電器控制水泵停止運(yùn)行。一路帶光耦繼電器如圖5所示。
4、水泵模塊
本文選用額定電壓為9V,額定電流為1A的的水泵。最大吸程可以達(dá)到2m,流量大約為1.5~2L/min。完全可以滿足實(shí)驗(yàn)的要求。實(shí)物圖如圖6所示。
5、系統(tǒng)電路總體連接示意圖
Arduino Nano供電方式我們采用mini-B USB接口供電,工作電壓+5V,因此VCC1、VCC2都為+5V。濕度傳感器數(shù)字量輸出端D0與Arduino Nano數(shù)字I/O端D0直接相連,通過Arduino Nano來檢測高低電平,由此來檢測土壤濕度。光耦繼電器IN1端口與Arduino Nano數(shù)字I/O端D1直接相連,IN1端接收D1端的高低電平信號,進(jìn)一步控制繼電器吸合,起到了開關(guān)的作用。繼電器、水泵和直流電源+9V串聯(lián)連接。系統(tǒng)電路連接示意圖如圖7所示。
軟件代碼采用C++語言編寫,使用arduino集成開發(fā)環(huán)境(IDE)進(jìn)行開發(fā),該軟件能夠進(jìn)行程序的編輯、編譯、調(diào)試和下載等操作,簡單易用。通過IDE串口監(jiān)視器可以讀取當(dāng)前采集的濕度值。根據(jù)土壤灌溉的實(shí)際情況,設(shè)定濕度的上下閾值,判斷繼電器應(yīng)該處于開啟還是關(guān)閉狀態(tài),進(jìn)一步控制電機(jī)驅(qū)動(dòng)水泵進(jìn)行灌溉。
土壤濕度控制器的軟件設(shè)計(jì)流程如圖8所示。軟件設(shè)計(jì)流程如下:首先整個(gè)系統(tǒng)上電并等待系統(tǒng)初始化,初始化完畢后,土壤濕度傳感器采集濕度信號,arduino檢測到濕度值后與設(shè)定的濕度閾值相比較,如果當(dāng)前的濕度值小于系統(tǒng)設(shè)定的閾值時(shí),繼電器開啟,水泵開始給土壤蓄水;如果當(dāng)前的濕度值大于等于系統(tǒng)設(shè)定的閾值時(shí),繼電器關(guān)閉,水泵停止蓄水。最后延時(shí)1000ms,待系統(tǒng)讀取當(dāng)前的濕度值,并進(jìn)入下一次循環(huán)中。
系統(tǒng)軟件部分可以實(shí)現(xiàn)功能:實(shí)時(shí)采集土壤濕度值,精確控制水泵蓄水;利用上位機(jī)串口調(diào)試工具在線讀取當(dāng)前土壤濕度值和繪制濕度曲線。
土壤濕度傳感器在軟硬件調(diào)試完成后進(jìn)行性能測試。上電后即將程序下載到arduino,系統(tǒng)可以正常的工作,能實(shí)時(shí)顯示出當(dāng)前的土壤濕度值。當(dāng)檢測到的濕度值低于臨當(dāng)濕度值低于所設(shè)定的濕度值(即植物需要澆水的臨界濕度值)時(shí),傳感器指示燈滅,顯示器顯示干燥狀態(tài),系統(tǒng)開始控制水泵進(jìn)行自動(dòng)灌溉。
濕度傳感器繼續(xù)采集數(shù)據(jù),當(dāng)灌溉過程中其采集到的數(shù)據(jù)高于所設(shè)定的另一濕度值(即植物不需要在澆水的臨界濕度值)時(shí),指示燈變亮,顯示器顯示潮濕狀態(tài),控制器使水泵停止灌溉,經(jīng)過反復(fù)多次測試,濕度傳感器靈敏度比較高,系統(tǒng)的響應(yīng)及時(shí)、穩(wěn)定。[3]實(shí)驗(yàn)測試結(jié)果表明土壤濕度控制器設(shè)計(jì)能夠滿足農(nóng)用的需要。系統(tǒng)的測試圖如圖9所示。
通過在Arduino IDE軟件環(huán)境中編寫程序,利用Arduino nano開發(fā)板與土壤濕度傳感器,一路帶光耦繼電器、水泵之間的相互配合,實(shí)現(xiàn)了對農(nóng)用土壤濕度的控制,并且實(shí)現(xiàn)了土壤濕度控制設(shè)備成本低,體積小的目標(biāo),實(shí)際運(yùn)用效果較為良好。