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

WaterPi跟踪有关室内植物的关键指标,并通过图表将这些指标可视化,并远程给植物浇水。

硬件

软件

介绍

  • 步骤1:设定DynamoDB
  • 步骤2:设定AWS IoT
  • 步骤3:准备Arduino
  • 步骤4:准备Raspberry Pi
  • 步骤5:在Pi上运行Nodejs App
  • 步骤6:运行Web应用程序

原理图

完整代码

安装Node.js

硬件/软件

介绍

视频(......

该系统是那些喜欢并希望照顾自己家中植物但又非常忙于日常工作的人们的合适解决方案。 为了成功,种植植物需要时间和精力,因为有些常规的事情要做,例如每天浇水。 人们有时会忘记照顾植物。 另外,有些人经常出差旅行,花更少的时间在家里。 在这种情况下,他们通常会寻求帮助来照顾他们的室内植物,否则他们会简单地放弃拥有它们。 WaterPi可以帮助那些经常做植物的人。 另外,由于可以远程控制,因此植物所有者可以在需要时轻松干预浇水过程。

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

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

步骤1:设定DynamoDB

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

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

重要的是键和时间戳记类型必须为String。

步骤2:设定AWS IoT

转到AWS IoT控制台页面并执行以下操作:创建一个名称为raspi-water-pump的东西。

创建一个新策略。选择策略名称 : pump-policy,Action : iot:*,Resource : *,选择Allow,然后单击添加语句并创建。

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

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

  • 单击 Actions > Activate 按钮证书
  • 单击Actions > Attach a policy,键入您创建的策略名称,然后单击Attach
  • 单击Actions > Attach a thing,键入raspi-water-pump,然后单击Attach

创建具有以下内容的规则:

  • 命名 saveToDynamoDB
  • 属性 *
  • 主题过滤器 sensor/data
  • 选择 insert message into a database table
  • 表名 waterpi_sensor_data
  • 哈希键值 ${topic()}
  • 范围键值 ${timestamp()}
  • 职能名称>单击 create a new role, 在打开的页面中单击``允许''按钮,然后从``职能名称''下拉列表中选择它

步骤3:准备Arduino

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

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

  • 打开Arduino IDE
  • 打开 File > Example > Firmata > StandardFirmata 示例
  • Upload sketch到Arduino

将土壤水分连接到Arduino模式应如下所示;

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

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

步骤4:准备Raspberry Pi

将LCD,dht11和水泵与树莓派上的中继连接。

将DHT11接线至Pi

液晶屏接线

水泵接线继电器

水泵和中继,电池组连接

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

步骤5:在Pi上运行Nodejs App

在这一部分中,我们将在pi上运行node.js应用程序以收集传感器数据并控制水泵。Raspberry pi应该连接到Internet。您可以通过以太网或wifi进行操作。

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

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

您应该将从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

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

此外,您还应该在DynamoDB表中看到这些值。该应用程序每20秒将传感器数据发送到IoT平台。