WaterPi:基于 Raspberry Pi 与 AWS IoT 的智能远程浇花系统
硬件清单
| 零件 | 数量 | 说明 |
|---|---|---|
| Raspberry Pi 1 Model B (或更新型号) | 1 | 运行 Node.js 应用,连接 AWS |
| Arduino UNO | 1 | 采集模拟量传感器 (土壤湿度、水位) |
| DHT11 温湿度传感器 | 1 | 接 Pi GPIO4 |
| YL-69 土壤湿度传感器 | 1 | 接 Arduino A1,VCC 接 D7 控制供电 |
| 水位传感器 | 1 | 接 Arduino A0,VCC 接 D4 |
| 1602 LCD (I2C) | 1 | 接 Pi I2C (GPIO2/3) |
| 5V 继电器模块 | 1 | 控制水泵,接 Pi GPIO18 |
| 微型水泵 + 4×AA 电池盒 | 1 | 水泵独立供电,继电器切换 |
云端服务 (AWS)
- DynamoDB:表
waterpi_sensor_data,主键key(String) + 排序键timestamp(String)。 - AWS IoT Core:
Thing:raspi-water-pump
Policy:pump-policy(iot:*)
证书:一键创建,下载公钥/私钥/证书/根 CA,激活并绑定 Policy 与 Thing。
规则:Topicsensor/data→ 插入 DynamoDB,Hash key${topic()},Range key${timestamp()}。
软件流程
- Arduino 烧录 StandardFirmata,通过 USB 连接 Pi,由 Johnny-Five 库读取 A0/A1 模拟值。
- Pi 侧 Node.js 应用 (
waterpi-node):
- Johnny-Five 读取 Arduino 传感器 + 直连 DHT11。
- AWS IoT SDK 发布 JSON 到sensor/data(每 20 秒)。
- 订阅pump/control主题,收到指令控制继电器启停水泵。
- LCD 实时显示温湿度、土壤湿度、水位、水泵状态。
Web 控制端
waterpi-web (Sinatra + HighCharts):
- 读取 DynamoDB 近期数据绘制图表。
- 点击“开始/停止”按钮 → AWS IoT 发布 pump/control → Pi 执行。
- 需配置 AWS Access Key/Secret 与证书路径。
部署步骤摘要
- 建立 DynamoDB 表与 IoT Thing/Policy/Rule。
- Arduino 烧录 Firmata,接线传感器,USB 连 Pi。
- Pi 接线 DHT11、LCD、继电器、水泵电池盒。
- Pi 上
git clone waterpi-node && npm install,放入证书,改device.js填入 IoT Endpoint,sudo node index.js。 - 本地/服务器跑
waterpi-web:bundle install && ruby app.rb,访问localhost:4567。
原理图

制造工艺
- GE完成收购SmartSignal,强化远程监测与预测诊断
- 树莓派控制水培养殖系统:构建指南与代码
- 家庭能源中心:树莓派与 Moteino 监测光伏、光热与室温
- 树莓派 3 配合 PubNub 实现远程气象监测
- 树莓派多传感器温度光照监测系统:DS18B20 实战构建
- 树莓派传感器与执行器控制实战:加速度计、舵机与数据流
- 树莓派家庭安防系统:PIR 运动检测 + 摄像头邮件报警
- 云监控:实时资产管理的远程控制系统
- ADLINK 推出升级版 MCM 解决方案:远程设施监控与预测性维护仪表盘
- 先进自加热可穿戴气体传感器实现精准健康环境监测
- 思科推出云管理物联网监控方案服务IT与OT环境
- 油柴油罐物联网远程监控系统