树莓派自动浇水系统:土壤湿度监测 + Web 仪表盘远程控制
项目概述
打造一套自动浇水系统,实时监测土壤湿度并自动给室内植物浇水,所有操作均可通过 Web 界面远程控制。
物料清单
- 树莓派 3(Pi 2/4 仅需微调引脚即可兼容)
- 土壤湿度传感器(模拟量输出)
- 5V 单路继电器模块
- 3~6V 微型潜水泵(流量 ≤ 200 mL/min)
- 软水管(1 英寸或更细)
- 杜邦线套装(多色,120 根)
- 5V 电源(USB 线 + 充电头或 5V 适配器)
- 可选:小型电位器用于传感器校准
供电方案
剥开 USB 线,将红线(+)黑线(-)焊接粗线,接入 5V 充电头。万用表验证电压无误后再接入树莓派。
GPIO 接线(树莓派 3)
- 土壤传感器:VCC→第 2 脚 (5V),GND→第 6 脚 (GND),信号(黄)→第 8 脚 (GPIO 14)
- 继电器:IN→第 7 脚 (GPIO 4),VCC→第 2 脚,GND→第 5 脚
- 水泵:水泵电源接继电器常开 (NO) 触点,地线接公共端 (COM)。树莓派拉低第 1 脚 (GPIO 5) 触发继电器闭合启动水泵
水管一端接水泵出口,另一端靠近植物根部。水管储水段注满水。
硬件组装
用绝缘胶带固定水管与水泵防漏。确保所有连接绝缘良好,树莓派供电与水泵供电分离,避免电气干扰。
软件架构
项目包含四个 Python 脚本与 Flask Web 界面:
- water.py – GPIO 封装,提供传感器读取与水泵控制
- auto_water.py – 定时浇水逻辑
- web_plants.py – Flask 应用,暴露传感器状态与手动控制接口
- main.html – 简易仪表盘模板
依赖安装
$ python3 -m pip install RPi.GPIO flask psutil
GPIO 控制脚本 (water.py)
核心函数:get_status() 返回湿/干字符串,pump_on() 启动水泵 1 秒。交互式测试:
$ python3
>>> import water
>>> water.get_status()
'Dry'
>>> water.pump_on()
Pump activated for 1 s.
若传感器读数异常,调节模块上电位器直至第二个 LED 在土壤湿润时点亮。
启动 Flask 仪表盘
将 web_plants.py 与 water.py 放同级目录,创建 templates 子目录存放 main.html。启动服务:
$ sudo python3 web_plants.py
浏览器访问树莓派 IP,即可看到实时湿度状态与“立即浇水”按钮。页面由 Flask 驱动,通过辅助脚本与 GPIO 交互。
开机自启配置
编辑 root crontab:
$ sudo crontab -e
添加行(替换为实际项目路径):
@reboot cd /home/pi/project && sudo python3 web_plants.py
重启树莓派验证仪表盘自动加载。
进阶扩展
- 多植物模块统一仪表盘管理
- 湿度数据记录至 CSV 或数据库
- 浇水时发送邮件或推送通知
深入学习可参考树莓派 GPIO 教程与 Flask-GPIO 集成指南。
制造工艺
- 树莓派2上使用DS18B20读取温度完整指南
- 树莓派控制水培养殖系统:构建指南与代码
- 树莓派结合 Maxim 1-Wire 传感器与 DS2482 I2C 桥接器的多点温度测量
- 家庭能源中心:树莓派与 Moteino 监测光伏、光热与室温
- 树莓派精准监测机柜温度:DS18B20 多点部署实战
- 树莓派 GPIO 直连 DS1820 单总线温度传感器指南
- 树莓派 3 接 HC‑SR04 超声波测距传感器完全指南
- 树莓派接 KY‑033 循迹/门状态传感器:简易 Python 实现
- 树莓派与 AS3935 闪电检测传感器实战指南
- 树莓派无原生 ADC 读取模拟传感器:阶跃响应法实战
- 树莓派 2 无头模式水浸报警器:基于 Adafruit T‑Cobbler Plus 构建
- 树莓派与 BrickPi 构建 ThingSpeak 温度监测系统