python树莓派 是什么_用树莓派和Python给你的植物浇水

652beb19cb1ee3cc693892cc74f3be87.png

我想指出,我绝不是电子学专家。如果你让我制作一个电路图或者解释某件电子产品工作原理的细节,我会一无所知。在生活中,我对电力的工作原理有了基本的了解,我只是胡乱摆弄了一下电子元件就完成了这个工程。话虽如此,当使用电子设备,尤其是使用外部电源时,应始终保持谨慎。在尝试使用电子产品和电力设备时,务必小心谨慎!d680d3d6b6d2d67f1fe5d3c35b93b895.png

我不擅长照顾植物,主要是因为我经常忘了给它们浇水。于是我开始想,“我敢肯定有人已经找到了一种方法来自动化这个过程。”事实证明,很多人都有。也就是用Arduino或树莓派自动给植物浇水。在这篇文章中,我将讲述我如何使用树莓派和Python来自动浇灌我的植物。
以下是我在这个工程中使用的组件:

  • 树莓派3入门工具包

  • 12伏水泵

  • 12伏电源

  • 5伏继电器

  • 各种各样的跳线

  • 鳄鱼跳线

  • 硅胶管


一旦我拥有了所有我需要的组件,就到了做一些研究的时候了。以下是我用来连接电子设备时参考的资源,并对它们的工作原理有了基本的了解:

  • 电是如何工作的

  • 如何使用继电器

  • 从微型电脑树莓派向继电器供电

  • 将12伏电源连接到继电器上


这是树莓派上GPIO别针的图片:becbb9d697c74a8ad98497e02d032768.png
首先,我把继电器和树莓派连接起来,就像这样:

8b6096de75eb2e8f0f4de5f589b7583a.png

红线(母对母)从继电器板上的JD_VCC引脚引到树莓派上的5V引脚(引脚2)。橙色导线(母对母)从继电器板上的VCC引脚引到树莓Pi上的3.3V引脚(引脚1)。

97c89d41549ec59ba17f5a211c0ca4d0.png

通过连接这些电线,我们给了继电器板能量。为了实际控制单个继电器,我们需要将继电器板上的另外两个插脚连接到Raspberry Pi、GND(接地)插脚和IN1插脚上。

e5cc05ff586abbf435a8028c8b0d5167.png

黑色的电线(母对母)是接地线,它从继电器板上的GND引脚连接到Raspberry Pi上的任何地线(我用的是34号引脚)。白线(母对母)从继电器板上的IN1引脚引到树莓派上的12引脚。白线是允许我们打开和关闭继电器与代码。

0fe313f3d663d08dc796e56065f7a49c.png

你可以连接继电器和树莓派,如果你使用我提供的代码,一定要记得换密码。
将继电器板和树莓派连接好后,接着将12伏适配器连接到单个继电器上。不要把12V的电源适配器连接到墙上的电源插座上,直到你把所有的东西都连接好之后,你才应该这样做。

6cd5b2ea8d42fe192e61241e4d88017a.png

12伏电源有一个方便的适配器,你可以用它来连接电线。我把红色电线(公对公)连接到适配器的正号上,把棕色电线(公对公)连接到适配器的负号上。然后我把一个鳄鱼夹(母对公)加到棕色的金属丝上。

0ad051a09cdb7c270bd5574b4bac3bfe.png

继电器板有四个独立的继电器,每个继电器有三个输出,你可以在其中拧紧电线。中间的输出是你想要连接外部电源的正引线的地方,而左边的输出是你想要连接你想要供电的设备的正引线的地方。这对于板上的所有继电器都是一样的。

5d6f5ae82cdd46eaa5071fa8214ad78a.png

从12伏适配器,把红色电线(正/电源)连接到中间的继电器输出。然后,在继电器最左边的输出端接上一根新的橙色电线(公对公),并在橙色电线的末端接上一个鳄鱼夹(母对公)。

af0cbf6fb4b8dd3be0f37e530b630a5b.png1c931cf7e48b45edf9e9c7efbb5ceff6.png

00d3766b04dfe973783286856d1748bc.png

现在我们只需要把鳄鱼夹连接到水泵上。无论你以何种顺序将鳄鱼夹连接到泵上,你所做的只是设置水流。


我安装水泵的方式是,我想让水从左向右流动,所以我把黑色的鳄鱼夹和旁边有一个红点的别针连接起来,把另一个鳄鱼夹和水泵上的别针连接起来。如果我把鳄鱼夹的连接方式反过来,水就会从右向左流动。

b84de3fca390252655efd673f82c1138.pngd680d3d6b6d2d67f1fe5d3c35b93b895.png

水从左管流入,进入泵,从右管流出,然后进入植物
最后,我们来看看我真正擅长的部分,代码。为了与树莓派上的GPIO交互,我使用了gpiozero库。它真的很容易使用,并抽象出了许多低层操作,你通常需要学习,以开始与GPIO引脚交互。你可以在这里找到相关文档的链接。
在我们真正开始编写代码之前,您必须将树莓派连接到监视器、鼠标和键盘,或者您可以通过SSH连接到树莓派。
一旦你登录到你的树莓派,导航到你的桌面,并创建一个名为“run”的文件夹。在“run”里面,你会有另一个叫做“classes”的文件夹。现在在“classes”文件夹中,创建一个名为"Hardware.py"的文件,它应该是这样的:
在这个文件中,我只定义了一个名为Relay的新类,它继承自OutputDevice类。
接下来,在“classes”文件夹中,创建一个名为“TimeKeeper.py”的新文件。应该像下面这样:

bd7cb1e6026bd761bb90347d50e0584d.png

本质上,这个类的目的是记录当前时间和我们的植物最后一次浇水的时间。
“Harware.py”和“TimeKeeper.py”都在“classes”文件夹中。然后我创建了一个名为“water_plant.py”的新文件。我把它放在“classes”文件夹之外。
 "water_plant.py"文件看起来是这样的:

dccae0323687315991a068ab5715ea31.png

 你可以随意更改“WATERING_TIME”和“SECONDS_TO_WATER”变量的值。第一个变量决定一天中的什么时候植物应该收到水,而第二个变量决定植物收到水的时长。
 我还设置了电子邮件提醒,这样当你的植物浇水时,你就会收到一封电子邮件,每周五还会收到一封电子邮件,提醒你查看水位。默认情况下,我已经禁用了这些提醒,所以程序在启动时不会崩溃,但如果你想启用它们,你必须做三件事:
 1)必须更改第26行和第27行来包含您的Gmail和密码
 2)必须取消第63、65和68行注释
 3)必须到这里,用你想要接收提醒的Gmail登录,并切换到“on”,否则当你尝试用你的Gmail帐户发送电子邮件时,你会收到一个错误提示。同样重要的是,电子邮件提醒只适用于Gmail帐户。
 现在所有的文件都设置好了,你应该有如下目录树结构:6e81a3f915dddb4d6a19e3e7b9802a02.png

你可以把这个“run”文件夹放在树莓派的任何地方,但我只是决定把它放在桌面上。
最后,当我们想要运行“water_plant”脚本时,我想让脚本在我们打开树莓派时运行,而不是在每次我们想要运行树莓派的时候都将它连接到显示器上,这样我们就可以关闭树莓派并将它移动到任何地方。
一旦我们打开它,我们就不需要SSH到树莓派或将它连接到监视器来运行脚本。为此,我们需要使用“crontab”命令。
如果你打开树莓派上的一个终端窗口,要么把它连接到显示器上,要么把它转到显示器上,然后输入以下命令:

sudo crontab -e
你应该看到类似这样的东西:6bd52245a7a1497702ee7b7ce76d2b1d.png

在这个文件中,你要添加以下代码片段:

@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

fe8bbef9b8faef0b70dad9d2da79467b.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539417.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

htmlspecialchars() 函数过滤XSS的问题

htmlspecialchars()函数的功能如下: htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。 预定义的字符是: & (和号)成为 &" (双引号)成为 " (单引号)成为 …

用mac的python写网络爬虫_在mac下使用python抓取数据

2015已经过去,这是2016的第一篇博文! 祝大家新年快乐! 但是我还有好多期末考试! 还没开始复习,唉,一把辛酸泪! 最近看了一遍彦祖的文章叫做 所以自己也想小试牛刀.于是便开始动手写,但初次接触,…

運輸配送信息Delivery_Information

为什么80%的码农都做不了架构师?>>> 運輸配送信息Delivery_Information 金銀倉會選用以下運輸公司,為客戶配送磁磚傢俬潔具: 佛山冠昌達中港運輸(散貨或包車,近佛山石灣的磁磚倉庫,近樂從傢俬城…

Spring+SpringMVC+Mybatis 多数据源整合

原文地址:http://blog.csdn.net/q908555281/article/details/50316137 ----------------------------------- 此篇文章是基于Spring3.0和mybatis3.2的总体大概流程 :1. 拷贝所需jar 2.写一个数据库切换的工具类:DataSourceContextHolder&am…

查看mysql sql执行器优化后的sql

EXPLAIN EXTENDED select s.* from student s where s.sid in ( select sid from sc where sc.cid 0 and sc.score 100); show WARNINGS;

git ssh拉取代码_win10下git初始安装及配置工作

git安装从https://git-scm.com/https://git-scm.com/download/win 中下载安装包,点击exe文件运行,选择安装路径即可安装。git配置初次运行git前的配置,新建文件夹1、 新建一个文件夹,用来存放代码的文件夹---2、 打开文件夹&#…

联想m7400pro清零方法_联想打印机怎么清零 联想打印机清零方法【教程】

今天小编为读者挑选出了联想 打印机 部分机型的清零方式,希望阅读完这篇文章能帮助到各位。LJ3010A、LJ3116A、LJ3220A清零方式先点击控制面板上的“联机”按钮,让打印机处于脱机状态,再点击“执行”按钮进行打印。先点击控制面板上的“联机”…

c语言中数组名可以与其他变量名相同,C语言初学者入门讲座 第九讲 数组(1)...

C语言初学者入门讲座 第九讲 数组(1)(2007-01-17 11:39:19)数组在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中,数组属于构造数据类型。一个数组可以分解为…

pb通过对象名称调用对象_C++ 可调用对象(二)

点击上方“蓝字”,发现更多精彩。本文在前一篇关于函数对象、bind 函数的基础上,对 C 中 lambda不表达式的使用进行总结。lambda01PART定义一个 lambda 表达式表示一个可调用的代码单元,可以理解为是一个未命名的内敛函数。类似任何函数&…

交换机虚拟化和堆叠的区别_核心交换机和普通交换机有何区别?

提起核心交换机与普通交换机有什么区别?相信很多朋友都有点迷惑,今天我们一起来了解下。核心交换机并不是交换机的一种类型,而是放在核心层(网络主干部分)的交换机叫核心交换机。一般大型企业网络和网吧需要购买核心交换机来实现强大的网络扩…

tmpfiles.d导致的unix:///tmp/supervisor.sock no such file坑(待续)

为什么80%的码农都做不了架构师?>>> 系统环境: CentOS Linux release 7.1.1503 (Core) supervisor 3.3.1今天初七,刚放完假需要去supervisor restart下程序。发现报了这个错误。但是看supervisord的进程还在运行,项目代码也还在…

springMVC两种方式实现多文件上传及效率比较

springMVC实现多文件上传的方式有两种,一种是我们经常使用的以字节流的方式进行文件上传,另外一种是使用springMVC包装好的解析器进行上传。这两种方式对于实现多文件上传效率上却有着很大的差距,下面我们通过实例来看一下这两种方式的实现方…

c语言 个位,如何才能给C语言增加几个位操作函数

在汇编语言中有直接对位进行操作的指令,如置位、复位、位取反、测试某一位等,这对于硬件操作十分方便,在C语言中尽管也提供了一些位操作手段,如按位与、按位或、按位取反等,但它们是对一个字节进行操作,如要…

hsrp 切换_HSRP、VRRP、GLBP | 网络工程师之网关高可用、冗余

在RS的学习过程中我们接触到很多网络技术,后面就把工作中常用的拿来与大家分享,本次我们来分享网关冗余技术。当我们的网关设备无法使用堆叠(VSS,istack,IRF),或者不同厂商设备的时候,非常有效,能够提供网关…

Linux文件系统详解

从操作系统的角度详解Linux文件系统层次、文件系统分类、文件系统的存储结构、不同存储介质的区别(RAM、ROM、Flash)、存储节点inode。本文参考: http://blog.chinaunix.net/uid-8698570-id-1763151.htmlhttp://www.iteye.com/topic/816268http://soft.chinabyte.co…

opencv机器学习线性回归_机器学习(线性回归(二))

Lasso与岭回归的同和异Lasso、岭回归都可以预防模型过拟合Lasso回归惩罚项为L1正则,岭回归为L2正则Lasso回归可用来特征选择,岭回归则不能Lasso回归用坐标下降法求解,岭回归用梯度下降法求解。为什么Lasso可用于特征选择,而岭回归…

把EXCEL用程序导入到ORACLE中(SpringMVC+MyBatis)

前提&#xff1a;项目中需要把EXCEL数据批量导入oracle中两张表中。如是用到了poi技术。分别导入poi-3.11-beta2.jar和poi-ooxml-schemas-3.9.jar这两个包。EXCEL数据如下 第一步&#xff1a;修改spring框架配置文件。 springmvc-servlet.xml加上&#xff1a; <!-- 文件上传…

access实例_西门子PLC1200组态王跟Access数据库-⑥组态王变量

西门子PLC1200&#xff0c;组态王跟Access数据库--⑥组态王变量组态王的变量设置1.0 变量设置如下图所示&#xff0c;选择数据词典&#xff0c;里面是系统变量跟新建的变量&#xff0c;选择新建1.1 如下图&#xff0c;从上往下依次&#xff0c;变量名(这个应该知道)&#xff0c…

Android 撸起袖子,自己封装 DialogFragment

前言 具体的代码以及示例我都放上 Github 了&#xff0c;有需要的朋友可以去看一下 DialogFragmentDemos&#xff0c;欢迎 star 和 fork. 本文的主要内容 DialogFragment 是什么创建通用的 CommonDialogFragment实现各种类型的 DialogFragment在写正文之前&#xff0c;先来一波…

as模拟器文件夹路径_EGG Switch手机模拟器怎么用?中文教程来了......

大家好&#xff0c;小鸡妹我又来啦。自从昨天曝光了美国NX工作室的EGG模拟器之后&#xff0c;推文底下就多了一千多条留言&#xff0c;说啥的都有。不过小鸡妹大概总结了一下&#xff0c;发现下面这几条问题&#xff0c;出现的频率最高&#xff1a;① 找不到网址&#xff1b;②…