WaterPi:室内植物远程浇水和监控系统
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
应用和在线服务
| ||||
| ||||
|
关于这个项目
简介
该系统非常适合那些喜欢并想在家里照料植物但在日常工作中非常忙碌的人。种植植物需要时间和努力才能成功,因为有一些常规的事情要做,比如每天给它们浇水。人们有时会忘记照顾他们的植物。此外,有些人经常出差,在家里花的时间较少。在这种情况下,他们通常会寻求帮助来照顾他们的室内植物,否则他们就会放弃拥有它们。 WaterPican 帮助那些人为植物做常规的事情。此外,由于它可以远程控制,因此植物所有者可以在需要时轻松干预浇水过程。
该系统监控该地点的温度和湿度以及地面的土壤湿度,远程给植物浇水,然后通过 AWS IoT 将所有数据保存到 DynamoDB。收集到的数据通过不同的图表和图形进行可视化,以便更好地了解植物生长的条件。
Raspberry Pi 运行一个 nodejs 应用程序来控制所有传感器和水泵。为此,我更喜欢使用 Johnny-Five 库。为了与 AWS 通信,我使用了 AWS IoT SDK for javascript。
第 1 步:设置 DynamoDB
DynamoDB 用于保存传感器收集的数据。转到 DynamoDB 页面并创建一个具有以下属性的新表:
- 表名称:waterpi_sensor_data
- 分区键:键
- 点击添加排序键并添加时间戳
重要的是key和timestamp类型必须是String。
第 2 步:设置 AWS IoT
转到 AWS IoT 控制台页面并执行以下操作:
创建一个名为 raspi-water-pump 的东西
创建新策略。策略名称 pump-policy, 操作 iot:*, 资源* ,选择允许, 然后点击添加语句和创建。
使用一键创建证书创建证书 .然后下载公钥、私钥和证书。
然后您应该选择您创建的证书并执行以下操作:
- 点击操作> 激活 按钮证书
- 点击操作> 附加政策 , 输入您创建的策略名称,然后点击 Attach
- 点击操作> 附加事物 ,输入 raspi-water-pump,然后点击附加
使用以下内容创建规则:
- 名称 saveToDynamoDB
- 属性*
- 主题过滤器传感器/数据
- 选择一项操作将消息插入数据库表
- 表名waterpi_sensor_data
- 哈希键值${topic()}
- 范围键值 ${timestamp()}
- 角色名称> 点击创建新角色 然后点击允许 按钮,然后从角色名称下拉列表中选择它
第 3 步:准备 Arduino
水位和土壤湿度传感器输出为模拟输出。因此,与其将它们直接连接到 Raspberry Pi,我更喜欢使用 Arduino 来获取这些模拟值,然后通过 Arduino 作为数字值发送到 Pi。 Arduino 代码由 pi 更新,因此我们在这一步中唯一应该做的就是将 Arduino 连接到我们的计算机并将标准固件上传到它。
如果您没有 Arduino IDE,请按照此处的步骤进行安装。
- 打开 Arduino IDE
- 打开 文件> 示例> Firmata> StandardFirmata 例子
- 上传 草图到 Arduino
将土壤水分连接到 Arduino 模式应如下所示;
- VCC(电源)-> PIN 7
- GND(地)-> GND
- AO(模拟输出)-> A1
将水位传感器接线到 Arduino 架构应如下所示;
- (+) -> PIN 4
- (-) -> GND
- S -> A0
之后,您应该通过 USB 电缆将您的 arduino 与 raspberry pi 连接起来。另外不要忘记将土壤湿度传感器放入花盆,将水位传感器放入水箱。
第 4 步:准备树莓派
有线液晶屏,dht11,水泵通过树莓派继电器。
将 DHT11 连接到 Pi
- S -> GPIO4(引脚 7)
- (+) -> 3V3(引脚 1)
- (-) -> GND(引脚 25)
液晶屏接线
- VCC -> 5V(引脚 2)
- GND -> GND(引脚 6)
- SDA -> GPIO2(引脚 3)
- SCL -> GPIO3(引脚 5)
水泵接线继电器
- S -> GPIO18(引脚 12)
- (+) -> 5V(引脚 4)
- (-) -> GND(引脚 20)
带继电器和电池组的水泵接线
- 水泵有两条电缆。一个接继电器,另一个接电池组线。
- 其他电池组电缆应连接到继电器。查看上图了解如何连接它们。
第 5 步:在 Pi 上运行 Nodejs 应用
在这一部分,我们将在 pi 上运行 nodejs 应用程序来收集传感器数据并控制水泵。 Raspberry pi 应连接到 Internet。您可以通过以太网或 wifi 来完成。
在继续之前,必须在 pi 上安装节点。如果你之前没有安装nodejs,请按照这里的教程安装。
连接你的树莓派并运行以下命令:
git clone [email protected]:demirhanaydin/waterpi-node.gitcd waterpi-nodenpm install
您应该将您从 aws iot 页面下载的公钥、私钥和证书文件放在 certs 下 文件夹。此外,您应该从根证书下载根 CA 证书文件。将该文件另存为 rootCA.pem 并将其放在 certs 下 文件夹。
然后打开 device.js 使用您喜欢的文本编辑器创建文件,并使用您的文件路径更新这些行。您应该获得 IOT_DEVICE_URL 从 AWS IoT 平台单击您的东西。它应该类似于 https://XXXXXXXXX.iot.us-east-1.amazonaws.com
然后运行
sudo node index.js
如果一切正常,您应该能够看到液晶屏幕上打印的传感器值。
此外,您应该会看到 DynamoDB 表中的值。该应用每 20 秒向 IoT 平台发送传感器数据
第 6 步:运行 Web 应用程序
基本的 sinatra 应用程序使用 highcharts 将 dynamodb 表上的数据可视化。此外,它还可以远程控制水泵。它的作用是每当用户单击开始/停止按钮时,它就会向 AWS IoT 平台发布一个事件。树莓派接受这个事件并处理它是否启动或停止泵。
Ruby 应该安装在您的计算机上才能继续本教程。如果不是,请查看此页面进行安装。
打开终端并运行以下命令
git clone [email protected]:demirhanaydin/waterpi-web.gitcd waterpi-webbundle 安装
您应该将您的公钥、私钥、证书和 rootCA 文件放在 certs 下 文件夹。然后打开boot.rb 并使用适当的值更新这些行。您应该从 AWS 管理控制台上的安全凭证页面获取您的 aws 访问密钥和秘密。
如果你完成了,那么你应该像
一样运行这个项目ruby app.rb
打开浏览器并输入 http://localhost:4567/ 您应该能够在图表上看到从 dynamodb 收集的传感器数据。
当您点击开始时,泵将开始给植物浇水。
这是我在开发项目时拍的一些照片
图> 图> 图> 图>恭喜!
代码
树莓派 Nodejs 源代码
将源代码克隆到树莓派并在 certs 文件夹下添加您的 aws iot 证书文件。您还应该使用 aws iot 东西 url https://github.com/demirhanaydin/waterpi-node 更新 device.jsWaterPi 网络客户端
不要忘记使用您的凭据更新 boot.rb https://github.com/demirhanaydin/waterpi-web示意图
pi-wout-camera.fzz arduino.fzz制造工艺