构建一款智能灌溉系统:会根据土壤数据和植物种类自动为植物浇水
扫描二维码
随时随地手机看文章
我想要打造一些实用的东西,而且是自己会实际使用的那种。我有个坏习惯,就是总是忘记给植物浇水,于是我就想做一个自动浇水系统,觉得这会是个绝佳的项目。我在网上找到的大多数 DIY 浇水系统只是检测土壤是否干燥,然后启动水泵,这种系统只是简单的阈值控制,既不了解是什么样的植物,也不考虑环境情况。
我想要做得更进一步。不同的植物对水分的需求间隔完全不同。仙人掌和热带植物的养护方式不能一概而论。我还希望这个系统能够根据土壤实际的干燥程度来做出反应,而不仅仅是判断是否超过了某个阈值,而是要考虑到超出阈值的程度,这样就能在植物真正处于极度缺水状态时更及时地为其浇水。
除了电子设备之外,我还设计了一个定制的 3D 打印外壳,将整个系统整合成一个独立的单元。该结构顶部设有花盆,内部嵌入了水箱,为面包板和 PocketBeagle 设定了一个封闭的隔间,并配有密封盖以保护电子设备。底部有一个专用的排水区域,以防止多余的水在电子设备周围积聚。所有部件都整合成一个整体,没有松散的电线或单独的盒子散落在周围。
其结果是一个系统,该系统能够识别所照料的植物种类,每两秒读取一次土壤湿度,监测温度和湿度以发出环境警报,跟踪蓄水池水位,并将所有信息显示在一块小的液晶显示屏上,同时还会显示下一次预定浇水的倒计时时间。该系统在通电时会自动启动,并且无需用户干预即可运行。
该系统通过一个 Adafruit Stemma 电容式传感器读取土壤湿度,通过一个 BME280 传感器读取温度和湿度,并通过一个模拟水位传感器读取蓄水池水位。它根据植物种类选择灌溉参数,为多肉植物、花卉、蔬菜、热带植物和仙人掌等提供了不同的配置方案。当土壤湿度低于植物设定阈值时,系统会自动启动水泵,并采用动态冷却机制,即如果土壤极度干燥,则每 15 分钟灌溉一次,而不是等待完整的灌溉周期。水分百分比、蓄水池水位和下一次灌溉计时会在一个 16x2 液晶显示屏上显示,显示屏上还会出现超出范围的温度、湿度、过度浇水和低蓄水池水位等警报信息。
使用说明
第 1 步.连接电平转换器。口袋贝格尔的模拟引脚最大电压为 1.8V,而水传感器输出电压为 3.3V。TXS0108E 电平转换器可实现两者之间的转换,并且还将 3.3V 的 GPIO 信号提升至 5V 以供 MOSFET 栅极使用。将 VA 连接到 P1.18,VB 连接到 P1.14,GND 连接到 P1.16,OE 连接到 P1.14,A1 连接到 P1.02,B1 连接到水传感器信号引脚,A2 连接到 P1.34,B2 通过 100 欧姆电阻连接到 MOSFET 栅极。
第 2 步.将 MOSFET 和泵线连接好。MTP3055VL TO-220 封装有三个引脚,从左至右依次为:栅极、漏极、源极。将栅极连接到 TXS0108E B2 上的 100 欧姆电阻器上。将源极连接到 P1.16 处的 GND(地)。将漏极连接到泵的负极线。在栅极和源极之间添加一个 10k 欧姆电阻。在泵的两端之间添加一个 1N4007 二极管,阴极连接到泵的正极,阳极连接到泵的负极。将泵的正极连接到 P1.24。
第 3 步。连接 I2C 传感器。这三款 I2C 设备共用 P1.26 作为 SDA 引脚,共用 P1.28 作为 SCL 引脚。对于 Stemma 土壤传感器,JST 电缆的颜色分别为:SCL 至 P1.28 为棕色,SDA 至 P1.26 为红色,VIN 至 P1.14 为橙色,GND 至 P1.16 为黄色。对于 BME280,将 VCC 连接到 P1.14,GND 连接到 P1.16,SDA 连接到 P1.26,SCL 连接到 P1.28,而 CSB 和 SDO 则不连接。对于 LCD,将 VCC 连接到 P1.14,GND 连接到 P1.16,SDA 连接到 P1.26,SCL 连接到 P1.28。
第 4 步:连接水传感器。将 VCC 端连接至 P1.14,GND 端连接至 P1.16,信号端连接至 TXS0108E 的 B1 端。
第 5 步:检查线路连接。使用 SSH 连接到 PocketBeagle 并运行以下命令:sudo i2cdetect -y -r 2 。您应该能看到三个地址:用于液晶显示屏的地址为 0x27,用于土壤传感器的地址为 0x36,用于 BME280 的地址为 0x76。如果缺少任何一个地址,请检查该设备的 SDA 和 SCL 是否未被错误地互换。
第 6 步:安装软件。在 PocketBeagle 上运行以下命令:sudo python3.11 -m pip install --no-index --find-links=/home/debian/packages smbus2 RPLCD。然后从源代码构建 Adafruit BBIO:cd /opt/source/adafruit-beaglebone-io-python 并执行 sudo python3.11 setup.py install。
第 7 步。复制并运行该代码。运行步骤如下:使用 scp 将 irrigation.py 文件传输至 192.168.7.2 服务器的 /var/lib/cloud9/python/ 目录下,然后通过 ssh 连接到该服务器,接着进入 /var/lib/cloud9/python 目录,最后使用 sudo 命令以 python3.11 的版本运行 irrigation.py 文件。
第 8 步:设置自动启动。运行“sudo nano /etc/systemd/system/irrigation.service”,并将来自 GitHub 说明文档中的服务文件粘贴到该文件中。然后运行“sudo systemctl daemon-reload”、“sudo systemctl enable irrigation.service”以及“sudo systemctl start irrigation.service”。
本文编译自hackster.io





