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

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

3天内不再提示

如何将RFID模块与Raspberry Pi集成在一起

王萍 来源:Winnie62 作者:Winnie62 2023-02-27 10:27 次阅读

这篇文章来源于DevicePlus.com英语网站的翻译稿。

目的

教程旨在展示何将RFID读卡器和执行器与Raspberry Pi集成在一起。基于本文讨论的基本原理,我们还会制造一个RFID狗门。

概述

在本教程中,我将介绍如何将RC522 RFID模块与Raspberry Pi基板集成在一起。我还将展示如何集成一个执行器(本例中是一个LED),来响应RFID模块的正确读取信息。该执行器可以是电磁锁、扬声器,甚至可以是记录数据的Web界面。我还会介绍如何利用此设计实现一个RFID狗门。

设备

表1:设备

物品 链接
Raspberry Pi 3 Raspberry Pi 链接
RC522 RFID 模块 RFID 模块链接
HDMI 线 HDMI 线链接
LED Adafruit LED链接
鼠标 + 键盘 键盘/鼠标的Amazon链接
显示器/电视机 任何带有HDMI接口的电视机或显示器
跳线 跳线的Amazon链接
Micro USB 数据线 Micro USB数据线的Amazon链接
面包板 面包板的Amazon链接

目录

1. 设计电路

2. 编写代码

a.启用 SPI

b.安装软件包

c.添加到 Read.py

3. 运行代码

a.获取 UID

b.运行最终脚本

4. 制作狗门的注意事项

5.其他设备选项

6.附录:Read.py

程序

1. 设计电路

我一直喜欢使用开源的原理图绘制和PCB布线软件Fritzing来制作接线图(图1:执行器为LED的电路原理图)。您可以通过以下链接(可选)下载Fritzing: https://fritzing.org/home/

第一张原理图是我正在制作的以LED作为执行器的电路。当RFID模块产生正确读取信号,LED会亮起。

第二个电路中的执行器是一个电磁锁。这个电路用于实现门锁和狗门设计。TIP120是一款达林顿功率晶体管阵列。它只允许Raspberry Pi控制电磁锁,电磁锁所需功率比Paspberry Pi的GPIO端口的输出还要大。

pYYBAGPzJMWAXZvpAAKacGZKKLY632.png

图1:执行器为LED的电路原理图 poYBAGPzJMaATyibAAKvuawHEro355.png

图2:执行器为电磁锁的电路原理图 RC522 RFID模块使用SPI(串行外围接口总线)连接到Raspberry Pi。SPI总线在嵌入式系统中应用相当普遍。读卡器应根据下表进行接线。

表2:RC522接线表

RC522 Pin Raspberry Pi 引脚 导线颜色
3.3V 引脚 1
RST 引脚 22
GND 引脚 6
MISO 引脚 21
MOSI 引脚 19
SCK 引脚 23 绿
SDA 引脚 24

我将执行器(一个LED)连接到了Raspberry Pi的引脚18。你也应该连接这个引脚。

2. 编写代码

a. 启用 SPI

第一步是在Raspberry Pi上启用SPI。为此,请打开命令行窗口并输入sudo raspi-config。系统会弹出Configuration Menu。选择菜单5“Interfacing Options”。现在选择“P4 SPI”。当系统问你是否要启用SPI接口时,选择“Yes”。配置菜单将显示“The SPI interface is enabled.”。要完成SPI的启用,请打开命令行终端并输入命令sudo reboot。Raspberry Pi会重启,从而完成SPI启用。

b. 安装软件包
我们要用的库是用Python 2编写的,不是Python 3。因此,第一步是安装Python 2.7。请输入sudo apt-get install python2.7-dev完成该操作。SPI PY库负责与RC522模块通信。我通过键入命令git clone https://github.com/lthiery/SPI-Py.git来克隆这个库。然后安装该库。首先,通过键入cd SPI-Py进入SPI-Py目录。然后键入sudo python setup.py install安装库。

c. 添加到 Read.py
Read.py脚本需要更改才能与RC522模块对话。编辑此脚本时,请滚动到脚本底部,然后加入注释“Authenticate”。本教程不涉及RFID的身份验证。确保在脚本头添加时间库。接下来找到标题为“#Configure LED Output Pin”的部分。这里是你配置执行器的地方。如果要将该设计应用于狗门,那么应将输出引脚配置到电磁锁。

接下来找到标题为“#Check to see if card UID read matches your card UID.”的部分。该If/Else语句检查读卡器从卡上读取的UID与您之前保存在脚本中的UID是否匹配,如果UID匹配,则执行器的输出为高。

3. 运行代码

a. 获取 UID

首次运行脚本时,您需要获取卡的UID。RFID卡的UID是与此卡相关联的唯一编号,类似于序列号。

要运行脚本,请将目录更改为保存脚本的目录。然后输入python Read.py,运行脚本。因为脚本读卡器UID,所以当你将卡放在读取器上时,它会拒绝访问。屏幕上会显示这张卡的UID。记下这个UID。编辑脚本,然后将脚本的UID更改为此值并保存。

pYYBAGPzJMiAbXlhAAGzA0sjS1Q495.png

图3:脚本运行,显示UID b. 运行最终脚本

输入python Read.py,再次运行脚本。现在,当你将卡放在读卡器上时,验证通过且LED会亮5秒钟。如果将你的设计应用于狗门,那么在验证通过后电磁锁会打开。

pYYBAGPzJMqALBXVAAIOGVuz1Wc750.jpg

图4:等待读卡

poYBAGPzJMuAAw9NAAJh20m59I4320.jpg

图5:验证通过 4. 制作狗门的注意事项

如果要将该设计实现为一个狗门,那么你需要考虑其他一些设计技巧:

1. 添加第二个电磁锁,以保证两侧锁门。

2. 在门上添加一个霍尔效应(磁传感器)传感器和一块磁铁,以便让Raspberry Pi在锁门之前知道门已返回到关闭位置。

3. 如果你真的很有想法,那么可以围绕门设计较大的环形天线,代替在门上安装小型读卡器。你需要电磁线,而且需要将其焊接到读取模块上。这需要资深技巧,有关环形天线的信息请在这里阅读。

4. 如果你是资深程序员,那么可以阅读MFRC522 数据表,更改芯片组上的固件,更好地满足自己的应用要求。

5. 其他设备选项

a.门锁

b.安全锁

c.支付设备

d.运输跟踪/物流

e.零售/购物

6. 附录:Read.py

#!/usr/bin/env python
# -*- coding: utf8 -*-
 
import RPi.GPIO as GPIO
import MFRC522
import signal
import time
 
continue_reading = True
 
# Capture SIGINT for cleanup when the script is aborted
def end_read(signal,frame):
    global continue_reading
    print ("Ctrl+C captured, ending read.")
    continue_reading = False
    GPIO.cleanup()
 
# Hook the SIGINT
signal.signal(signal.SIGINT, end_read)
 
# Create an object of the class MFRC522
MIFAREReader = MFRC522.MFRC522()
 
# Welcome message
print ("Welcome to the MFRC522 data read example")
print ("Press Ctrl-C to stop.")
 
# This loop keeps checking for chips. If one is near it will get the UID and authenticate
while continue_reading:
    
    # Scan for cards    
    (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
 
    # If a card is found
    if status == MIFAREReader.MI_OK:
        print ("Card detected")
    
    # Get the UID of the card
    (status,uid) = MIFAREReader.MFRC522_Anticoll()
 
    # If we have the UID, continue
    if status == MIFAREReader.MI_OK:
 
        # Print UID
        print ("Card read UID: "+str(uid[0])+","+str(uid[1])+","+str(uid[2])+","+str(uid[3])+','+str(uid[4]))  
        # This is the default key for authentication
        key = [0xFF,0xFF,0xFF,0xFF,0xFF,0xFF]
        
        # Select the scanned tag
        MIFAREReader.MFRC522_SelectTag(uid)
        
        #ENTER Your Card UID here
        my_uid = [61,84,4,114,31]
        
        #Configure LED Output Pin
        LED = 18
        GPIO.setup(LED, GPIO.OUT)
        GPIO.output(LED, GPIO.LOW)
        
        #Check to see if card UID read matches your card UID
        if uid == my_uid:                #Open the Doggy Door if matching UIDs
            print("Access Granted")
            GPIO.output(LED, GPIO.HIGH)  #Turn on LED
            time.sleep(5)                #Wait 5 Seconds
            GPIO.output(LED, GPIO.LOW)   #Turn off LED
            
        else:                            #Don't open if UIDs don't match
            print("Access Denied, YOU SHALL NOT PASS!")
        
##        # Authenticate
##        status = MIFAREReader.MFRC522_Auth(MIFAREReader.PICC_AUTHENT1A, 8, key, uid)
##
##        # Check if authenticated
##        if status == MIFAREReader.MI_OK:
##            MIFAREReader.MFRC522_Read(8)
##            MIFAREReader.MFRC522_StopCrypto1()
##        else:
##            print "Authentication error"



审核编辑:汤梓红

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

    关注

    242

    文章

    23272

    浏览量

    660788
  • RFID
    +关注

    关注

    388

    文章

    6149

    浏览量

    237850
  • 读卡器
    +关注

    关注

    2

    文章

    412

    浏览量

    39372
  • Raspberry Pi
    +关注

    关注

    2

    文章

    559

    浏览量

    22218
收藏 人收藏

    评论

    相关推荐

    OLED显示器如何与Raspberry Pi一起使用?

    我们大多数人都熟悉16×2点阵LCD显示器,在大多数项目中用于向用户显示些信息。但是这些LCD显示器有很多局限性。在本教程中,我们将了解OLED显示器以及如何将它们与Raspberry Pi
    的头像 发表于 11-17 16:52 4892次阅读
    OLED显示器如何与<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b><b class='flag-5'>一起</b>使用?

    如何将CYKIT-028 TFT模块Raspberry Pi和ESP32微控制器结合使用?

    我目前正在探索如何将 CYKIT-028 TFT 模块Raspberry Pi 和 ESP32 微控制器结合使用。 不过,在选择集成开发
    发表于 05-21 07:36

    请问如何将两个独立multisim的文件连接两个在一起仿真..

    请问如何将两个独立multisim的文件连接两个在一起,进行仿真?百度了好久,都没有答案,求大神帮助!!{:1:}
    发表于 08-13 19:26

    分布测量参数整合在一起测量

    如何将几个分布测试的参数通过种方式将其整合在一起,将其全部测量出来?请求大神解答?
    发表于 09-10 21:50

    通过以太网线与VEE一起使用Raspberry Pi不起作用

    大家好,我想通过以太网线与VEE一起使用Raspberry Pi。我的问题是VEE没有检测到我的设备,我尝试使用覆盆子的IP地址进行手动配置,但它不起作用。 Raspberry
    发表于 10-10 17:15

    如何将高图形性能和低功耗更好地结合在一起

    本文介绍了Silicon Motion开发的新架构如何将高图形性能、低延迟、高效数据压缩和低功耗更好地结合在一起
    发表于 06-01 06:52

    如何将DMA和环形的FIFO队列结合在一起来使用呢

    如何将DMA和环形的FIFO队列结合在一起来使用呢?有哪些实验步骤呢?
    发表于 12-09 08:05

    用于Raspberry Pi的DIN导轨安装

    设计允许 DINPi 板反向或倒置使用而不会出现问题。镜像引脚(见下文)允许使用直角接头和插座多个板连接在一起,也可用于倒置安装 Raspberry Pi,同时保持正确的 GPIO
    发表于 08-26 07:55

    浅谈数字孪生如何将物理和数字连接在一起且应用

    随着能力和成熟程度的提高,数字孪生的应用正在成倍增长。但是,要发挥其最大潜力,可能需要将整个生态的系统和数据集成在一起
    的头像 发表于 04-25 11:28 5404次阅读
    浅谈数字孪生<b class='flag-5'>如何将</b>物理和数字连接<b class='flag-5'>在一起</b>且应用

    如何将PCF8591 ADC模块Raspberry Pi连接

     在本教程中,我们学习如何将 PCF8591 ADC/DAC 模块Raspberry Pi 连接。
    的头像 发表于 08-26 15:58 4253次阅读
    <b class='flag-5'>如何将</b>PCF8591 ADC<b class='flag-5'>模块</b>与<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>连接

    使用Raspberry Pi 4和RFID模块的考勤系统

    电子发烧友网站提供《使用Raspberry Pi 4和RFID模块的考勤系统.zip》资料免费下载
    发表于 12-01 14:29 0次下载
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 4和<b class='flag-5'>RFID</b><b class='flag-5'>模块</b>的考勤系统

    如何将RFID RC522与Raspberry Pi连接

    电子发烧友网站提供《如何将RFID RC522与Raspberry Pi连接.zip》资料免费下载
    发表于 12-14 09:48 0次下载
    <b class='flag-5'>如何将</b><b class='flag-5'>RFID</b> RC522与<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>连接

    Arduino库与Raspberry Pi Pico C/C++ SDK一起使用

    电子发烧友网站提供《Arduino库与Raspberry Pi Pico C/C++ SDK一起使用.zip》资料免费下载
    发表于 06-15 14:43 1次下载
    <b class='flag-5'>将</b>Arduino库与<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Pico C/C++ SDK<b class='flag-5'>一起</b>使用

    如何将16x2 LCD与Raspberry pi4连接

    电子发烧友网站提供《如何将16x2 LCD与Raspberry pi4连接.zip》资料免费下载
    发表于 06-19 11:45 0次下载
    <b class='flag-5'>如何将</b>16x2 LCD与<b class='flag-5'>Raspberry</b> <b class='flag-5'>pi</b>4连接

    如何将两个16*2 LCD与arduino连接在一起

    电子发烧友网站提供《如何将两个16*2 LCD与arduino连接在一起.zip》资料免费下载
    发表于 06-30 09:39 0次下载
    <b class='flag-5'>如何将</b>两个16*2 LCD与arduino连接<b class='flag-5'>在一起</b>