Arduino 智能灌溉控制器:集成天气与光照传感器的自动浇水系统
组件与物料清单
| 组件 | 数量 |
|---|---|
| Arduino Nano R3 | 1 |
| IO 扩展板 | 1 |
| IO 扩展板套件 | 1 |
| 2 路 1-Wire 转 I2C 模块 | 2 |
| 1-Wire 分线盒 | 1 |
| 光学连接器 | 1 |
| 分线器 | 1 |
| 4 路 5V 直流继电器模块 | 1 |
| TSL2561 光照传感器 | 1 |
| DS18B20 防水温度传感器 | 1 |
| 光学红外水位/雨量传感器 | 1 |
| DS3231 AT24C32 高精度 RTC 时钟模块 | 1 |
| I2C SSD1306 OLED 128x64 显示屏 | 1 |
| 200x120x75mm 防水透明外壳 | 1 |
| 100x68x50mm 防水透明外壳 | 1 |
| IP68 PG7 防水尼龙电缆密封接头 | 1 |
| IP68 PG11 防水尼龙电缆密封接头 | 1 |
| RJ11 基石螺丝端子插座 | 1 |
| 50ft 4C4P RJ11 电话线 | 1 |
| 6ft 4C4P RJ11 电话线 | 1 |
| 2.54mm 排针连接线 | 若干 |
| SPST 微动按钮开关 | 2 |
| 12VDC 1A 墙插电源适配器 | 1 |
软件与在线服务
- Arduino IDE
项目概述
打造智能灌溉控制器
本项目旨在构建一套基于 Arduino 的智能灌溉系统,能够根据实时环境数据动态调整浇水计划,实现节水、防冻、防真菌生长等功能。核心特性包括:
- 室外温度、雨量、光照三合一环境监测
- DS3231 带电池备份的实时时钟,支持每周定时
- 非易失性存储(EEPROM),断电不丢失配置与浇水记录
- 日出自动检测,可在日出前预设时间开始浇水,利于土壤渗透
- 低温保护:气温过低时自动停止浇水
- 雨量检测:检测到降雨自动跳过或缩短浇水时长
- OLED 显示屏 + 双按钮交互,菜单操作直观
- 代码占用仅 12710 字节(39%),留有充足扩展空间
- 采用标准 RJ11 电话线布线,解决传感器长距离传输难题
- 单电源供电,结构紧凑,成本远低于同类商用产品

为什么选择 IO 扩展板?
IO 扩展板将多种外设驱动(1-Wire、RTC、EEPROM、OLED、温度、雨量等)集成在硬件层面,Arduino 仅需通过串口发送指令即可控制,极大简化了软件开发,节省 Flash 空间,也避免了编写各类底层驱动的繁琐工作。全系统仅用 3 天即可完成代码编写。
接线原理图

OLED 显示与菜单操作

短按 Menu 键进入菜单,循环切换 9 个选项;30 秒无操作自动退出。短按 Select 键执行当前选项功能。
系统组装指南
- 将 Arduino Nano 连接至 IO 扩展板,通过 ICSP 口烧录固件(USB 口与扩展板共用串口,烧录时需断开扩展板)。
- 修改代码中的
ONEWIRE_TO_I2C_ROM1与ONEWIRE_TO_I2C_ROM2宏,填入你的 1-Wire 转 I2C 模块实际 ROM 地址。 - 分线器需焊接 0603 0Ω 电阻(R2 位置),将光学红外传感器数据线与 1-Wire 远程传感器线隔离。
- 在大外壳右侧开 11/16" 孔装 PG11 防水接头(供 12V、24VAC、电磁阀线、RJ11 远程线),小外壳开 7/16" 孔装 PG7 接头(供远程传感器线)。
- 微动开关焊接至 RJ11 端子,热缩管绝缘后安装到大外壳顶部(Menu/Select 两键)。
- 远程传感器盒(小外壳)安装在房屋东侧较高位置,光学雨量传感器与光照传感器朝天,无遮挡。
- 所有板卡用双面胶与泡沫固定在大外壳内,接线完成后通电测试。







重要更新说明
2019/09/12 - v1.1 版本
修复了系统长时间断电后重新上电启动异常的问题。
2019/10/02 - 上拉电阻冲突修正
当 1-Wire 转 I2C、DS3231 RTC 与 SSD1306 OLED 共享 I2C 总线时,三组上拉电阻并联导致等效阻值约 1.56kΩ,过强会造成 OLED 显示随机花屏。解决方法:移除 1-Wire 转 I2C 模块上的 R3、R4 以及 OLED 模块上的 R6、R7 上拉电阻,保留 DS3231 自带的电阻网络即可。

核心代码
完整代码已包含在项目文件中,主逻辑涵盖:RTC 时间同步、NVRAM 读写(CRC 校验)、日出检测算法、雨量累积判定、多区定时调度、按钮菜单交互、OLED 界面渲染、看门狗复位等。关键宏定义如下:
#define WATER_TIME_BEFORE_SUNRISE 60 // 日出前 60 分钟开始浇水
#define SUNRISE_LUX 100 // 判定日出的光照阈值
#define RAIN_DETECT_LEVEL 4.0 // 雨量检测阈值
#define DO_NOT_WATER_TEMP 4.4444 // 40°F 低温保护阈值
#define MAX_ZONES 4 // 最大 4 个灌溉区
调度算法支持“日出相对时间”与“固定时间”两种模式,自动计算下一个浇水时刻并处理雨量抵扣。完整代码请参考项目文件中的 Smart Irrigation Controller。
演示视频
原理图

制造工艺
- 基于 Sensorflare 与树莓派的 433 MHz 智能家居控制器构建指南
- 树莓派 + MCP9808 + InfluxDB + Grafana:家庭温度监测系统
- 智能垃圾桶:基于蜂窝物联网的自动化废物管理解决方案
- 智能调酒师:树莓派驱动的自动鸡尾酒机
- 低成本情绪传感器与 EEG:实时情绪检测硬件方案
- 智能灌溉控制器:Windows 10 IoT + 树莓派 2 + XBee 土壤湿度传感器
- 传感器量产革新:Sensata 借智能机电一体化实现柔性精密装配
- TE Connectivity 8911:集成 LoRaWAN 无线加速度计,赋能高级振动监测
- 构建开源智慧农业系统:以低成本互操作IoT赋能农民
- ECM3532:Eta Compute首款集成超低功耗AI传感器板加速边缘开发
- 革命性超灵敏耐用应变传感器赋能智能纺织品
- 革命性超薄传感器增强智能隐形眼镜功能