- 所需组件
- 电路原理图
- Raspberry Pi中的烧瓶设置用于控制车库门
- 为智能车库门开启器创建Python脚本
- 为Raspberry Pi Web服务器创建HTML页面
- {{pins.name}} {%如果pins.state == true%} 当前处于打开状态
在物联网时代,可以使用智能手机远程控制一切,为什么要随身携带钥匙。有很多技术可以支持对RFID,蓝牙,Wi-Fi,LoRa等设备进行无线控制。我们之前建立了一些门警报器和门控制电路,以无线方式打开和关闭门:
- Arduino RFID门锁
- 使用Arduino的自动开门器
- 使用霍尔传感器的电磁门报警电路
- 由Google Assistant控制的基于物联网的门禁安全警报
在本教程的此处,我们将使用Raspberry Pi构建智能车库门开启器。在这里,将创建一个Raspberry Pi Web服务器,以使用智能手机打开和关闭车库门。
所需组件
- 装有Raspbian的Raspberry pi板
- 继电器模块
- 连接线
假定您的Raspberry Pi已经使用操作系统进行了刷新,并且能够连接到Internet。如果不是这样,请在继续之前遵循Raspberry Pi入门教程。在这里,我们使用的是 Rasbian Jessie安装的Raspberry Pi 3。
在这里,使用HDMI电缆的外部监视器用作与Raspberry Pi连接的显示器。如果没有监视器,则可以使用SSH客户端(Putty)或VNC服务器使用笔记本电脑或计算机连接到Raspberry pi。在此处了解有关无头设置Raspberry Pi的更多信息。
电路原理图
将车库门打开装置连接到继电器的输出。在这里,我们刚刚连接了带继电器的LED进行演示。
Raspberry Pi中的烧瓶设置用于控制车库门
在这里,我们使用Flask创建了一个Web服务器,该服务器 提供了一种 从网页向Raspberry Pi发送命令以 通过网络控制机器人的方法。Flask允许我们通过网页运行python脚本,并且我们可以从Raspberry Pi向网络浏览器发送和接收数据,反之亦然。Flask是Python的微框架。该工具基于Unicode,具有内置的开发服务器和调试器,集成的单元测试支持,对安全cookie的支持及其易于使用,这些使它对爱好者有用。
运行以下命令将烧瓶安装在Raspberry Pi中:
sudo apt-get更新 sudo apt-get安装python-pip python-flask
现在,运行pip命令安装Flask及其依赖项:
sudo pip安装瓶
您可以在此处了解有关使用Flask进行编程的更多信息,还可以检查以前的项目,在这些项目中我们使用Flask通过网络服务器控制机器人,将网页中的消息发送到Raspberry Pi,并将重量值发送到Smart Container中的Raspberry Pi。
现在,我们将为车库门Web服务器编写一个python脚本。
为智能车库门开启器创建Python脚本
该脚本将与我们的Raspberry Pi GPIO交互并设置Web服务器。因此,这是我们应用程序的核心脚本。最后给出了用于开门器的完整Python脚本,在这里我们解释了其中的几个部分。
首先,制作一个文件夹。所有其他必需的文件夹应仅在此文件夹中。运行以下命令以创建文件夹,并 在该文件夹中创建名为 app.py的 python文件。
mkdir garage_door cd garage_door nano app.py
这将打开我们必须编写脚本的Nano编辑器。
首先包括重要的库。
从烧瓶 导入RPi.GPIO作为GPIO导入Flask,render_template,请求app = Flask(__ name__,static_url_path ='/ static')
现在,创建一个字典作为 引脚, 以存储引脚号,名称和引脚状态。您可以根据需要使用多个引脚。
引脚= { 14:{'name':'车库门','state':GPIO.LOW} }
然后,将该引脚设置为输出,并使其最初为低电平。
对于引脚输入:GPIO.setup(引脚,GPIO.OUT)GPIO。输出(引脚,GPIO.LOW)
现在,建立一个主要功能来读取引脚状态并将该状态存储在变量中。
@ app.route(“ /”) def main(): 用于插针: 插针= GPIO.input(插针) ..
我们必须将此数据传递到html页面,以便我们可以控制输入按钮的状态。
返回render_template('main.html',** templateData)
现在,创建一个函数来处理来自URL的请求,其中包含密码和其中的密码。
@ app.route(“ /
将图钉从URL转换为整数。
changePin = int(changePin)
如果URL的操作部分为“打开”,请执行以下操作。
如果操作==“打开”: GPIO.output(changePin,GPIO.HIGH) 如果操作==“关闭”: GPIO.output(changePin,GPIO.LOW)
您可以从本教程的结尾复制完整的脚本,并使用ctrl + x保存它,然后按Enter。我们已经完成了python脚本。现在,我们必须制作一个HTML页面以与python脚本进行交互。
为Raspberry Pi Web服务器创建HTML页面
在同一 garage_door 文件夹中,创建另一个名为 template的 文件夹,并在该文件夹内使用以下命令创建一个.html文件。
mkdir模板 cd模板 nano main.html
在 nano 文本编辑器中,编写html代码。您可以编辑 页面的一部分,并根据您的选择设置样式。我刚刚使用了使用链接标记的第三方css方案。完整的HTML代码如下:
车库门Web服务器
{%表示为图钉%}{{pins.name}} {%如果pins.state == true%} 当前处于打开状态
在这里,重要的部分是创建一个用于打开和关闭门的按钮,并为 打开 和 关闭 按钮分配状态。该按钮将发送并从python脚本获取GPIO状态。
您可以在编辑器中使用上述给定的HTML代码并将其保存。现在,Web服务器已准备好启动。
打开终端并导航到 garage_door 文件夹并运行以下命令
须藤python app.py
打开浏览器,输入您的树莓派IP地址,然后按Enter。要找到您的IP地址,您可以在终端中运行以下命令。
主机名-I
您将看到一个这样的页面。
确保中继模块已连接到树莓派。按“ 打开” 按钮 打开 继电器或打开车库门。您还可以查看继电器的状态。打开继电器后,按钮文本将更改为“ 关闭” 以关闭继电器。现在,再次单击按钮时,继电器将关闭,并且按钮文本将再次更改为“ 打开” 。
要停止服务器,请按ctrl + c。
因此,只需将此继电器连接到市场上现成的一些开门器机构,然后即可使用Smartphone来控制车库门。
下面是一个演示视频。