我想指出,我绝不是电子学专家。如果你让我制作一个电路图或者解释某件电子产品工作原理的细节,我会一无所知。在生活中,我对电力的工作原理有了基本的了解,我只是胡乱摆弄了一下电子元件就完成了这个工程。话虽如此,当使用电子设备,尤其是使用外部电源时,应始终保持谨慎。在尝试使用电子产品和电力设备时,务必小心谨慎!
我不擅长照顾植物,主要是因为我经常忘了给它们浇水。于是我开始想,“我敢肯定有人已经找到了一种方法来自动化这个过程。”事实证明,很多人都有。也就是用Arduino或树莓派自动给植物浇水。在这篇文章中,我将讲述我如何使用树莓派和Python来自动浇灌我的植物。
以下是我在这个工程中使用的组件:
树莓派3入门工具包
12伏水泵
12伏电源
5伏继电器
各种各样的跳线
鳄鱼跳线
硅胶管
一旦我拥有了所有我需要的组件,就到了做一些研究的时候了。以下是我用来连接电子设备时参考的资源,并对它们的工作原理有了基本的了解:
电是如何工作的
如何使用继电器
从微型电脑树莓派向继电器供电
将12伏电源连接到继电器上
这是树莓派上GPIO别针的图片:
首先,我把继电器和树莓派连接起来,就像这样:
红线(母对母)从继电器板上的JD_VCC引脚引到树莓派上的5V引脚(引脚2)。橙色导线(母对母)从继电器板上的VCC引脚引到树莓Pi上的3.3V引脚(引脚1)。
通过连接这些电线,我们给了继电器板能量。为了实际控制单个继电器,我们需要将继电器板上的另外两个插脚连接到Raspberry Pi、GND(接地)插脚和IN1插脚上。
黑色的电线(母对母)是接地线,它从继电器板上的GND引脚连接到Raspberry Pi上的任何地线(我用的是34号引脚)。白线(母对母)从继电器板上的IN1引脚引到树莓派上的12引脚。白线是允许我们打开和关闭继电器与代码。
你可以连接继电器和树莓派,如果你使用我提供的代码,一定要记得换密码。
将继电器板和树莓派连接好后,接着将12伏适配器连接到单个继电器上。不要把12V的电源适配器连接到墙上的电源插座上,直到你把所有的东西都连接好之后,你才应该这样做。
12伏电源有一个方便的适配器,你可以用它来连接电线。我把红色电线(公对公)连接到适配器的正号上,把棕色电线(公对公)连接到适配器的负号上。然后我把一个鳄鱼夹(母对公)加到棕色的金属丝上。
继电器板有四个独立的继电器,每个继电器有三个输出,你可以在其中拧紧电线。中间的输出是你想要连接外部电源的正引线的地方,而左边的输出是你想要连接你想要供电的设备的正引线的地方。这对于板上的所有继电器都是一样的。
从12伏适配器,把红色电线(正/电源)连接到中间的继电器输出。然后,在继电器最左边的输出端接上一根新的橙色电线(公对公),并在橙色电线的末端接上一个鳄鱼夹(母对公)。
现在我们只需要把鳄鱼夹连接到水泵上。无论你以何种顺序将鳄鱼夹连接到泵上,你所做的只是设置水流。
我安装水泵的方式是,我想让水从左向右流动,所以我把黑色的鳄鱼夹和旁边有一个红点的别针连接起来,把另一个鳄鱼夹和水泵上的别针连接起来。如果我把鳄鱼夹的连接方式反过来,水就会从右向左流动。
水从左管流入,进入泵,从右管流出,然后进入植物
最后,我们来看看我真正擅长的部分,代码。为了与树莓派上的GPIO交互,我使用了gpiozero库。它真的很容易使用,并抽象出了许多低层操作,你通常需要学习,以开始与GPIO引脚交互。你可以在这里找到相关文档的链接。
在我们真正开始编写代码之前,您必须将树莓派连接到监视器、鼠标和键盘,或者您可以通过SSH连接到树莓派。
一旦你登录到你的树莓派,导航到你的桌面,并创建一个名为“run”的文件夹。在“run”里面,你会有另一个叫做“classes”的文件夹。现在在“classes”文件夹中,创建一个名为"Hardware.py"的文件,它应该是这样的:
在这个文件中,我只定义了一个名为Relay的新类,它继承自OutputDevice类。
接下来,在“classes”文件夹中,创建一个名为“TimeKeeper.py”的新文件。应该像下面这样:
本质上,这个类的目的是记录当前时间和我们的植物最后一次浇水的时间。
“Harware.py”和“TimeKeeper.py”都在“classes”文件夹中。然后我创建了一个名为“water_plant.py”的新文件。我把它放在“classes”文件夹之外。
"water_plant.py"文件看起来是这样的:
你可以随意更改“WATERING_TIME”和“SECONDS_TO_WATER”变量的值。第一个变量决定一天中的什么时候植物应该收到水,而第二个变量决定植物收到水的时长。
我还设置了电子邮件提醒,这样当你的植物浇水时,你就会收到一封电子邮件,每周五还会收到一封电子邮件,提醒你查看水位。默认情况下,我已经禁用了这些提醒,所以程序在启动时不会崩溃,但如果你想启用它们,你必须做三件事:
1)必须更改第26行和第27行来包含您的Gmail和密码
2)必须取消第63、65和68行注释
3)必须到这里,用你想要接收提醒的Gmail登录,并切换到“on”,否则当你尝试用你的Gmail帐户发送电子邮件时,你会收到一个错误提示。同样重要的是,电子邮件提醒只适用于Gmail帐户。
现在所有的文件都设置好了,你应该有如下目录树结构:
你可以把这个“run”文件夹放在树莓派的任何地方,但我只是决定把它放在桌面上。
最后,当我们想要运行“water_plant”脚本时,我想让脚本在我们打开树莓派时运行,而不是在每次我们想要运行树莓派的时候都将它连接到显示器上,这样我们就可以关闭树莓派并将它移动到任何地方。
一旦我们打开它,我们就不需要SSH到树莓派或将它连接到监视器来运行脚本。为此,我们需要使用“crontab”命令。
如果你打开树莓派上的一个终端窗口,要么把它连接到显示器上,要么把它转到显示器上,然后输入以下命令:
sudo crontab -e
你应该看到类似这样的东西:
在这个文件中,你要添加以下代码片段:
@reboot python3 /home/pi/Desktop/run/water_plant.py
然后保存它,按 CTRL+X → Y → Enter
本质上,我们只是告诉树莓派“嘿,无论何时你重启,在桌面上运行‘run’文件夹内的python脚本‘water_plant.py’”。
如果你没有把“run”文件夹放在你的桌面上,只需更新你放置“water_plant.py”脚本的路径。
你可以在这里查看完整的代码,或者你可以用下面的命令克隆存储库:
git clone https://github.com/AlanConstantino/rpi-plant-project.git
就是这样!现在你应该有一个工作的树莓派,每24小时浇灌你的植物!它甚至会在你的植物浇水的时候给你发邮件提醒,以及每周五提醒你检查水位。
英文原文:https://blog.alanconstantino.com/articles/water-your-plant-using-a-raspberry-pi-and-python.html
译者: Yang