×

基于RFID的创客空间访问控制系统

消耗积分:0 | 格式:zip | 大小:0.81 MB | 2022-11-09

张杰

分享资料个

描述

我需要一个基于 RFID 的创客空间访问控制系统,它允许成员访问门和一些设备。在在线阅读了一些指南之后,我将它们组合在一起。

该系统包括一个通过 USB 电缆连接到 Raspberry Pi 的廉价 USB RFID 阅读器,以及一个 12V 继电器板,当 Raspberry Pi 的 GPIO 引脚触发时,该继电器板为电击供电,如下所示。

 
pYYBAGNomkOAMHkWAAMQKLu3EJA740.png
 

设计过程

挑选一个 RFID 阅读器

我在构建它时面临的障碍之一是 DIY RFID 市场明显不成熟。截至我在 2019 年撰写本文时,如果我们对不适合我们用例的手持式阅读器和其他设备打折,RFID 阅读器有三种形式。

第一个是来自传统 DIY 卖家的天线和电路板。SparkFun 有几个RFID 天线和兼容的RFID 板Adafruit 有一个用于 Arduino 的 RFID 扩展板,以及一个带有 PS/2 接口的组装好的RFID 阅读器这些都至少要花费 40 美元左右,并且需要一些技术知识来设置。

第二类包括来自专注于 RFID 的工程公司的超优质产品,例如来自 AtlasRFIDstore.com 的Thingmagic Elara USB RFID 阅读器这是 475 美元

最后一类是通过亚马逊、新蛋、阿里巴巴等平台销售的数十种相同的、廉价的中国电子产品。如果你在其中任何一个或只是谷歌上搜索 RFID 阅读器,你会看到下面看到的几十个小黑盒子,价格从 5 美元到 20 美元不等。这是一个价格非常低廉的即用型解决方案,所以这是我推荐的。

我试图避免在亚马逊和其他剥削性市场购物,但我不知道这些低成本中国 RFID 阅读器的信誉良好的来源,所以我选择了 NewEgg。欢迎提出更好来源的建议。

 
你会一遍又一遍地看到这个确切的产品。

选择你的频率

这个问题在我使用的教程和大多数指南中没有得到很好的解决令人困惑。然而,我发现基本应用有两个主要标准:125kHz 和 13.56MHz。还有许多其他高级应用,例如汽车遥控钥匙链中使用的有源 RFID 技术,但如果您想解锁一扇门,只需获取其中一个即可。我建议的廉价、可疑的制造产品有两种。我建议13.56MHz。我使用 125kHz,因为那是我最初购买的,两者在功能上似乎相同,但 13.56 似乎更常见,因此更容易购买标签。无论您采用哪种选项,本指南的其余部分都应适用,只需注意您的所有 RFID 标签和所有 RFID 阅读器都需要匹配。您还可以获得可写标签来存储信息,但我只是使用带有简单 ID 号的永久标签。也许 writable 在未来的项目中会很酷,但我认为在这个项目中不需要它。

设置 RFID 阅读器

首先,通过 USB 将您的 RFID 阅读器连接到运行 Windows 的计算机。它的电源灯会亮起,如果你在上面刷一个标签,阅读器会发出哔哔声,灯会闪烁一次。如果您打开记事本并滑动,您会看到标签的代码出现。这是因为这些 USB RFID 阅读器模拟键盘。他们读取 RFID 编号,然后按顺序将其输出为 ASCII 字符。

接下来,使用最新版本的 Raspbian OS 设置您的 Raspberry Pi,并创建一个工作目录。创建一个包含用户列表及其 ID 的文本文件,并复制提供的测试代码以开始使用。Python 脚本需要 root 权限才能从通过 USB 插入的 RFID 阅读器读取信号,因此请使用“sudo”前缀运行脚本。

运行时,脚本应持续监控 RFID 阅读器。找到代码后,它将检查它是否在已批准代码列表中,并报告相关用户的名称或报告未在列表中找到代码。

设置继电器

由于此时您应该已经让 RFID 阅读器工作,我建议将继电器板连接到 Pi,如下图所示。电源和接地连接可以连接到任何 5V 和 GND 引脚,但是我将引脚 2 用于 5V 引脚,将引脚 4 用于接地。我使用 Pin 11 (GPIO17) 作为我的信号。如果您使用不同的信号引脚,请务必在 python 脚本中进行更改。

 
poYBAGNomk2Ac5lLAACP_3wvLUo119.png
继电器板的电源线、地线和信号线
 

现在,当你刷一个标签时,如果它被批准,那么继电器板应该激活 3 秒钟,点亮一个 LED 并在关闭之前发出咔哒声。

设置电击

通过将其连接到 12V 电源来测试雷击。如果您愿意,您可以添加一个筒形插孔连接器,但是我只是将连接器从电源上切断并剥去电线。检查电源以确定哪根线是正极,哪根是接地线,然后用鳄鱼夹将电线临时连接到电击。您可以插入电源或打开插入电源的电涌保护器,并且罢工应该会发出微弱的嗡嗡声,并且门应该从固定过渡到可移动。

根据您的型号,您的电击可能有两根或四根电线。我发现的罢工有四个,因为它被设计为与 12V 或 24V 电源兼容。在数据表中,每个都有一个连接指南,所以我为 12V 进行了必要的连接。

一旦你确信它可以工作,将电源的地线焊接到罢工的地线或通过其他方式将它们永久连接。将正极引线连接到继电器的中心连接器,即公共连接器。它应该被标记为“COM”。然后将罢工的正极连接到继电器的常闭门。它应该标记为“NC”,而不是标记为“NO”的常开门。

现在大部分工作已经完成。如果 Raspberry Pi 已打开且 12V AC-DC 转换器已插入,则运行读取 RFID 阅读器的 python 脚本(以 root 用户身份,如前所述)。现在,在 RFID 阅读器上刷一个经过批准的 RFID 标签应该会像之前一样激活继电器,但它应该在启动时启动门锁,让门打开。

设置脚本以在启动时运行

根据你的需要,你可以称之为完成,但至少有两件事你可能仍然想做。首先,您需要设置一种跟踪徽章的方法,其次,您需要将系统设置为在插入 Pi 时自动启动。否则,如果出现电源故障,门锁定将保持关闭,直到手动重置。

Dexter Industries在此页面上找到了设置 Python 脚本以在启动时运行的说明。以 root 用户身份在 Nano 中编辑文件“/etc/rc.local”:

sudo nano /etc/rc.local

添加命令以启动程序,使用其完整路径名。

sudo python /home/YOUR_DIRECTORY_PATH/sample.py &

在末尾包含 & 以指示它在后台运行,并确保文本文件的最后一行保持原来的“exit 0”(显然没有引号)。

重启测试。python 脚本应在启动时立即运行。

跟踪 RFID 滑动事件

如果您希望能够查看谁在什么时间使用了门,您可以通过查看日志文件来实现。每次通过 python 脚本检查徽章时,日志文件都会附加时间、ID 号和关联的用户。但是您可能希望能够在不使用 SSH 访问 Raspberry Pi 的情况下读取文件。为此,我们需要设置一个自动化流程,以在每次徽章滑动事件发生时将日志文件复制到云存储驱动器。为此,我建议使用Rclone

要使用 Rclone,您首先需要获取 Google Drive 文件夹的 API 密钥。这个过程最好在 Annis Souames 在 Medium 上的一篇文章中描述:“如何使用 Python 自动上传文件以驱动” 他的指南介绍了使用 PyDrive python 库设置文件同步的过程。您可能想尝试完成他的教程,看看它是否适合您。我使用 Rclone 是因为我无法让 Python 识别 PyDrive 命令,但如果对你有用,那就太好了。

如果没有,那么只需确保您生成了 Annis 引导您在 Google 开发者控制台上生成的 API 密钥。有很多按钮,但是如果您按照他的指示进行操作,它应该可以工作。

克隆

获得 API 密钥后,运行

sudo rclone config

如果你在没有 sudo 的情况下运行它,它看起来工作正常,但是当你尝试在 python 脚本中运行 rclone 命令时,它将失败,因为 python 脚本以 root 用户身份运行。

rclone config 命令将生成并保存 rclone 配置文件。发现如果它不是以 root 权限生成的,那么你的 python 脚本将找不到它,因为它以 root 用户身份运行。

完全按照用于设置 Google Drive 同步的 rclone 文档中的描述运行配置过程

完成后,尝试测试命令。登录到关联的 Google Drive 帐户并检查文件是否已上传。现在,取消注释在每次徽章滑动后运行 rclone 的行。这会将日志文件复制到 Google Drive。

我建议为此项目创建一个与您的个人 Google Drive 帐户不同的专用 Google 帐户,然后与您的常规帐户共享用于复制日志文件的文件夹。原因是 rclone 功能强大,可以删除或覆盖 Google Drive 上的任何文件。在发生事故或某种黑客攻击的情况下,Rclone 理论上可用于窃取或勒索它所连接的相关云存储位置中的数据。我使用我的 Google Drive 来存储敏感信息,所以我采取了这一步来隔离我宝贵的云存储空间中的日志文件同步过程。

更进一步,第一部分:门开关

一旦阅读器工作,我还将一个磁性门传感器连接到 Raspberry Pi,它会读取门状态何时从打开变为关闭或反之亦然,并将其记录在日志文件中。它在图中表示为一个按钮,因为它的工作方式相同:当门关闭时,电路关闭,当门打开时,电路也是如此。它需要一个上拉电阻,我将它连接到 Pi 的第一个引脚,它提供恒定的 3V。

 
poYBAGNomlGAJfT_AAM7vuQTYik303.png
这是添加了一个简单按钮的电路,因为磁性门传感器根据相同的原理工作。
 

更进一步,第二部分:LCD

LCD 允许 Pi 向用户提供反馈。事实证明,这对用户体验产生了巨大影响:人们避免使用该系统,因为它不透明且缺乏清晰的反馈。LCD 允许 Pi 声明“ACCESS GRANTED”,然后是人们似乎喜欢的用户名。

 
pYYBAGNomlWAag-dAAGlQEC6Ko0613.png
 

Circuit Basics有一个关于将 LCD 连接到 Pi 的很好的指南。我连接了以下引脚:

  • LCD 1 (GND) 到 Pi 39 (GND)
  • LCD 2 (VCC) 至 Pi 4 (5V)
  • LCD 3 (V0) 连接到 2 kOhm 电阻,然后连接到 GND
  • LCD 4 (RS) 到 Pi 37 (GPIO26)
  • LCD 5 (R/W) 至 GND
  • LCD 6 (E) 至 Pi 35 (GPIO19)
  • LCD 7、8、9、10:未使用
  • LCD 11 (D4) 到 Pi 33 (GPIO13)
  • LCD 12 (D5) 到 Pi 31 (GPIO6)
  • LCD 13 (D6) 至 Pi 29 (GPIO5)
  • LCD 14 (D7) Pi 23 (GPIO11)
  • LCD 15 (K) 至 GND
  • LCD 16 (A-Red) 到 Pi 11 (GPIO17) 的 330 欧姆电阻
  • LCD 17 (A-Green) 到 Pi 27 (GPIO13) 的 330 欧姆电阻
  • LCD 18 (A-Blue) 到 Pi 22 (GPIO15) 的 330 欧姆电阻

大多数传统 LCD 都有一个 LED 背光,但这个有三种不同的颜色,这使得 Pi 可以随文本更改 LCD 背景颜色。我真的很喜欢这个效果,因为它在正常使用时呈蓝色,但在授予访问权限时变为绿色,在拒绝访问时变为红色。

更进一步,第三部分:门铃

像许多工业设施一样,我们的创客空间变得响亮,敲门声听不见。当无法进入的人要求进入时,一个按钮会向里面的人发出警报。该按钮的操作方式与门开关相同。一端连接到 LCD 使用的共享 GND 连接,以减少穿过墙上小孔的电线数量。另一端连接到 Pi 引脚 12 (GPIO18)。它也被连接到引脚 1 的上拉电阻拉高。然后 Pi 可以使用另一个继电器激活蜂鸣器或通过其音频插孔激活声音,或通过 SMS 文本消息或许多其他选项发送通知。

 
poYBAGNomlqAdUFgAAG-YkCY3pY500.png
 

 


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

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !