基于树莓派设计的RFID门禁系统

描述

本项目使用树莓派设计门禁或设备的访问控制系统,系统根据用户列表检查RFID标签,允许拥有授权RFID标签的指定成员进入室内。系统包括一个USBRFID读取器(读取器通过其USB线缆连接到树莓派),以及一个12V继电器电路板。当树莓派GPIO引脚触发时,继电器电路板为电子门锁供电。

硬件:

1、树莓派3ModelB。任何树莓派都可以使用。树莓派从两个传感器接收数据,并向继电器发送信号以解锁门。

2、Adafruit5V2.5A开关电源。为树莓派提供电源

3、电子门锁。确保使用电压、继电器板和触发电源匹配即可。

4、Parallax12V继电器。继电器板上电时,解开电动门锁。

5、Adafruit12VDC1000mA(1A)稳压开关电源适配器

6、125kHzUSBRFID读取器

7、AdafruitRGB背光LCD-16x2

软件:树莓派Raspbian、Python3、Rclone

门禁系统

开发过程

1、RFID读取器的选择

项目面临的首个难题是DIYRFID读取器,如果不考虑手持式读取器,第一种方法是自行购买RFID天线和电路板构建RFID读取器,但是需要一定的硬件知识。第二种方法是购买专业RFID设备,第三种本文的方法是网购低成本的RFID读取器。

门禁系统

门禁系统

2、选择工作频率

项目涉及两个主要标准:125kHz和13.56MHz。先进应用使用有源RFID技术,比如汽车的远程钥匙扣所使用的技术,但是如果仅仅用于解锁门,不需要有源RFID。建议使用13.56MHz。其与125kHz在功能上似乎是相同的,但是13.56MHz似乎更常见,因此更容易购买相关配件。无论选择何种方式,本文剩余部分适用,RFID标签和RFID读取器需要匹配。可以使用可擦写的标签来存储信息,这里使用永久存储简单ID的标签。

3、设置RFID读取器

将RFID读取器通过USB连接到Windows计算机。电源指示灯亮起之后,如果标签接近感应区域,读取器将发出蜂鸣声,并且指示灯将闪烁一次。如果打开PC自带的记事本程序并滑动标签,将会看到标签的代码。这是因为USBRFID读取器可模拟键盘,读取RFID编号,然后按ASCII字符顺序输出。

使用最新版本的RaspbianOS设置树莓派,创建目录和文本文件,包含用户及其ID列表,复制提供的测试代码,开始使用。Python脚本需要root特权才能通过USBRFID读取器读取信号,因此请使用“sudo”前缀运行脚本(script)。运行时,脚本应连续监视RFID读取器。找到代码后,将检查代码是否在批准的代码列表中,报告相关用户的名称,或报告在列表中未找到该代码。

设置继电器

门禁系统

RFID读取器正常工作之后,将继电器电路板连接到树莓派。电源和接地连接到5V和GND,但是这里将树莓派的引脚2用于5V,将引脚4用于接地,引脚11(GPIO17)用于信号。如果使用其他信号引脚,请确保在python脚本中更改此设置。轻扫标签,如果标签通过认证,继电器电路板激活3秒钟,LED亮起,发出咔嗒声,然后关闭。

设置电子门锁

将电子门锁连接12V电源,对其进行测试。如果需要,可以添加插孔连接器。检查电源,确定电源正极和接地,使用鳄鱼夹临时连接电线和电子门锁线。插入电源,也可以打开电涌保护器,然后电子门锁发出微弱声音,门锁应从固定变为活动状态。

根据不同型号,电子门锁可能有两根或四根电线。四根电线设计为与12V或24V电源兼容。确定电子门锁正常工作,就将电源接地线焊接到接地线上,或者通过其他方式将其永久连接。将正极导线连接到继电器的中间接头,通常标记为“COM”。将电子门锁的正极连接至继电器的常闭闸门(closedgate),通常标记为“NC”,而不是标为“NO”的常开闸门。

如果树莓派已打开,12VAC-DC转换器接入,则运行读取RFID读取器python脚本(以root用户身份)。RFID读取器识别授权RFID标签,继电器激活,打开电子门锁。

在开机时运行脚本

至少仍需要做两件事:设置一种跟踪谁登录的方法;将系统设置为在插入树莓派的时候自动启动。否则,如果发生电源故障,则电子门锁将保持关闭状态,直到手动重置为止。可设置python脚本,在开机的时候运行,一种方法是以root用户身份在Nano中编辑文件“/etc/rc.local”。

sudonano/etc/rc.local

使用完整路径名称,添加指令启动程序。

sudopython

/home/

YOUR_DIRECTORY_PATH/sample.py&

在末尾包括“&”,表明其在后台运行,并确保文本文件的最后一行保持原始状态的“exit0”(不带引号)。重新启动进行测试。python脚本应在启动后立即运行。

追踪RFID刷卡动作

可通过查看日志文件查看何人何时使用了系统,每次python脚本检查的时候,日志文件都会附加时间、ID号和相关用户等信息。但是有些用户可能希望在不使用SSH的情况下访问树莓派并读取文件,可设置一个自动过程,以在每次发生刷卡的时候,将日志文件复制到云存储。这里使用Rclone命令行工具。要使用Rclone,需要获取Google云端硬盘文件夹的API密钥。使用Rclone是因为无法让Python识别PyDrive命令。

Rclone命令行工具

拥有API密钥后,运行:

sudoRclone

config

如果在不使用sudo的情况下运行此命令,看起来正常工作,但是当尝试在python脚本中运行Rclone命令时,将不能正常工作,因为python脚本以root用户身份运行。

Rcloneconfig命令将生成并保存Rclone配置文件。如果不使用root特权生成,python脚本将找不到它,因为它以root用户身份运行。完全按照Rclone文档说明进行配置过程,以设置Google云端硬盘同步。

完成上述步骤,尝试测试命令。登录到Google云端硬盘帐户,然后查看文件是否已上传。取消注释每次刷卡后运行Rclone命令行。这会将日志文件复制到Google云端硬盘。建议为此项目创建一个与个人Google云端硬盘帐户不同的专用Google帐户,然后与您的普通帐户共享用于复制日志文件的文件夹。这样做的原因是Rclone功能强大,能够删除或覆盖Google云端硬盘上的任何文件。在发生事故或某种形式的黑客攻击的情况下,Rclone理论上可以用于在与其连接的相关云存储位置中窃取或勒索数据。这里使用Google云端硬盘存储敏感信息,因此采取了这一步骤来从宝贵的云存储空间中隔离日志文件同步过程。

应用延伸1:门开关

门禁系统

RFID读取器进入工作状态,将磁性门传感器连接到树莓派,该传感器读取门状态,从打开状态变为关闭状态(反之亦然)的信息,并将其记录在日志文件中。门的开关在图中以按钮表示,因为其工作方式相同:当门关闭时,电路关闭;而当门打开时,电路也关闭。需要一个上拉电阻,将其连接到树莓派的第一个引脚,该引脚可提供恒定3V电压。

应用延伸2:LCD

门禁系统

LCD使树莓派可以为用户提供反馈信息,提升用户体验。大多数传统LCD具有LED背光灯,背光灯具有RGB三个不同的颜色,使得树莓派可以随着文本更改LCD背景颜色,比如在正常使用期间为蓝色,在授予访问权限时变为绿色,在拒绝访问时变为红色。

应用延伸3:门铃

门禁系统

当外来人员来访,可为系统添加按钮和门铃功能,该按钮的一端连接到LCD,共享GND连接,减少穿过墙壁的电线数量。另一端连接到树莓派引脚12(GPIO18)。也可以通过连接到引脚1的上拉电阻,将其拉高。树莓派可以使用另一个继电器来激活蜂鸣器,或者通过其音频插孔激活声音,或者通过SMS短信或其他多种方式发送通知。

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

全部0条评论

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

×
20
完善资料,
赚取积分