×

WaterPi:室内植物远程浇水和监控系统

消耗积分:0 | 格式:zip | 大小:0.84 MB | 2022-11-22

84784

分享资料个

描述

介绍

该系统非常适合那些热爱并想要照看家中植物但又忙于日常工作的人们。种植植物需要时间和努力才能成功,因为每天都有一些常规的事情要做,比如给它们浇水。人们有时会忘记照顾他们的植物。此外,有些人经常出差,在家呆的时间更少。在这种情况下,他们通常会寻求帮助来照顾他们的室内植物,否则他们就会放弃拥有它们。WaterPi 可以帮助那些人为植物做一些常规的事情。此外,由于可以远程控制,植物所有者可以在需要时轻松干预浇水过程。

该系统监控该地点的温度和湿度,以及地面的土壤湿度,远程浇灌植物,然后通过 AWS IoT 将所有数据保存到 DynamoDB。收集的数据通过不同的图表和数字进行可视化,以更好地了解植物生长的条件。

Raspberry Pi 运行一个 nodejs 应用程序来控制所有传感器和水泵。为此,我更喜欢使用Johnny-Five库。为了与 AWS 通信,我使用了适用于 javascript 的 AWS IoT 开发工具包。

第 1 步:设置 DynamoDB

DynamoDB 用于保存传感器收集的数据。转到DynamoDB 页面并创建一个具有以下属性的新表:

  • 表名:waterpi_sensor_data
  • 分区键:key
  • 单击添加排序键并添加时间戳

重要的是键和时间戳类型必须是字符串。

poYBAGN6WeKABLzmAAJZfRM73DI380.png
 

第 2 步:设置 AWS IoT

转到 AWS IoT 控制台页面并执行以下操作:

创建一个名为raspi-water-pump的东西

poYBAGN6WeWAXr19AAIX3L0ImbY559.png
在 aws iot 上创建事物
 

创建新策略。策略名称pump-policy、Action iot:*、resource * ,选择Allow,然后单击 Add statement 和 Create。

poYBAGN6WemAFpizAAIWaoaihSQ280.png
制定新政策
 

使用 1-Click certificate create 创建证书然后下载公钥、私钥和证书。

pYYBAGN6WeyAZSOkAAIFzWP8fZM183.png
 

然后您应该选择您创建的证书并执行以下操作:

  • 单击 操作 >激活按钮证书
  • 单击操作 > 附加策略,键入您创建的策略名称,然后单击附加
  • 单击Actions > Attach a thing ,键入 raspi-water-pump,然后单击Attach

使用以下内容创建规则:

  • 名称 saveToDynamoDB
  • 属性 *
  • 主题过滤 传感器/数据
  • 选择 将消息插入数据库表的操作
  • 表名 waterpi_sensor_data
  • 哈希键值 ${topic()}
  • 范围键值 ${timestamp()}
  • 角色名称 > 单击 创建新角色 ,然后从打开页面单击 允许 按钮,然后从角色名称下拉列表中选择它
poYBAGN6WfCAH3k_AAJwoAVbXas535.png
 

 

第 3 步:准备 Arduino

水位和土壤湿度传感器输出为模拟输出。因此,与其将它们直接连接到 Raspberry Pi,我更喜欢使用 Arduino 来获取这些模拟值,然后通过 Arduino 作为数字值发送到 Pi。Arduino 代码由 pi 更新,所以我们在这一步中唯一要做的就是将 Arduino 连接到我们的计算机并将标准固件上传到它。 

如果您没有 Arduino IDE,请按照 此处的步骤 进行安装。

  • 打开 Arduino IDE
  • 打开文件 > 示例 > Firmata > StandardFirmata示例
  • 将草图上传到 Arduino
pYYBAGN6WfOAfdyQAARvsRjVW-g835.png
上传标准固件
 

 

 

 

将土壤水分连接到 Arduino 架构应如下所示;

  • VCC(电源)-> PIN 7
  • GND(接地)-> GND
  • AO(模拟输出)-> A1

将水位传感器连接到 Arduino 架构应如下所示;

  • (+) -> PIN 4
  • (-) -> 接地
  • S -> A0
使用 Arduino UNO 连接土壤湿度和水位传感器
 
使用 Arduino UNO 连接土壤湿度和水位传感器
 
 

之后,您应该 通过 USB 电缆将您的 arduino 与树莓派连接起来​​。另外不要忘记将土壤湿度传感器放入花盆,将水位传感器放入水箱。

第 4 步:准备树莓派

线液晶屏,dht11,水泵通过继电器与树莓派。

使用 Raspberry Pi 接线系统部件
 
使用 Raspberry Pi 接线系统部件
 
 

将 DHT11 连接到 Pi

  • S -> GPIO4(引脚 7)
  • (+) -> 3V3(引脚 1)
  • (-) -> GND(引脚 25)

接线液晶屏

  • VCC -> 5V(引脚 2)
  • 接地 -> 接地(引脚 6)
  • SDA -> GPIO2(引脚 3)
  • SCL -> GPIO3(引脚 5)

水泵接线继电器

  • S -> GPIO18(引脚 12)
  • (+) -> 5V(引脚 4)
  • (-) -> GND(引脚 20)

 

带继电器和电池组的水泵接线

  • 水泵有两条电缆。一个应连接到继电器,另一个应连接电池组电缆。
  • 其他电池组电缆应连接到继电器。查看上图以了解如何连接它们。

第 5 步:在 Pi 上运行 Nodejs 应用程序

在这一部分中,我们将在 pi 上运行 nodejs 应用程序来收集传感器数据并控制水泵。树莓派应该连接到互联网。你可以通过以太网或wifi来做到这一点。

在继续之前,必须在 pi 上安装节点。如果您之前没有安装 nodejs,请按照此处的教程进行安装。

连接您的树莓派并运行以下命令:

git clone git@github.com:demirhanaydin/waterpi-node.git
cd waterpi-node
npm install

您应该将您从 aws iot 页面下载的公钥、私钥和证书文件放在certs文件夹下。此外,您应该从根证书下载根 CA 证书文件 将该文件另存为 rootCA.pem 并将其放在certs文件夹下。

然后使用您喜欢的文本编辑器打开device.js文件,并 使用您的文件路径更新这些行。您应该 通过单击您的事物从 AWS IoT 平台获取您的IOT_DEVICE_URL 。它应该像 https://XXXXXXXXX.iot.us-east-1.amazonaws.com

然后运行

sudo node index.js

如果一切正确,您应该能够看到打印在液晶屏上的传感器值。

poYBAGN6WfyAQ_oNABPTiWHfZPk109.jpg
液晶屏上的传感器值
 

您还应该看到 DynamoDB 表中的值。应用程序每 20 秒向物联网平台发送传感器数据

pYYBAGN6Wf-AKY8CAAO01wusIA0894.png
动态表
 

第 6 步:运行 Web 应用程序

基本的 sinatra 应用程序使用highcharts可视化 dynamodb 表上的数据此外,它可以远程控制水泵。它的作用是每当用户单击开始/停止按钮时,它都会将事件发布到 AWS IoT 平台。Raspberry Pi 接受此事件并处理它是否启动或停止泵。

应该在您的计算机上安装 Ruby 以继续本教程。如果不是,请查看此页面以安装它。

打开终端并运行以下命令

git clone git@github.com:demirhanaydin/waterpi-web.git
cd waterpi-web
bundle install

您应该将您的公钥、私钥、证书和 rootCA 文件放在 certs 文件夹下。然后打开boot.rb并 使用正确的值 更新这些行。您应该从 AWS 管理控制台上的安全凭证页面获取您的 aws 访问密钥和秘密。

如果你完成了,那么你应该像这样运行项目

ruby app.rb

打开浏览器并输入您应该能够在图表上看到来自 dynamodb 的收集到的传感器数据。

poYBAGN6WgSAakzZAAF9IIN-4pM673.png
水皮网页界面
 

当您单击开始时,泵将开始给植物浇水。

这是我在开发项目时拍摄的一些照片

 
 
 
poYBAGN6WguAXHpSABQOM0GP2R4101.jpg
 
1 / 5
 

恭喜!


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !