張學(xué)芹
關(guān)鍵詞:自動(dòng)灌溉系統(tǒng);單片機(jī);STM32F103
全球氣候變化和人口增長(zhǎng)使得農(nóng)業(yè)面臨著越來越大的挑戰(zhàn)。為了滿足不斷增長(zhǎng)的糧食需求,農(nóng)業(yè)生產(chǎn)需要提高效率和產(chǎn)量。然而,傳統(tǒng)的農(nóng)業(yè)灌溉方法通常浪費(fèi)水資源,并且無法滿足植物的精確灌溉需求。單片機(jī)可以作為控制中心,接收來自傳感器的數(shù)據(jù),并根據(jù)預(yù)設(shè)的灌溉算法進(jìn)行決策和控制。通過編程和硬件設(shè)計(jì),可以實(shí)現(xiàn)高度自動(dòng)化的灌溉過程,提高灌溉的效率和精確性。本文基于單片機(jī)設(shè)計(jì)一種自動(dòng)灌溉系統(tǒng),希望能為相關(guān)農(nóng)業(yè)系統(tǒng)發(fā)展提供參考。
1 自動(dòng)灌溉系統(tǒng)需求分析
1) 系統(tǒng)需要能夠準(zhǔn)確地監(jiān)測(cè)土壤濕度,以確定植物的水分需求。可以使用濕度傳感器或土壤水分傳感器來實(shí)現(xiàn)土壤濕度的監(jiān)測(cè)。2) 系統(tǒng)需要能夠根據(jù)植物的生長(zhǎng)階段和環(huán)境條件制定合理的灌溉計(jì)劃。這可以通過預(yù)設(shè)的程序或算法來實(shí)現(xiàn),并可以根據(jù)需要手動(dòng)調(diào)整。3) 系統(tǒng)需要具備節(jié)水功能,避免過度灌溉和水資源的浪費(fèi)。可以通過根據(jù)實(shí)時(shí)數(shù)據(jù)動(dòng)態(tài)調(diào)整,或者設(shè)置灌溉量上限來實(shí)現(xiàn)節(jié)水效果。4) 系統(tǒng)需要提供用戶友好的界面,讓用戶可以進(jìn)行監(jiān)測(cè)系統(tǒng)狀態(tài)、設(shè)置參數(shù)、調(diào)整灌溉計(jì)劃等操作,可以使用顯示屏、按鍵或者手機(jī)應(yīng)用程序等形式來實(shí)現(xiàn)。5) 系統(tǒng)需要具備穩(wěn)定可靠的運(yùn)行特性,能夠適應(yīng)各種環(huán)境條件和應(yīng)對(duì)突發(fā)狀況。同時(shí),系統(tǒng)需要具備安全防護(hù)措施,以防止未經(jīng)授權(quán)的訪問或操作。
2 總體方案設(shè)計(jì)
2.1 整體方案
本次基于單片機(jī)的自動(dòng)灌溉系統(tǒng)包括主控模塊、執(zhí)行器(舵機(jī)、水泵)模塊、溫濕度監(jiān)測(cè)模塊、用戶交互模塊和顯示報(bào)警模塊等。主控模塊作為系統(tǒng)的核心,負(fù)責(zé)數(shù)據(jù)處理、決策控制和與其他模塊的通信。執(zhí)行器模塊包括舵機(jī)模塊和水泵模塊,通過主控模塊的控制實(shí)現(xiàn)對(duì)作物的保溫和灌溉。用戶交互模塊通過按鍵和顯示模塊實(shí)現(xiàn)用戶與系統(tǒng)的交互和參數(shù)設(shè)定。報(bào)警模塊用于監(jiān)測(cè)溫度異常并提醒用戶注意。通過以上模塊的協(xié)作,實(shí)現(xiàn)自動(dòng)灌溉系統(tǒng)的設(shè)計(jì)和功能實(shí)現(xiàn)。整體方面示意圖如圖1所示。
2.2 芯片選擇
本次選擇的芯片是STM32F103,STM32F103系列芯片具有高性能、豐富的外設(shè)接口、大容量存儲(chǔ)器、低功耗特性、多種封裝和存儲(chǔ)器選項(xiàng)、成熟的開發(fā)生態(tài)系統(tǒng)以及良好的可靠性和穩(wěn)定性等優(yōu)勢(shì),適用于各種嵌入式應(yīng)用[1]。STM32F103 系列芯片采用ARMCortex-M3內(nèi)核,具有高性能的處理能力和優(yōu)異的運(yùn)算速度。其工作頻率可達(dá)到72 MHz,能夠處理復(fù)雜的算法和任務(wù)[2]。STM32F103系列芯片提供了豐富的外設(shè)接口,包括多個(gè)通用輸入/輸出端口(GPIO) 、通用定時(shí)器、串行接口(USART、SPI、I2C等)、模擬輸入/輸出(ADC、DAC) 等。這些接口可滿足各種應(yīng)用需求,方便系統(tǒng)地?cái)U(kuò)展和連接其他外部設(shè)備。STM32F103系列芯片具有較大的閃存和SRAM容量,可以存儲(chǔ)更多的程序代碼和數(shù)據(jù)。閃存容量從64 KB到512 KB不等,SRAM容量從20 KB到64 KB不等,滿足不同應(yīng)用的存儲(chǔ)需求。同時(shí),STM32F103芯片采用了低功耗設(shè)計(jì),在保證高性能的同時(shí),能夠有效降低功耗消耗[3]。
3 基于單片機(jī)的自動(dòng)灌溉系統(tǒng)的硬件設(shè)計(jì)
3.1 主控模塊
基于STM32F103的主控模塊是整個(gè)自動(dòng)灌溉系統(tǒng)的核心部分,負(fù)責(zé)傳感器數(shù)據(jù)的采集、處理、決策控制以及與其他模塊的通信。主控模塊使用STM32F103 系列芯片作為主控芯片,該系列芯片基于ARMCortex-M3內(nèi)核,具有豐富的外設(shè)接口和較高的性能。連接所需的傳感器和執(zhí)行器模塊,包括土壤濕度傳感器、溫度傳感器、濕度傳感器、舵機(jī)模塊、水泵模塊等。配置適當(dāng)?shù)囊_連接和電源供應(yīng),確保與其他模塊的通信和控制。
3.2 溫度檢測(cè)模塊
本系統(tǒng)采用DS18B20溫度傳感器作為溫度檢測(cè)模塊,DS18B20是一款數(shù)字溫度傳感器,具有單總線接口和高精度測(cè)量性能[4]。連接DS18B20模塊的引腳包括數(shù)據(jù)線、電源線和地線,確保與主控模塊的通信正常,需要為DS18B20提供合適的電源供應(yīng),并根據(jù)實(shí)際情況添加上拉電阻。
3.3 舵機(jī)模塊
舵機(jī)模塊的設(shè)計(jì)主要涉及舵機(jī)的選型和與主控模塊的連接,選擇的舵機(jī)來實(shí)現(xiàn)溫度過低時(shí)的棉被覆蓋操作。舵機(jī)具有控制角度的能力,可在一定范圍內(nèi)旋轉(zhuǎn)。也應(yīng)當(dāng)考慮選擇具有適當(dāng)轉(zhuǎn)動(dòng)角度范圍、扭矩和響應(yīng)速度的舵機(jī),以滿足覆蓋棉被的需求[5]。在連接部分需要將舵機(jī)的控制線連接到主控模塊的一個(gè)PWM輸出引腳。舵機(jī)通常需要PWM信號(hào)來控制其角度,確保舵機(jī)的電源和地線與主控模塊的電源和地線連接。在使用舵機(jī)模塊之前,需要進(jìn)行舵機(jī)的角度校準(zhǔn)。校準(zhǔn)過程通常涉及將舵機(jī)調(diào)整到特定的初始位置,并記錄相關(guān)的PWM信號(hào)值。
3.4 水泵模塊
水泵模塊設(shè)計(jì)旨在實(shí)現(xiàn)抽水和灌溉功能。根據(jù)系統(tǒng)需求和灌溉區(qū)域的大小,選擇適合的水泵。考慮水泵的流量、揚(yáng)程和功率等參數(shù),確保能夠滿足系統(tǒng)的灌溉需求。水泵應(yīng)具備穩(wěn)定性和耐用性,并能適應(yīng)所用的水源類型(如自來水、井水等)。基于上述要求,本次自動(dòng)灌溉系統(tǒng)采用的水泵為SG型高效臥式雙吸中開泵。將SG型高效臥式雙吸中開泵與主控模塊連接,通過適當(dāng)?shù)碾娫垂?yīng)和電路保護(hù)措施確保水泵的正常工作。根據(jù)SG型高效臥式雙吸中開泵的電源要求,配置合適的電源電壓和電流。在電路中加入適當(dāng)?shù)碾妷悍€(wěn)定器和電流保護(hù)電路,以保護(hù)SG型高效臥式雙吸中開泵和其他電路免受電源波動(dòng)和過電流的影響。使用繼電器或場(chǎng)效應(yīng)管等開關(guān)元件,通過主控模塊的控制信號(hào)來控制水泵的啟停。
3.5 顯示報(bào)警模塊
基于LCD1062的顯示模塊是自動(dòng)灌溉系統(tǒng)中用于實(shí)時(shí)顯示系統(tǒng)狀態(tài)、傳感器數(shù)據(jù)和其他相關(guān)信息的重要組件。本次灌溉系統(tǒng)使用LCD1062液晶顯示屏模塊,該模塊具有高分辨率、良好的視角和豐富的顯示功能,適合用于顯示系統(tǒng)信息。連接LCD1062模塊的數(shù)據(jù)引腳(數(shù)據(jù)線、使能線等)和控制引腳(讀寫使能、復(fù)位等),確保與主控模塊的通信正常。
4 基于單片機(jī)的自動(dòng)灌溉系統(tǒng)的軟件設(shè)計(jì)
4.1 主控模塊
基于STM32F103的主控模塊負(fù)責(zé)整個(gè)系統(tǒng)的控制和協(xié)調(diào)。通過硬件設(shè)計(jì)和軟件設(shè)計(jì)的協(xié)同工作,實(shí)現(xiàn)對(duì)傳感器數(shù)據(jù)的采集和處理、決策控制、與執(zhí)行器模塊和用戶交互模塊的通信以及系統(tǒng)狀態(tài)的監(jiān)測(cè)與報(bào)警等功能。系統(tǒng)使用STM32CubeIDE開發(fā)環(huán)境進(jìn)行嵌入式軟件的開發(fā),編寫軟件程序來實(shí)現(xiàn)傳感器數(shù)據(jù)的采集和處理,包括讀取土壤濕度、溫度、濕度等傳感器的數(shù)據(jù)。設(shè)計(jì)算法和邏輯來根據(jù)傳感器數(shù)據(jù)進(jìn)行決策控制,例如根據(jù)土壤濕度判斷是否需要進(jìn)行灌溉,根據(jù)溫度判斷是否需要啟動(dòng)舵機(jī)模塊進(jìn)行保溫覆蓋等。與執(zhí)行器模塊進(jìn)行通信,通過控制舵機(jī)模塊和水泵模塊的工作狀態(tài)來實(shí)現(xiàn)灌溉和保溫控制。與用戶交互模塊進(jìn)行通信,接收用戶的輸入指令和參數(shù)設(shè)定,并根據(jù)用戶的選擇切換自動(dòng)或手動(dòng)模式,調(diào)整閾值設(shè)定。監(jiān)測(cè)系統(tǒng)狀態(tài)包括傳感器數(shù)據(jù)、執(zhí)行器模塊狀態(tài)和報(bào)警狀態(tài)等,并與顯示模塊進(jìn)行通信,發(fā)送相關(guān)數(shù)據(jù)供顯示,通過串口、I2C、SPI等接口與其他模塊進(jìn)行通信,包括與顯示模塊進(jìn)行數(shù)據(jù)傳輸和與報(bào)警模塊進(jìn)行觸發(fā)報(bào)警信號(hào)。系統(tǒng)流程圖如圖2所示。
4.2 溫度檢測(cè)模塊
首先,在主控模塊的軟件中配置GPIO口用于與DS18B20 通信,并設(shè)置相應(yīng)的引腳狀態(tài)(輸入或輸出)。然后,編寫驅(qū)動(dòng)程序來實(shí)現(xiàn)與DS18B20的通信和數(shù)據(jù)采集。DS18B20采用1-Wire總線協(xié)議進(jìn)行通信,因此需要在軟件中實(shí)現(xiàn)相應(yīng)的協(xié)議解析和數(shù)據(jù)讀取。通過發(fā)送指令,主控模塊向DS18B20請(qǐng)求溫度數(shù)據(jù),并接收傳感器返回的數(shù)據(jù)。根據(jù)DS18B20提供的溫度計(jì)算公式,將接收到的原始數(shù)據(jù)轉(zhuǎn)換為實(shí)際溫度值。DS18B20傳感器可能存在溫度偏差,因此可以進(jìn)行校準(zhǔn)以提高測(cè)量的準(zhǔn)確性。在系統(tǒng)初始化或設(shè)定階段,用戶可以采集環(huán)境中已知的溫度值,并與DS18B20測(cè)量到的值進(jìn)行對(duì)比校準(zhǔn)。根據(jù)校準(zhǔn)結(jié)果,可以通過軟件程序?qū)y(cè)量的溫度值進(jìn)行修正,提高系統(tǒng)的測(cè)量準(zhǔn)確性。用戶可以通過用戶交互模塊(如按鍵模塊)設(shè)定溫度閾值,用于系統(tǒng)的溫度控制。根據(jù)設(shè)定的閾值,主控模塊可以根據(jù)測(cè)得的溫度值來判斷是否觸發(fā)相應(yīng)的保溫措施或報(bào)警。
4.3 舵機(jī)模塊
在主控模塊的軟件程序中,需要使用適當(dāng)?shù)腜WM輸出庫(kù)函數(shù)控制舵機(jī)的角度。根據(jù)溫度數(shù)據(jù)和設(shè)定的閾值,主控模塊可以計(jì)算出覆蓋棉被的需要程度,并生成相應(yīng)的PWM信號(hào)來控制舵機(jī)的角度??梢允褂弥饾u增加或減小的PWM信號(hào)來實(shí)現(xiàn)平滑的舵機(jī)運(yùn)動(dòng),以避免突然變化或振蕩。在軟件程序中,可以根據(jù)校準(zhǔn)過程中記錄的PWM信號(hào)值來調(diào)整舵機(jī)的角度。通過上述設(shè)計(jì),主控模塊可以通過生成PWM 信號(hào)來控制舵機(jī)的角度,從而實(shí)現(xiàn)溫度過低時(shí)的棉被覆蓋操作。主控模塊根據(jù)溫度數(shù)據(jù)和設(shè)定的閾值決定是否觸發(fā)舵機(jī)動(dòng)作,并根據(jù)需要調(diào)整PWM信號(hào)的占空比,控制舵機(jī)的角度以達(dá)到保溫的目的。
4.4 水泵模塊
在水泵模塊的軟件層面,需要基于SG型高效臥式雙吸中開泵的特點(diǎn)設(shè)計(jì)控制邏輯,以求在主控模塊的軟件中,實(shí)現(xiàn)控制水泵的邏輯。根據(jù)系統(tǒng)的需求和傳感器數(shù)據(jù)(如土壤濕度),確定灌溉的觸發(fā)條件和灌溉時(shí)間。當(dāng)達(dá)到觸發(fā)條件時(shí),主控模塊發(fā)送控制信號(hào)給水泵模塊,啟動(dòng)SG型高效臥式雙吸中開泵進(jìn)行灌溉。灌溉時(shí)間可以根據(jù)系統(tǒng)需要設(shè)定固定時(shí)間或通過傳感器數(shù)據(jù)動(dòng)態(tài)調(diào)整。定時(shí)器可以用于控制灌溉時(shí)間的精確控制,通過定時(shí)器中斷或輪詢檢測(cè)的方式,實(shí)現(xiàn)灌溉時(shí)間的計(jì)時(shí)和水泵的停止控制。
同時(shí)還要基于SG型高效臥式雙吸中開泵的運(yùn)行特點(diǎn)考慮系統(tǒng)的安全性和節(jié)約資源的目標(biāo),設(shè)計(jì)相應(yīng)的保護(hù)機(jī)制。添加水位傳感器或液位開關(guān)來檢測(cè)水源是否充足,避免水泵在水源不足的情況下工作,以防止損壞??紤]溫度保護(hù),當(dāng)溫度過高時(shí),通過溫度傳感器檢測(cè)到并停止水泵工作,以防止過熱和損壞。設(shè)計(jì)故障檢測(cè)機(jī)制,通過監(jiān)測(cè)水泵的電流、壓力或其他參數(shù),檢測(cè)水泵是否正常工作。當(dāng)檢測(cè)到異常情況時(shí),主控模塊可以觸發(fā)報(bào)警,例如發(fā)出聲音警報(bào)、發(fā)送短信或通過顯示模塊顯示故障信息。通過以上設(shè)計(jì)方案,可以實(shí)現(xiàn)基于STM32的自動(dòng)灌溉系統(tǒng)的水泵模塊功能,實(shí)現(xiàn)灌溉的自動(dòng)化控制和保護(hù)機(jī)制。設(shè)計(jì)中應(yīng)考慮系統(tǒng)的可靠性、安全性和節(jié)約資源的目標(biāo),確保水泵的正常工作和系統(tǒng)的穩(wěn)定運(yùn)行。
4.5 顯示模塊
本次自動(dòng)灌溉系統(tǒng)根據(jù)LCD1062模塊的數(shù)據(jù)手冊(cè)編寫驅(qū)動(dòng)程序,實(shí)現(xiàn)與該模塊的通信和數(shù)據(jù)傳輸。定義合適的顯示格式和界面布局,將系統(tǒng)狀態(tài)、傳感器數(shù)據(jù)和其他信息以易于理解的方式顯示在LCD1062屏幕上。通過與主控模塊的通信,接收需要顯示的數(shù)據(jù),并根據(jù)需要進(jìn)行數(shù)據(jù)處理和格式轉(zhuǎn)換,以便在LCD1062屏幕上正確顯示。要求能夠顯示系統(tǒng)的工作狀態(tài),例如自動(dòng)模式還是手動(dòng)模式、灌溉狀態(tài)等;能夠顯示土壤濕度、溫度、濕度等傳感器采集到的實(shí)時(shí)數(shù)據(jù),以幫助用戶了解當(dāng)前環(huán)境條件;能夠顯示用戶操作的提示信息,例如按鍵操作提示、設(shè)定閾值成功提示等;能夠在系統(tǒng)檢測(cè)到異常情況時(shí),顯示相應(yīng)的報(bào)警信息,提醒用戶注意。
在LCD1062屏幕上顯示菜單選項(xiàng)或設(shè)置界面,通過與主控模塊的通信,接收用戶的輸入指令和參數(shù)設(shè)定。根據(jù)用戶的操作,切換自動(dòng)或手動(dòng)模式,調(diào)整閾值設(shè)定等,確保用戶與系統(tǒng)的交互順暢和靈活。通過以上設(shè)計(jì)和功能實(shí)現(xiàn),基于LCD1062的顯示模塊可以提供清晰、直觀的界面,將系統(tǒng)狀態(tài)、傳感器數(shù)據(jù)和其他信息直接展現(xiàn)給用戶,方便用戶了解系統(tǒng)運(yùn)行情況和進(jìn)行操作。
5 結(jié)束語(yǔ)
總的來說,基于單片機(jī)的自動(dòng)灌溉系統(tǒng)設(shè)計(jì)涉及多個(gè)模塊的協(xié)作和功能實(shí)現(xiàn)。通過合理的方案設(shè)計(jì)和系統(tǒng)集成,能夠?qū)崿F(xiàn)對(duì)植物灌溉的自動(dòng)化控制,提高效率和減少人工成本,為農(nóng)業(yè)生產(chǎn)提供便利和效益。同時(shí),研究還需要考慮系統(tǒng)的可靠性、安全性和節(jié)約資源的目標(biāo),確保系統(tǒng)的穩(wěn)定運(yùn)行和灌溉效果的優(yōu)化。