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

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

3天内不再提示

如何利用树莓派DIY一个门禁报警控制面板

科技观察员 来源:Colin O'Dell 作者:Colin O'Dell 2022-03-30 16:51 次阅读

这个项目是一个DIY触摸屏面板,用于布防/解除HomeAssistant的报警系统。它由RaspberryPi、3.5英寸触摸屏显示器、基于Python的自定义应用程序和MQTT提供支持。

本文将引导您完成项目的创建,并提供创建您自己的项目所需的一切!

家庭助理

HomeAssistant是一个了不起的开源家庭自动化平台。它的众多功能之一是能够实现您自己的家庭安全警报系统。然后,您可以使用各种传感器来确定是否/何时触发警报。

就我而言,我的所有外门上都有几个Z-Wave门传感器。如果在警报激活时任何门打开,我会在手机电脑上收到即时推送通知。最终,我将把它扩展到包括运动传感器和警报器。

虽然这工作正常,但布防/撤防设备的唯一方法是通过Web界面。不幸的是,手动警报没有一个API接口,我们可以使用它来发送布防/撤防命令,同时还可以从HA接收即时状态更改。

因此,我创建了新的手动MQTT警报组件,其功能与手动警报相同,但也允许通过MQTT进行双向通信!有了这个组件,我们可以使用我们可以想象的任何网络连接平台轻松构建自己的远程键盘。就我而言,我选择使用带有触摸屏的RaspberryPi构建解决方案。

硬件

至少,您需要以下组件:

树莓派

Adafruit的PiTFTPlus480x3203.5“TFT+触摸屏显示器

微型SD

用于供电的MicroUSB电缆

*我在这个项目中使用了PiZeroW,但是任何带有wifi的Pi都应该可以工作(即使是使用USBwifi适配器的)。

可选:该软件还支持可选的屏幕保护模式,在这种模式下,屏幕会在很长一段时间后黑屏。通过添加PIR运动传感器,我们可以让屏幕保持关闭,直到有人接近键盘,从而延长显示器的使用寿命。只需将PIR传感器连接到显示器底部的额外引脚-请参阅本页下方的运动传感器部分。

准备HomeAssistant和MQTT

HomeAssistantv0.50添加了我们需要使用的新alarm.manual_mqtt组件。这依赖于MQTT平台的启动和运行,因此请确保首先执行此操作。

要将警报添加到HomeAssistant,只需将其放入您的文件中:configuration.yml

pYYBAGJEGcuAHI_2AAAaqD91ZYM068.png

可以在文档页面上找到完整的配置选项列表。alarm.manual_mqtt

准备树莓派

PiTFT显示器需要特殊的内核驱动程序、配置和校准。Adafruit确实提供了一个很好的指南和预烘焙的操作系统映像,其中包括这些;但是,这个旧图像无法在PiZeroW上正常工作(wifi完全坏了)。

就我而言,我最终安装了最新版本的RaspbianJessieLite并按照这些说明使显示器正常工作。

注意:此项目不需要X桌面环境,因为软件直接绘制到屏幕的帧缓冲区。如果您按照上一个链接中的说明进行操作,只需跳过任何引用X11的部分。

此时,您的TFT上应该会出现一个功能齐全的LinuxCLI!

poYBAGJEGceAZI4aAAPMuXKMMZk101.png

要让触摸屏与pygame一起使用,请确保您使用的是SDL1.2。

现在我们可以在Pi上安装报警面板软件了!

软件

要安装它,请使用Git将存储库克隆到某个位置-我选择了/srv:

pYYBAGJEGcOAUnQuAAA0862hw84558.png

您还需要通过将.env.dist示例文件复制到.env并编辑以下设置来配置面板:

PINS-您想使用的4位密码的逗号分隔列表。

MQTT_HOST-MQTT服务器的IP或主机名

MQTT_USER-MQTT的用户名

MQTT_PASS-MQTT对应的密码

您现在可以运行该程序:

pYYBAGJEGbyAcWvoAAAOP5PnPsw647.png

最后,如果您希望警报面板在启动时启动,请将以下内容添加到您的rc.local文件(exit0行上方):

pYYBAGJEGbeAAcNrAAAPGypU7Ps884.png

可选运动传感器/屏幕保护程序

为了最大限度地延长显示器的使用寿命,可以使用PIR运动传感器在无人时自动关闭显示器。PiTFT显示器在其底部方便地暴露了GPIO引脚,因此只需进行以下连接:

直流至5v

GND到地

输出到任何未使用的GPIO(例如引脚23)

poYBAGJEGbKAZx78AAQ8PTYn0SY614.png

确保将以下行添加到您的.env文件中,以便控制面板了解您的传感器-将23替换为您选择使用的任何GPIO引脚:

PIR_GPIO_PIN=23

(如果您的控制面板已经在运行,那么您需要在进行此更改后重新启动它。)

用法

应用程序启动后,显示器应自动连接到MQTT。

poYBAGJEGa6AETDQAALVgHYbXH8857.png

每当HomeAssistant中的闹钟状态发生变化时,它都会通过MQTT自动将新状态实时推送到显示屏上。

要通过报警面板更改报警状态,您必须先按相应的数字键输入有效的PIN码。如果您不小心按错了按钮,只需点击被屏蔽的输入、#键或*键即可清除您的输入。

输入有效的PIN将解锁按钮以更改状态:

解除“武装”

离开

按下其中任何一个都会通过MQTT向HomeAssistant发送命令以进行相应的更改。

底层-创建UI和应用程序

设计UI相当简单。使用Photoshop,我创建了一个新的480x320工作区,并将其划分为相等单位的网格,以确保按钮的大小和对齐方式正确:

poYBAGJEGaiAdpWFAAG0vqjoUbA765.png

然后将每个按钮及其不同状态提取到PNG。

Python应用程序使用我在PyGame之上创建的自定义UI库。一切(除了状态文本)都呈现为具有多种状态的“按钮”:

PIN输入(1-9、*、0和#):

默认

按下

操作按钮(撤防、布防回家、布防离开):

默认(禁用)

激活(警报系统的当前状态)

可用(启用-输入正确的PIN后即可选择)

甚至显示当前屏蔽PIN的框也被绘制为带有状态的“按钮”:

默认(没有输入)

输入了1个号码

输入2个数字

输入3个数字

输入4个数字,PIN有效

输入4个数字,PIN不正确

每个按钮状态都有自己的图像-我们只需跟踪当前状态并根据需要在图像之间切换。

应用程序本身运行一个简单的事件循环——在每次迭代中,我们通过MQTT检查屏幕触摸或传入状态更改。UI状态也会根据需要重新绘制。为了防止CPU以100%的速度运行并产生过多的热量,我们还睡眠了很短的一段时间。

一旦输入正确的PIN,操作按钮就会解锁。当按下未锁定的操作按钮时,我们会立即通过MQTT向HomeAssistant发出命令,以相应地更改警报状态。

外壳

每个DIY项目都需要一个外壳,因此我尝试设计一个定制的3D打印外壳来容纳我的控制面板和PIR传感器:

这不是最漂亮的情况,一些内部测量不是100%完美的,还有一些小问题:

Pi的背面和外壳的背面之间有一个微小的间隙-理想情况下,我希望它们齐平。这是用热胶固定的。

支柱可能更坚固。

前面板的厚度略短于TFT显示器,使其突出约1毫米。

没有额外的通风孔(虽然热量还不是问题)。

设计非常基础(我不是设计师)。

由于这些原因,我将来可能会重新设计这个案例,但现在它已经足够满足我的需要了:)

显示器和PIR传感器的测量结果非常完美,因此它们非常适合并紧贴在外壳的前部。安装后,我使用了大量的热胶将PCB固定在正面内侧。

poYBAGJEGaKAASU4AAYEiHJa6mU652.png

对于后部,我只需将微型USB电缆穿过孔,将其插入Pi,然后将前后部件卡扣在一起。我之前添加的热胶仍然是温暖的,所以它有助于将前后部件粘合在一起。

pYYBAGJEGZ2ADCwEAAQefA14QG4756.png

然后我使用CommandLargePictureHangingStrips(带有类似尼龙搭扣的材料)将它安装在墙上。我本可以在外壳上打孔并使用螺丝,但我想要一些不那么永久的东西,以防我以后决定进行改进。

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

    关注

    5

    文章

    646

    浏览量

    75123
  • 面板
    +关注

    关注

    13

    文章

    1669

    浏览量

    53743
  • 树莓派
    +关注

    关注

    116

    文章

    1686

    浏览量

    105439
收藏 人收藏

    评论

    相关推荐

    16键CAN总线控制面板 按键面板 操作面板 硕博电子 #CAN总线 #按键面板 #控制面板

    控制面板
    长沙硕博电子科技股份有限公司
    发布于 :2024年09月02日 10:51:40

    pcb 控制面板

    `我在画灯的pcb,就剩IQS133的控制面板的部分,不知道控制面板在AD下怎么画了,有没有大神给些意见或建议的,谢谢~`
    发表于 06-14 15:57

    AllJoyn核心应用教程:Base Services服务之控制面板

    的UI进行动态渲染。控制面板服务抽象化了AllJoyn控制面板接口的细节,从而使其能够调用更高级别的API以及代码生成器,从而创建组件元素。控制
    发表于 09-21 10:40

    怎么实现基于msp430和电容式触控技术的门禁控制面板电路设计?

    怎么实现基于msp430和电容式触控技术的门禁控制面板电路设计?
    发表于 06-16 08:20

    数码印像机的控制面板/存储卡

    数码印像机的控制面板/存储卡  控制面板         &n
    发表于 12-23 14:38 884次阅读

    微软或逐步移除Windows 10中的控制面板

    Windows电脑中的控制面板往往包含针对系统设置的些高级选项,而微软已准备逐步将控制面板从系统中移除。但这过程又是循序渐进的,现有系统中既有基于平板设计的设置界面又有传统的
    的头像 发表于 03-24 09:17 2339次阅读

    win8控制面板在哪打开?

    其实打开Win8控制面板的方法有很多,笔者要列出来的话,估计可以列出上十种方法,看过Win8使用指南的朋友可能会觉得打开Win8控制面板没有Win7方便,其实也不是这样的,在Win8系统中我们打开控制面板最快的方法就是使用Win
    的头像 发表于 07-29 09:37 3661次阅读
    win8<b class='flag-5'>控制面板</b>在哪打开?

    再见,控制面板,Win10系统终于取消控制面板

    Windows 10做了大刀阔斧的改革,尽管充满争议,但微软直坚定不移地改变着,只是经常速度有点慢,比如经典的控制面板,其中的功能设置逐个转到新的电脑设置App。
    的头像 发表于 11-05 10:22 3643次阅读
    再见,<b class='flag-5'>控制面板</b>,Win10系统终于取消<b class='flag-5'>控制面板</b>

    nvidia控制面板怎么设置

    在我们日常生活中偶尔会遇到些自己不知道如何解决的问题,比如设置nvidia控制面板。那么我们应该怎样解决这种自己不知道如何设置nvidia控制面板的情况呢?那么接下来就由我来介绍
    的头像 发表于 01-22 16:43 1.7w次阅读
    nvidia<b class='flag-5'>控制面板</b>怎么设置

    CANoe控制面板的应用

    CANoe控制面板的应用说明。
    发表于 04-20 16:17 32次下载

    废弃的控制面板开源分享

    电子发烧友网站提供《废弃的控制面板开源分享.zip》资料免费下载
    发表于 11-16 11:15 0次下载
    废弃的<b class='flag-5'>控制面板</b>开源分享

    伺服控制面板开源分享

    电子发烧友网站提供《伺服控制面板开源分享.zip》资料免费下载
    发表于 12-09 15:39 0次下载
    伺服<b class='flag-5'>控制面板</b>开源分享

    基于树莓的家庭自动化控制面板

    方案介绍我想构建低于 300 美元的解决方案控制面板,用于在家中处理我的 Arduino 设备。最初我研究了 iPad 支架,但后来它使用 Linux、Raspbian 和使用触摸屏的 Web
    发表于 12-14 17:14 0次下载

    松下KAIROS控制面板的使用体验

    本期,来自松下的高级销售专员Keith Vidger将为大家分享松下KAIROS控制面板的使用体验与实际操作中的重要性。
    的头像 发表于 09-19 10:14 374次阅读

    松下KAIROS控制面板选项的使用教程与技巧

    本期,来自松下的高级销售工程师Keith Vidger将为大家分享松下KAIROS控制面板选项的使用教程与技巧。
    的头像 发表于 09-19 10:17 410次阅读