基于 Raspberry Pi 构建的适用于室内外的自动化花园系统 - MudPi





准备工作:
材料:
由于您的要求可能与我的不同,请随意添加/删除您自己的系统可能需要的任何特定传感器或组件
通用用品
- 带 Wifi 的 Raspberry Pi(我使用了 Pi 3 B)
- Debian 9/10
- 显示器/键盘/鼠标(用于 Pi 设置)
- 适用于 Raspbian 的 SD 卡(8GB)
- 户外额定电缆(4 线)
- 户外防水接线盒
- 电缆接头
- DIN 导轨(用于安装断路器和直流电源)
- PVC 管
- 带铲形钻头的钻头
电子用品
- DHT11温度/湿度传感器
- 液位传感器 x2
- 2 通道继电器
- 12V 泵(如果使用主电压,则为 120V)
- 如果你使用 12v,则需要 DC-DC 转换器
- 5V电源
- 或直流电源(如果通过主电源为 pi 供电)
- 10k 电阻用于上拉/下拉
工具:
- 螺丝刀
- 剥线钳
- 万用表
- 烙铁
- 焊接
- 螺丝(用于将盒子安装在外面)
- 硅胶填缝剂
花园和灌溉规划






如果您要建立新系统,请务必规划好灌溉。在准备硬件时,务必先准备好这些东西,以便了解组件需求。需求可能会随着时间而变化,但为未来做好准备是一种很好的做法。供水的两种主要选择是使用水箱中的泵或带有电磁阀的软管来打开和关闭管线。选择取决于您的花园需求。更大更复杂的系统可能会同时使用两者(即通过电磁阀泵水进行区域浇水)。如果您计划在室内使用 MudPi,您可能会使用泵。MudPi 也可以使用继电器控制室内植物灯。
制作者提示:请记住,您可以以任何规模构建您的项目。如果您只是想首次尝试 MudPi,请尝试使用水瓶和 3.3v 泵之类的东西来浇灌室内植物!
还要考虑供水方式。您会使用滴灌管、浸水管还是洒水器?以下是几种常用方法:
- 洒水器
- 渗水软管
- 滴水线
- 手动洗水器
为了避免本教程的范围过大,我们假设您已经安装了灌溉系统,只是想让它自动化。在我的设置中,我有一个水箱,水箱中有一个连接到滴水管上的泵。让我们学习如何让该泵自动化。
传感器和组件规划

需要考虑的另一个重要规划方面是您希望从花园中获取哪些数据。通常,温度和湿度总是有用的。土壤湿度和雨水检测很棒,但室内设置可能不需要。对于您的需求,监测哪些条件很重要将由您最终决定。对于我们的基本户外教程,我们将监测:
- 温度
- 湿度
- 水位(浮动开关 x2)
我使用了 5 个水位传感器来确定大型水箱中的 10%、25%、50%、75% 和 95% 水位。在本教程中,为了简单起见,我们将 10% 设为临界低位,95% 设为满位。
您可能还想控制花园中的设备。如果您计划切换不以 3.3v(pi GPIO 限制)运行的泵或灯,那么您将需要一个继电器。继电器允许您控制更高电压的电路,同时使用较低电压来切换继电器。为了我们的目的,我们有一个以高于 3.3V 的电压运行的泵,因此我们需要一个继电器来切换泵。只需要一个继电器来控制泵。虽然为了将来的目的(并且因为继电器很便宜)我安装了一个 2 通道继电器,并留下了附加插槽以供以后升级。
规划中最重要的事情是电源。如何为 Pi 供电以及从哪里供电。您还应该考虑正在使用的设备以及它们如何获得电源。通常,Pi 可以通过 USB 电源适配器供电,但这需要单独的插头。如果我们要为其他具有更高电压的设备供电,可以使用 DC-DC 电源将电压降至 5v 以用于 Pi。如果您打算使用电源来降低电压,我建议不要选择最便宜的选项。
请记住,Raspberry Pi 默认仅支持数字 GPIO。这意味着您不能直接将获取模拟读数的土壤传感器连接到 Pi GPIO。为了与模拟组件兼容,您需要使用具有模拟支持的微控制器,例如 Arduino 或 ESP32(或 ESP8266)。
幸运的是,MudPi 支持控制从属节点等设备,以便从一个主控制器 (pi) 向多个设备发出命令。这样就可以有一个主控制器,它可以控制多个传感器单元及其连接的模拟组件。我使用一个主控制器来监控泵区,并使用一个传感器单元来监控每个高架花坛。今天让我们继续构建主控制器。
收集用品

现在该收集材料了。本教程中使用的组件和工具都是现成的商品,方便其他人在家中自己制作。大多数都可以在网上或当地的五金店找到。确切的材料清单将取决于您的具体花园布局。为了本教程的目的,我们将按计划保留基本材料,以便在继续之前获得一个运行单元。
注意:如果您计划切换使用电源电压的组件,请小心!在构建电子设备时,安全很重要,如果您不知道自己在做什么,请不要摆弄高压。话虽如此,我确实在家庭设置中使用了 120v 泵。对于 12v 泵,过程相同,主要区别在于需要 12v 调节器。您还可以使用继电器来切换灯或其他设备。
在 Raspberry Pi 上安装 M

准备好计划并准备好用品后,就该准备硬件了。首先,您应该准备好您的树莓派以安装 MudPi。您需要一个具有 Wifi 功能的树莓派,运行 Debian 9 或更高版本。如果您尚未安装 Raspbian,则需要从此处的页面下载 Raspbian。
下载图像文件后,使用您选择的图像写入器将其写入 SD 卡。如果您需要帮助, Raspberry pi 有一个将文件写入 SD 卡的指南。
将 SD 卡插入您的 pi 并打开它。如果您安装了 Raspbian Desktop,则使用 GUI 将您的 Pi 连接到 Wifi,或者通过Raspbian Lite 上的终端编辑/etc/wpa_supplicant/wpa_supplicant.conf文件。
连接 Wifi 后,您应该做的下一件事是在 pi 上运行更新和升级。
要更新 Pi 登录并从终端运行:
完成重启后
在 Pi 重新启动后,我们现在可以安装 MudPi。您可以使用以下命令使用MudPi 安装程序执行此操作:
安装程序将处理 MudPi 所需的所有软件包和配置。默认情况下,MudPi 安装在/home/mudpi目录中,核心位于/home/mudpi/core。
您可以使用以下命令手动运行 MudPi:
但是 MudPi 有一个管理程序可以帮你运行它。另外,在运行 MudPi 之前,你首先需要一个配置文件。为了制作配置文件,你需要知道你连接了哪些引脚以及哪些组件,这是下一步要做的。继续!
将传感器和组件连接到 Pi 进行测试





下一步是将我们的组件连接到 Pi。(请注意,我在照片中测试了其他组件)您可能正在使用跳线和面包板进行测试,这很好,只需记住在为现场构建最终单元时升级到更可靠的产品即可。
将 DHT11/22 传感器 DATA 引脚连接到 GPIO 引脚 25。
连接DHT11/22电源和地。
将两个液体浮子传感器的一端分别通过 10k下拉电阻连接到 GPIO 引脚 17 和 27 。
将浮子传感器的另一端连接到 3.3v,这样 GPIO 通常会被拉低,但在浮子开关关闭时会拉高。
将 2 通道继电器切换引脚连接至 GPIO 引脚 13 和 16。
将继电器 5V 连接至电源并将地线连接至地面。
稍后连接插头时,我们会担心继电器的高压连接。现在我们应该准备好制作 MudPi 配置文件并测试组件。
配置MudPi

连接传感器和组件后,您可以制作 MudPi 配置文件,并在完成单元组装之前测试一切是否正常。为了配置 MudPi,您将更新位于/home/mudpi/core/mudpi目录中的mudpi.config文件。这是一个 JSON 格式的文件,您可以更新它以满足您的组件需求。如果您遇到任何问题,请务必检查格式是否正确。
如果您按照以下配置文件操作,它将适用于我们连接的组件:
上面的配置中有很多事情要做。我建议深入研究配置文档以获取更多深入信息。我们在传感器阵列中设置了 DHT11 和浮点数,并将继电器设置放在切换阵列中。通过设置触发器和操作来实现自动化。触发器是一种告诉 MudPi 监听我们想要采取行动的某些条件的方式,例如温度过高。触发器在我们为其提供触发操作之前没有什么用。在上面的配置中有两个时间触发器。时间触发器采用cron 作业格式的字符串来确定何时激活。上面的时间触发器每 12 小时设置一次(因此每天两次)。它们将触发我们配置的两个操作,这两个操作将使用 MudPi 发出的事件打开/关闭我们的继电器。第二个触发器偏移 15 分钟,这样我们的泵就会打开并浇水 15 分钟,然后再关闭。这种情况每天会发生两次。
现在你可以通过告诉主管重新启动程序来重新启动 MudPi:
MudPi 现在应该重新加载配置并在后台运行,获取传感器读数并监听事件以切换继电器。您可以使用以下命令检查 MudPi 是否正在运行:
MudPi 还会将日志文件存储在/home/mudpi/logs目录中。如果您遇到问题,这是一个不错的首选位置。
如果您已确认 MudPi 正在运行,那么现在是时候开始设备的最终组装了。关闭 Raspberry Pi 并完成硬件的组装。
将组件焊接到原型板上




现在 MudPi 已配置完毕,您可以继续处理硬件。盒子中剩余的组件应焊接到原型板上,以获得比跳线更高的稳定性。它不如定制电路板那么好,但目前可以使用。我们使用的 DHT11 传感器是外部的,但您可以选择在内部添加另一个传感器来测量盒子内部的温度。
我将一根 pi 接线线连同一些终端连接器焊接到电路板上,以便在我们重新连接传感器和继电器后更轻松地进行 GPIO 连接。接线线使得能够断开 pi 而无需取出整个模块变得非常好。我还为浮子添加了所需的下拉电阻。完成后,我们可以将所有东西放在一个漂亮的室外接线盒内以保护它。
开始将电子设备放入室外接线盒





至此,MudPi 上的所有测试都已完成,是时候组装室外机以抵御恶劣天气了。您当地的五金店会在电子产品区提供多种接线盒供您选择,价格低于 25 美元。寻找一个尺寸合适且密封防水的接线盒。我花了更多钱买了一个带弹簧闩锁的纤维增强盒。您所需要的只是可以防潮并安装所有组件的东西。您将在这个盒子上钻孔以将电缆引出。
将插头连接到继电器并安装在接线盒中 *警





连接组件时应关闭 Pi 的电源。如果您使用 120v 或 12v 为泵供电,请考虑使用插头。运行 12v 的泵通常使用筒形插孔连接器。使用 120v 时,您可以使用母延长线插头。现在,不要在没有适当设备的情况下剪断延长线并乱动它。
使用钻头或铲形钻头在室外接线盒底部钻两个 3/4 英寸孔,并放入两个 3/4 英寸电缆压盖。将公延长线穿过一个压盖,将母延长线穿过另一个压盖。如果您想使用另一个继电器通道,请安装另一根母端延长线。
我在盒子里安装了一小段 DIN 导轨。导轨上有一个直流电源,用于将 120v 降至 5v 以给 Pi 供电,还有一些安全断路器。我只使用两个断路器,这样我就可以关闭 Pi 而不关闭整个系统。一个断路器就足够了。现在延长线里面有三根彩色电缆。白色是零线,绿色是地线,黑色是 120v+。绿色和白色直接进入直流电源。黑色首先进入断路器,然后进入直流电源。电源上有一个小螺丝,它是一个电位器,可以将电压调整到 5v。
我们将使用接线端子来连接插头。使用一个接线端子将所有白色中性线连接在一起。如果您没有接线端子,电工胶带就足够了。绿色接地线也应连接在一起。继电器高压侧有三个连接:COM(公共)、NC(常闭)和NO(常开)。根据您的继电器,它可能只有NC或NO,而不是两者兼有。从断路器连接一小段额外的电缆,该断路器将为高压侧的继电器COM(公共)端子提供120v。现在将母延长线黑色120v线连接到NC端子。这意味着插头通常会关闭而不是连接,但是当我们打开继电器时,它将向插头提供120v,从而打开我们的泵。
此时,所有延长线的白色中性线应连接在一起,绿色接地线应连接在一起。母线的黑色 120v 连接到继电器 NC 端子。公延长线的黑色火线应连接到 DIN 导轨上的断路处,然后分流到直流电源和继电器的 COM。
将所有东西都安装在防水盒中并妥善保护/布线所有电缆非常重要。你最不希望发生的就是火灾或有人被电击。此外,如果你不能保证安全,就不要接触高压。你仍然可以用 12v 及以下的组件做很多事情。
将传感器放入保护外壳





自然和潮湿对电子产品不太友好。您已经使用室外接线盒保护了 Pi,但现在您需要保护任何外部组件。您可以使用一些 PVC 管或其他废管制作一些不错的外壳来保护外部组件。我为 DHT11 传感器安装了一个简单的通风盖,以帮助保护它免受雨水和虫子的侵害,但允许它呼吸以获得准确的外部读数。下一步使用硅胶密封剂密封电缆周围。
虽然不是最好的解决方案,但对于便宜的 4 美元传感器来说,它还是有用的。(我也为当时正在测试的土壤传感器制作了一些。)浮子传感器将安装在水箱中,不需要额外的外壳。
您还会发现传感器通常只配有一些廉价的细规格电线。对于某些常规操作或室外气候来说,这不会持续很长时间。下一步我们将解决这个问题。
使用室外额定电缆和插头连接传感器




如果您想将外部传感器连接到盒子,那么必须使用一些户外额定电缆。户外额定电缆具有屏蔽层,有助于保护内部电线。我拿了一些 4 线电缆和插头。您不需要插头,而是可以使用更多的电缆密封套,但我希望能够快速更换传感器。
剪下一些适合温度传感器和浮子传感器的长度的电缆。我会多剪几英尺,因为如果需要的话,多剪几英尺总是好的。我建议焊接电缆以获得最佳连接,然后用电工胶带包裹。我建议每根电线的电源和地线使用相同颜色,以便于记忆。将电缆塞入外壳,用硅胶密封外壳底部的其余部分,这样只有通风盖才是入口点。
电缆的另一端可以通过电缆密封套插入接线盒,然后通过与之前相同的引脚连接到 Pi。如果您选择使用插头,请将插头端安装到电缆上。钻孔并将另一端安装到接线盒中,然后连接内部部件。
将浮子传感器安装到水箱中

在其他传感器都已保护好并准备就绪后,是时候将浮子传感器安装到水箱中了。由于我们只使用两个传感器,因此您应该将 1 个安装在临界低位,泵不应运行,另一个安装在标记水箱已满的位置。找到正确尺寸的钻头,并在正确的水位上在水箱上打一个孔。使用提供的垫圈和螺母将浮子传感器拧入水箱。查看水箱内部,确保浮子传感器的方向正确,使其处于关闭位置,当水位上升时将其抬起,使它们闭合电路。
由于下拉电阻,这意味着当达到水位时,浮子传感器将在该水位读取 1。否则,如果水当前没有抬起传感器并关闭电路,浮子传感器将返回 0。
将设备部署到室外





MudPi 装置已准备好在现场使用,我们可以将其安装在室外的最终位置。室外接线盒通常配有盖子,可拧紧以密封水封。您还应该在背面找到一些安装孔,用于安装装置。我将接线盒安装在室外水棚旁边,因为浮子传感器的电缆长度有限。
您可以将公延长线插入插座并打开断路器以使 MudPi 联机。在长时间离开之前,请确保一切正常。通过查看 redis 中的存储值或检查 MudPi 日志来测试传感器是否正在读取数据。如果一切正常,那么是时候让 MudPi 工作了,而您可以放松一下。
监控MudPi




现在 MudPi 正在运行,您可能想知道如何监控您的系统。最简单、最直接的方法是监控 MudPi 日志文件:
另一种选择是通过本地网页之类的界面。我还没有时间发布公共 MudPi UI,但您可以使用 PHP 轻松从 redis 获取传感器和组件状态。在文档中详细了解 MudPi 如何将您的数据存储在 redis 中。
最新的传感器读数将存储在您在配置中设置的key选项下的 redis 中。使用此功能,您可以制作一个简单的 PHP 应用程序来在页面加载时获取读数并显示它们。然后只需刷新页面即可获取新数据。
还可以在 redis 上监听 MudPi 事件,这是从系统获取实时更新的更好选择。您可以直接通过 redis-cli 读取事件
用定制PCB替换原型板(可选)




我更进一步,为 MudPi 制作了一些定制电路板。它们帮助我加快了构建多个 MudPi 单元的构建过程,并且更加可靠。我已经开始用我所有现有单元中的更可靠的 PCB 替换旧的原型板。将来,我希望以小批量出售这些电路板,以帮助支持我的开源工作。MudPi 不需要任何定制电路板即可运行,它只是帮助减少已安装的板载组件(例如下拉电阻和温度/湿度传感器)的硬件工作量。
放松并观察植物生长!




现在,您拥有了完全属于自己的自动化花园系统,您可以根据需要对其进行扩展和缩放。制作更多单元或扩展您已经构建的单元。您可以使用 MudPi 做更多事情,项目网站 https://mudpi.app 上有很多信息。我的目标是将 MudPi 变成我开始花园项目时寻找的资源。我希望您能从 MudPi 中受益匪浅,如果您喜欢我所做的工作,请分享。我个人在家里的室外和室内都使用 MudPi 来管理我的植物,到目前为止,我对结果非常满意。











