0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用Raspberry Pi构建一个智能车库开门器

科技观察员 来源:circuitdigest 作者:Rishabh Jain 2022-09-07 15:54 次阅读

在本教程中,我们将使用 Raspberry Pi 构建一个智能车库开门器。这里将创建一个Raspberry Pi Web 服务器,以使用您的智能手机打开和关闭车库门。

所需组件

安装了 Raspbian 的树莓派

继电器模块

连接电线

假设您的 Raspberry Pi 已刷入操作系统并能够连接到 Internet。如果没有,请 在继续之前遵循Raspberry Pi 入门教程。这里我们使用 Rasbian Jessie 安装 Raspberry Pi 3。

在这里,使用 HDMI 电缆的外部显示器用作与 Raspberry Pi 连接的显示器。如果您没有显示器,您可以使用 SSH 客户端(Putty)或 VNC 服务器使用笔记本电脑或计算机连接到树莓派。在此处了解有关无头设置 Raspberry Pi 的更多信息

电路原理

pYYBAGMYTfiAN0QyAAD9ws9nxmk903.png

将车库门开启机构连接到继电器的输出端。在这里,为了演示目的,我们刚刚连接了一个带继电器的 LED

pYYBAGMYTfOAWMGLAASHt1Fi9Fo986.png

Raspberry Pi 中用于控制车库门的 Flask 设置

在这里,我们使用 Flask创建了一个 Web 服务器,它提供了一种 将命令从网页发送到 Raspberry Pi 以通过网络控制机器人的方法。Flask 允许我们通过网页运行我们的 python 脚本,我们可以从 Raspberry Pi 向网络浏览器发送和接收数据,反之亦然。 Flask 是 Python 的微框架。这个工具是基于 Unicode 的,具有内置的开发服务器和调试器、集成的单元测试支持、对安全 cookie 的支持及其易于使用,这些东西使它对业余爱好者很有用。

运行以下命令在您的 Raspberry Pi 中安装烧瓶:

sudo apt-get 更新

sudo apt-get install python-pip python-flask

现在,运行 pip 命令来安装 Flask 及其依赖项:

sudo pip 安装烧瓶

poYBAGMYTfCAEWoAAAG2CxYxbDo157.png

您可以在此处了解有关 使用 Flask 编程的更多信息,还可以查看我们之前的项目,其中我们使用 Flask通过 webserver 控制机器人, 将消息从网页发送到 Raspberry Pi , 并将重量值发送到 Smart Container 中的 Raspberry Pi。

现在,我们将为我们的车库门 Web 服务器编写一个 Python 脚本。

为智能车库门开启器创建 Python 脚本

该脚本将与我们的 Raspberry Pi GPIO 交互并设置 Web 服务器。所以,这是我们应用程序的核心脚本。最后给出了完整的开门器Python脚本,这里我们解释了它的几个部分。

首先,制作一个文件夹。所有其他必需的文件夹应仅在此文件夹中。运行以下命令以创建文件夹并在此文件夹内创建名为app.py的 python 文件。

mkdirgarage_door 
cdgarage_door 
nano app.py

这将打开 Nano 编辑器,我们必须在其中编写脚本。

首先包括重要的库。

从烧瓶导入 RPi.GPIO 作为 GPIO
导入 Flask, render_template, request 
app = Flask(__name__, static_url_path='/static')

现在,创建一个字典作为引脚来存储引脚编号、名称和引脚状态。您可以根据需要使用多个引脚。

pin = { 
   14 : {'name' : '车库门', 'state' : GPIO.LOW} 
   }

然后,将引脚设置为输出并最初将其设为低电平。

​对于引​​脚中的引脚:
   GPIO.setup(引脚,GPIO.OUT)
   GPIO.输出(引脚,GPIO.LOW)

现在,创建一个 main 函数来读取引脚状态并将此状态存储在一个变量中。

@app.route("/") 
def main(): 
   for pin in pin: 
      pins[pin]['state'] = GPIO.input(pin) 
..

我们必须将此数据传递给我们的 html 页面,以便我们可以控制输入按钮的状态。

   return render_template('main.html', **templateData)

现在,创建一个函数来处理来自 URL 的请求,其中包含 pin 号和操作。

@app.route("//", methods=['GET', 'POST']) 
def action(changePin, action):

将来自 URL 的 pin 转换为整数。

   changePin = int(changePin)

如果 URL 的操作部分是“打开”,则执行以下操作。

   if action == "open": 
      GPIO.output(changePin, GPIO.HIGH) 
   if action == "close": 
      GPIO.output(changePin, GPIO.LOW)

您可以从本教程的末尾复制完整的脚本并使用 ctrl+x 保存它,然后按 Enter。我们已经完成了 python 脚本。现在,我们必须制作一个 HTML 页面来与 python 脚本交互。

为 Raspberry Pi Webserver 创建 HTML 页面

在同一个garage_door文件夹中,创建另一个名为templates的文件夹,并在该文件夹中使用以下命令创建一个.html 文件。

pYYBAGMYTemAY8sSAAAmGqAS9WA150.png

在nano文本编辑器中,编写 html 代码。您可以编辑页面的

部分并根据您的选择设置样式。我刚刚使用了使用链接标签的第三方 css 方案。完整的 HTML 代码如下:
poYBAGMYUCSAFDSRAACNFBWxHMM937.png

这里重要的部分是创建一个按钮来打开和关闭门,并为打开和关闭按钮分配一个状态。该按钮将从 python 脚本发送和获取 GPIO 状态。

您可以在编辑器中使用上面给出的 HTML 代码并保存它。现在 Web 服务器已准备好启动。

打开终端并导航到garage_door文件夹并运行以下命令

须藤蟒蛇app.py
poYBAGMYTeOAHXbcAAFP5FZ-epg436.png

打开浏览器并输入您的树莓派 IP 地址并回车。要查找您的 IP 地址,您可以在终端中运行以下命令。

主机名 -I

你会看到这样的页面。

poYBAGMYTeCAOj0wAABi9Exhqd8256.png

确保继电器模块连接到树莓派。按打开按钮打开继电器或打开车库门。您还可以查看继电器的状态。一旦您打开继电器,按钮文本将更改为关闭以关闭继电器。现在,当您再次单击按钮时,继电器将关闭,按钮文本将再次更改为打开。

要停止服务器,请按 ctrl+c 。

因此,只需将此继电器连接到市场上现成的一些开门器机构,然后开始使用智能手机控制车库门。
从烧瓶导入 RPi.GPIO 作为 GPIO

导入 Flask,render_template,请求

app = Flask(__name__, static_url_path='/static')

GPIO.setmode(GPIO.BCM)

引脚 = {

14 : {'name' : '车库门', 'state' : GPIO.LOW}

}

用于引脚中的引脚:

GPIO.setup(pin, GPIO.OUT)

GPIO.output(pin, GPIO.LOW)


@app.route("/")

def main():

for pin in pins:

pins[pin]['state'] = GPIO.input(pin)

templateData = {

'pins' : pins

}

return render_template('main. html', **templateData)

@app.route("//", methods=['GET', 'POST'])

def action(changePin, action):

changePin = int(changePin)

deviceName = pin[changePin]['name']

if action == "open":

GPIO.output(changePin, GPIO.HIGH)

if action == "close":

GPIO.output(changePin, GPIO.LOW)

for pin in pins :

引脚[pin]['state'] = GPIO。输入(引脚)

模板数据 = {

“引脚”:引脚

}

return render_template('main.html', **templateData)

if __name__ == "__main__":

app.run(host='0.0.0.0', port=80, debug=True)

GPIO.cleanup()

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2909

    文章

    44557

    浏览量

    372774
  • 智能车库
    +关注

    关注

    0

    文章

    9

    浏览量

    7346
收藏 人收藏

    评论

    相关推荐

    如何使用Raspberry Pi3和蓝牙构建遥控汽车

    今天我们将使用Raspberry Pi 3和蓝牙构建遥控汽车,在这里我们将使用智能手机作为遥控来控制汽车。
    的头像 发表于 11-21 17:14 2572次阅读
    如何使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>3和蓝牙<b class='flag-5'>构建</b>遥控汽车

    【创想未来】智能车库

    项目名称: 智能车库团队名称:创想未来团队成员:王飞林 黄猛 侯奇作品演示作品介绍当今社会的快速发展,汽车的需求量快速增加,随之而来的是智能车库的诞生与发展,但是人们只局限于对大型公共车库和地下
    发表于 01-07 12:12

    【HarmonyOS HiSpark Wi-Fi IoT HarmonyOS 智能家居套件试用 】智能车库

    项目名称:智能车库门试用计划:智能车库门主要功能如下:1、驱动24V电机实现快速开关车库门,并且在此过程中使用多圈绝对值编码定位车库门当前
    发表于 09-25 10:04

    怎样去设计种基于HC-SR04模块的智能车库控制系统

    如何利用超声波测距来实现智能车报警的功能呢?怎样去设计种基于HC-SR04模块的智能车库控制系统?
    发表于 10-18 09:31

    Raspberry Pi扩展板

    描述clumsyMIDI - 树莓派扩展板 Raspberry Pi 扩展板,包含 MI
    发表于 07-29 06:12

    微雪电子 Raspberry Pi Zero WH智能车介绍

    树莓派Zero WH 二代智能车 人工智能机器人 套件 专为Raspberry Pi Zero WH设计的智能车可以实现避障、超声波测距、
    的头像 发表于 11-19 15:22 1895次阅读
    微雪电子 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Zero WH<b class='flag-5'>智能车</b>介绍

    构建Raspberry Pi电机驱动HAT的教程分享

    本教程中,我们将构建Raspberry Pi 电机驱动 HAT来驱动直流和步进电机。此电机
    发表于 08-05 16:20 1450次阅读
    <b class='flag-5'>构建</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>电机驱动<b class='flag-5'>器</b>HAT的教程分享

    使用Raspberry Pi构建OpenCV人群计数装置

    在本教程中,我们将使用 Raspberry Pi 和 ThingSpeak 构建 OpenCV 人群计数。
    的头像 发表于 08-12 17:24 2996次阅读
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b><b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个</b>OpenCV人群计数装置

    构建基于Raspberry Pi的蓝牙扬声

     在这篇文章中,我们将通过融合 A2DP、Linux 和音频编解码的强大功能来构建基于 Raspberry Pi 的蓝牙扬声,以将数据包
    发表于 08-31 16:22 2021次阅读
    <b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个</b>基于<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>的蓝牙扬声<b class='flag-5'>器</b>

    使用Raspberry Pi构建水位传感

    电子发烧友网站提供《使用Raspberry Pi构建水位传感.zip》资料免费下载
    发表于 10-28 16:08 0次下载
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b><b class='flag-5'>构建</b>水位传感<b class='flag-5'>器</b>

    构建自己的Raspberry Pi ALPR停车系统

    电子发烧友网站提供《构建自己的Raspberry Pi ALPR停车系统.zip》资料免费下载
    发表于 11-08 11:14 0次下载
    <b class='flag-5'>构建</b>自己的<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> ALPR停车系统

    Raspberry Pi Zero便携终端的构建

    电子发烧友网站提供《Raspberry Pi Zero便携终端的构建.zip》资料免费下载
    发表于 01-05 10:43 0次下载
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Zero便携终端的<b class='flag-5'>构建</b>

    寻找实用的Raspberry Pi项目? 制作智能伞架!

    本教程将分步指导您如何制作智能伞架。这是我最喜欢的Raspberry Pi 项目之
    的头像 发表于 02-24 17:22 989次阅读
    寻找实用的<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>项目? 制作<b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>智能</b>伞架!

    我的第一个智能车库构建

    电子发烧友网站提供《我的第一个智能车库构建.zip》资料免费下载
    发表于 07-12 10:03 0次下载
    我的第<b class='flag-5'>一个</b><b class='flag-5'>智能车库</b><b class='flag-5'>构建</b>

    ESP32-C3+智能车库门应用方案 小尺寸低功耗

    以前的车库门Opener只能通过墙壁开关或者遥控来控制开启或关闭,超过定距离的话无法通过遥控来操控车库门,也无法随时查看
    的头像 发表于 03-27 08:03 603次阅读
    ESP32-C3+<b class='flag-5'>智能车库</b>门应用方案  小尺寸低功耗