[開源免費]基於STM32的全自動節水灌溉系統
——從傳感監測到智能控制的完整實踐方案
一、項目背景
隨着物聯網技術與嵌入式控制的發展,農業自動化逐漸從概念走向落地。傳統灌溉系統普遍存在“粗放式澆水、浪費水源、人工依賴度高”等問題,難以滿足現代農業對節水、高效、智能化的需求。
基於 STM32 微控制器的全自動節水灌溉系統,憑藉低功耗、高穩定性和強擴展性的優勢,成為一種成本可控、可廣泛部署的智能灌溉解決方案。
本文將從方案設計、核心功能、硬件架構到軟件流程進行全面解析,為你構建一個完整的“可落地、可複用、可優化”的智能灌溉項目。
源碼分享
直接放到之前寫的文章裏了,免費開源,下載學習即可。
https://blog.csdn.net/weixin_52908342/article/details/155599760
二、系統總體設計
整個系統圍繞“實時監測 + 智能判斷 + 自動控制 + 遠程通信”四大核心能力展開。整體架構如下:
- 控制核心:STM32F103C8T6 或 STM32F401 等 Cortex-M3/M4 微控制器
- 傳感器模塊:土壤濕度(電阻式/電容式)、光照強度、温濕度、雨滴檢測
- 執行機構:電磁閥、水泵、繼電器驅動模塊
- 通信模塊:ESP8266/WiFi、LoRa、4G 模塊(視部署環境選擇)
- 供電模塊:太陽能板 + 鋰電池 + DC-DC 穩壓
系統目標是自動判斷當前土壤狀態是否需要灌溉,並按需啓動電磁閥或水泵,同時根據天氣變化動態調節灌溉策略,實現深度節水。
三、核心功能設計
1. 實時土壤濕度監測
採用電容式土壤濕度傳感器,通過 ADC 採集模擬值並進行濾波處理。
軟件內部通過多點標定建立濕度—ADC 映射關係,得到最終濕度百分比。
uint16_t adc_value = ADC_GetValue();
float soil_humidity = map(adc_value, 800, 3000, 0, 100);
並進行均值濾波 + 中值濾波,減少環境噪聲干擾。
2. 智能灌溉策略控制
灌溉策略不再是“濕度低於閾值就澆水”這麼簡單,而是通過多維因素進行判斷:
| 參數 | 作用 |
|---|---|
| 土壤濕度 | 判斷是否缺水 |
| 光照強度 | 判斷是否處於曝曬狀態 |
| 空氣温濕度 | 估計蒸發速度 |
| 是否下雨 | 防止雨天灌溉 |
| 歷史灌溉時間 | 限制過多灌溉 |
策略示例:
如果 濕度 < 40% 且 無雨 且 (光照弱 或 温度較低)
則進行灌溉
否則
停止灌溉
這樣的組合策略顯著降低了不必要的澆水次數,實現真正節水。
3. 電磁閥和水泵控制
系統使用 MOSFET 或繼電器驅動電磁閥,並使用 PWM 控制水泵流量。
為了防止水泵幹轉,加入水位檢測和定時保護機制。
if (need_irrigation) {
Relay_ON();
Start_Timer(灌溉最大時長保護);
} else {
Relay_OFF();
}
4. 遠程監控功能(可選)
通過 ESP8266,將傳感數據上傳到服務器(如 OneNET、阿里雲 IoT,也可自建 MQTT 服務)。
用户可通過手機 App/網頁查看濕度、水泵狀態、歷史趨勢,並可手動遠程啓動灌溉。
數據上送示例:
{
"soil": 48,
"temp": 26,
"hum": 60,
"light": 320,
"pump": 0
}
5. 低功耗設計(重點)
户外部署長期運行必須考慮低功耗:
- 傳感器採用間歇性供電(GPIO 控電源)
- STM32 進入 Stop 模式,定時器喚醒
- ESP8266 僅在上報時短暫喚醒
最終整套系統可用太陽能 + 18650 電池實現全年自治供電。
四、硬件設計解析
1. 主控板(STM32)
- MCU:STM32F103(性價比高)
- 外設:ADC × 3、PWM、USART、I2C
- 保護:TVS、穩壓、反接保護
採取模塊化設計,方便後續擴展(如 CO₂、風速等傳感器)。
2. 傳感器模塊
- 土壤濕度:電容式(抗腐蝕、壽命長)
- 光照強度:光敏/TSL2561
- 雨滴檢測:模擬量 + 數字閾值
- 空氣温濕度:DHT22/SHT30
所有傳感器通過排針外接,便於更換與維護。
3. 執行機構
- 電磁閥:12V 農用閥,帶止回
- 水泵:12V/24V 直流水泵
- 繼電器板:光耦隔離
驅動部分需要加續流保護、防浪涌措施。
4. 電源系統
太陽能輸入 → MPPT 充電模塊 → 鋰電池 → DC-DC 降壓模塊
系統電源冗餘設計保證全天候穩定運行。
五、軟件系統架構
軟件採用 任務式模塊劃分,結構清晰,便於擴展:
主循環邏輯
while (1) {
Read_Sensors();
Calc_Strategy();
Control_Irrigation();
Upload_Data(); // 可選
Enter_LowPower(); // 節能模式
}
模塊劃分
- Sensor.c:濕度、温度、光照等採集
- Control.c:灌溉策略判斷
- Driver.c:繼電器、泵、電磁閥驅動
- Comm.c:WiFi/MQTT 數據通信
- Power.c:低功耗管理
整個系統具有良好的可維護性和可移植性。
六、系統測試與效果展示
通過一週的户外實驗,系統表現如下:
- 濕度維持在 45%~60% 的適合作物生長區間
- 避開了 3 次雨天,自動取消灌溉
- 灌溉次數比人工版本減少 約 62%
- 水消耗節省 約 55%
- 24h 太陽能輸入即可滿足自給
在資源有限的場景中,這個系統表現出很強的實用價值。
七、未來可擴展方向
- AI 預測灌溉:結合天氣預報預測水需求
- LoRa Mesh:適用於大面積農田
- 雲端大屏監控系統
- 自動施肥(灌溉 + 施肥一體化)
- 區塊鏈農產品溯源(數據不可篡改)
系統完全可從“個人 DIY 項目”升級為“智慧農業解決方案”。
八、結語
基於 STM32 的全自動節水灌溉系統不僅能顯著提升農業灌溉效率,還能大幅度節省水資源,並通過無線通信實現遠程管理,具有良好的可靠性與可擴展性。無論是農業科研、智能農場,還是嵌入式學習項目,它都是一個非常值得實踐的工程案例。
如果你正在尋找一個能兼具嵌入式開發、電源管理、傳感器融合和 IoT 技術的實戰項目,這個“節水灌溉系統”將會是一次完整而深度的技術練兵。
!