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

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

3天内不再提示

别再用钥匙啦!树莓派Pico教你用RFID“刷”门禁~

上海晶珩电子科技有限公司 ? 2025-04-23 16:03 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

619ac6bc-2019-11f0-9434-92fbcf53809c.jpg

RFID卡和标签无处不在!我们在建筑物中使用它们进行门禁控制。打印机和复印机可以使用它们来识别员工。牲畜标记和宠物识别标签也都使用某种形式的RFID技术。RFID读取设备的成本非常低,大约5美元即可获得读卡器,再搭配4美元的树莓派Pico,即可读取卡片/标签的ID信息。

在本教程中,我们将学习如何使用MFRC522读卡器和树莓派Pico读取RFID标签和卡片。目标是创建一个虚构的RFID门禁控制系统,该系统允许用户进入建筑物,或提醒安保人员将其移除。在开始之前,我们需要识别卡片/标签的ID。本教程的第一部分将介绍如何完成这一操作,然后我们将插入一些代码来控制两个LED灯以模拟锁定机制。

所需材料

运行MicroPython的树莓派Pico

MFRC522 RFID读卡器

大型面包板

11根公对公跳线

绿色LED灯

红色LED灯

2个100欧姆电阻(棕-黑-棕-金)

硬件搭建

61c14328-2019-11f0-9434-92fbcf53809c.jpg

硬件搭建分为两个部分。首先是MFRC522 RFID读卡器的接线。读卡器使用SPI与树莓派Pico通信,需要七个引脚。其中两个用于供电(3.3V和GND),其余用于SPI。

61e45a0c-2019-11f0-9434-92fbcf53809c.png61fa41c8-2019-11f0-9434-92fbcf53809c.jpg第二部分是我们的输出设备。为了确认是否出示了正确的卡片,我们需要添加两个LED灯。红色表示错误的RFID卡,绿色表示正确的卡。LED灯连接到一个GPIO引脚,我们通过控制该引脚来打开或关闭LED灯,并通过一个100欧姆电阻连接到任意可用的GND引脚。您可以使用220或330欧姆的电阻,我桌上刚好有一些100欧姆的电阻。需要计算正确的电阻值吗?我们为您准备了指南!

6210f5da-2019-11f0-9434-92fbcf53809c.png6227006e-2019-11f0-9434-92fbcf53809c.jpg

在继续之前,请检查您的接线是否正确。

安装RFID读卡器软件

MFRC522是一个简单的RFID读卡器,为了使其更易于使用,我们使用了一个MicroPython模块来简化操作。该模块pico-rfid由Tom's Hardware的朋友Kevin McAleer开发,基于Danjperron工作。

1.将树莓派Pico连接到电脑,并打开Thonny。我们假设您已经知道如何设置树莓派Pico。如果没有,我们有一份便捷的指南。

2.创建一个新的空白文件,并将此链接的内容复制到空白文件中。然后将其保存到树莓派Pico,文件名为mfrc522.py。这是使我们的代码能够与RFID读卡器通信的Python模块/库。

编写项目代码

完成所有设置后,我们现在开始编写项目代码。为此,我们将再次使用Thonny,并编写代码来检查提交给读卡器的任何RFID卡的ID。对于第一部分,我们需要记录ID,因为我们稍后将使用它进行条件测试来检查ID是否与硬编码值匹配,然后允许进入。否则,我们将收到“ACCESS DENIED”(访问被拒绝)消息。

1.在Thonny中创建一个新的空白文件。

2.导入三个模块(库)以使用MFRC522 RFID读卡器、控制代码节奏以及使用GPIO。

frommfrc522importMFRC522importutimefrommachineimportPin

3.创建一个对象reader,以告诉代码RFID读卡器连接到哪里。

reader= MFRC522(spi_id=0,sck=2,miso=4,mosi=3,cs=1,rst=0)

4.为红色和绿色LED灯创建两个对象,告诉代码LED灯连接到哪里,并且它们是我们要向其发送电流的输出设备

red= Pin(14, Pin.OUT)green= Pin(15, Pin.OUT)

5. 向用户显示一条简短消息,指示他们将卡片出示给读卡器。“\n”是Python在print()函数末尾引入新行的语法。

print("Present the card to the reader\n")

6. 创建一个名为“PreviousCard”的列表,并在其中存储零值。我们稍后将使用此列表来存储当前卡片的ID。

PreviousCard= [0]

7. 创建一个while True循环,以持续运行其中的代码。

whileTrue:

8. 初始化读卡器,使其准备好使用。

reader.init()

9.创建一个元组来存储读卡器状态和RFID标签类型。

(stat, tag_type) = reader.request(reader.REQIDL)

10. 如果读卡器已准备好,则if条件语句将读取卡片内容。然后,它将使用卡片的详细信息更新stat和uid对象。

ifstat== reader.OK: (stat, uid) = reader.SelectTagSN()

11. 如果卡片的uid与PreviousCard对象中存储的值相同,则代码将继续执行。当同一张卡片反复出示给读卡器时,就会发生这种情况。

ifuid == PreviousCard: continue

12. 创建一个if条件语句来检查卡片读取是否成功。

ifstat== reader.OK:

13.向用户显示一条消息,然后将卡片的UID存储到一个名为“card”的对象中。然后将卡片详细信息打印到Python shell中。

print("The card details are as follows") card = reader.tohexstring(uid) print(card)

14.使用出示卡片的uid更新PreviousCard对象。

PreviousCard= uid

15.创建一个else条件,当没有出示卡片时运行。更新PreviousCard对象。然后在主循环重复之前添加50毫秒的暂停。

else: PreviousCard=[0] utime.sleep_ms(50)

16.将代码保存到树莓派Pico,文件名为reader.py,然后点击“运行”>>“运行当前脚本”(或按下绿色播放按钮)。按照指示将RFID卡片/标签出示给读卡器。

17.复制整个卡片详细信息,这是RFID卡片的uid,我们将在本教程的下一部分中使用它。uid看起来像这样,但您的会有所不同。

[0x04, 0xBC, 0xA0, 0x9A, 0xB3, 0x43, 0x80]

完整代码列表

frommfrc522importMFRC522importutimefrommachineimportPinreader = MFRC522(spi_id=0,sck=2,miso=4,mosi=3,cs=1,rst=0)red = Pin(14, Pin.OUT)green = Pin(15, Pin.OUT)print("Present the card to the reader\n")PreviousCard = [0]whileTrue: reader.init() (stat, tag_type) = reader.request(reader.REQIDL) ifstat == reader.OK: (stat, uid) = reader.SelectTagSN() ifuid == PreviousCard: continue ifstat == reader.OK: print("The card details are as follows") card = reader.tohexstring(uid) print(card) PreviousCard = uid else: PreviousCard=[0] utime.sleep_ms(50)

18.我们已经获得了代码,我们希望使用该代码来授予访问权限,并点亮绿色LED灯。如果将另一张卡片/标签出示给读卡器,则红色LED灯将点亮。

1.在这两行之间,添加新的代码行。

print(card)NEWCODE GOES HERE PreviousCard = uid

2.创建一个if条件,检查您的卡片的uid。请注意,它看起来像一个Python列表,但实际上它存储为字符串,因此我们需要将值用“”括起来。不要忘记[]括号。

ifcard =="[0x04, 0xBC, 0xA0, 0x9A, 0xB3, 0x43, 0x80]":

3.如果card对象中存储的值与硬编码值匹配,则在Python shell中打印“ACCESS GRANTED”(访问已授予)。

print("ACCESS GRANTED")

4.创建一个for循环,将绿色LED灯打开/关闭十次,每次状态变化之间间隔0.1秒。在for循环结束时关闭绿色LED灯。

fori in range(10): green.toggle() utime.sleep(0.1) green.off()

5. 当将未识别的卡片/标签出示给读卡器时运行使用else条件语句。这将使红色LED灯打开和关闭就像绿色LED灯一样。

else: print("ACCESS DENIED") for i inrange(10): red.toggle() utime.sleep(0.1) red.off()

6 .将代码命名为reader.py并保存到树莓派Pico。点击“运行”>>“运行当前脚本”(或按下绿色播放按钮)。按照指示将RFID卡片/标签出示给读卡器。如果卡片正确,则绿色LED灯将闪烁,并且Python shell将打印“ACCESS GRANTED”。尝试使用另一张RFID卡片/标签,这应该会使红色LED灯点亮,并且Python shell将打印“ACCESS DENIED”。

完整代码列表

frommfrc522importMFRC522importutimefrommachineimportPinreader = MFRC522(spi_id=0,sck=2,miso=4,mosi=3,cs=1,rst=0)red = Pin(14, Pin.OUT)green = Pin(15, Pin.OUT)print("Present the card to the reader\n")PreviousCard = [0]whileTrue: reader.init() (stat, tag_type) = reader.request(reader.REQIDL) ifstat == reader.OK: (stat, uid) = reader.SelectTagSN() ifuid == PreviousCard: continue ifstat == reader.OK: print("The card details are as follows") card = reader.tohexstring(uid) print(card) ifcard =="[0x04, 0xBC, 0xA0, 0x9A, 0xB3, 0x43, 0x80]": print("ACCESS GRANTED") foriinrange(10): green.toggle() utime.sleep(0.1) green.off() else: print("ACCESS DENIED") foriinrange(10): red.toggle() utime.sleep(0.1) red.off() PreviousCard = uid else: PreviousCard=[0] utime.sleep_ms(50)

原文地址:

https://www.tomshardware.com/raspberry-pi/raspberry-pi-pico/how-to-use-an-rfid-reader-with-a-raspberry-pi-pico

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

    关注

    392

    文章

    6478

    浏览量

    243015
  • 读卡器
    +关注

    关注

    2

    文章

    440

    浏览量

    40410
  • 树莓派
    +关注

    关注

    122

    文章

    2031

    浏览量

    107674
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

    本项目使用树莓设计门禁或设备的访问控制系统,系统根据用户列表检查RFID标签,允许拥有授权RFID标签的指定成员进入室内。系统包括一个US
    的头像 发表于 04-01 14:50 ?7401次阅读
    基于<b class='flag-5'>树莓</b><b class='flag-5'>派</b>设计的<b class='flag-5'>RFID</b><b class='flag-5'>门禁</b>系统

    教你用树莓截屏和截图

    本帖最后由 348081236 于 2016-1-13 15:25 编辑 看贴的朋友们吱一声,让我知道我没白打字。谢谢大家了。这个教程教你如何截取和查看树莓截图。Scrot
    发表于 01-13 15:22

    树莓怎么制作门禁系统?

    现在实验室门禁都是刷卡进入,经常忘记带卡而进不去,所以就用树莓自己做了一个脸认证的门禁
    发表于 09-11 11:52

    树莓pico入门学习笔记(一)相关资料推荐

    树莓pico入门学习笔记选择自己熟悉的编程语言树莓pico提供C/C++和micropyth
    发表于 07-01 09:28

    树莓pico如何入门?

    树莓pico如何入门?
    发表于 10-13 08:11

    树莓Pico的相关资料分享

    关注、星标公众号,直达精彩内容1月22日,树莓基金会最新发布一款低成本、高性能的微控制器开发板Raspberry Pi Pico,新产品相比普通树莓
    发表于 11-03 08:44

    树莓Pico的相关资料推荐

    1月22日,树莓基金会最新发布一款低成本、高性能的微控制器开发板Raspberry Pi Pico,新产品相比普通树莓体积更小,售价仅4
    发表于 02-07 07:37

    教你用热像仪检测锂电池

    教你用热像仪检测锂电池
    发表于 02-07 13:26 ?13次下载

    树莓也出MCU了?树莓Pico来了!

    关注、星标公众号,直达精彩内容1月22日,树莓基金会最新发布一款低成本、高性能的微控制器开发板Raspberry Pi Pico,新产品相比普通树莓
    发表于 10-28 10:36 ?11次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>也出MCU了?<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>来了!

    树莓Pico:仅4美元的MCU

    1月22日,树莓基金会最新发布一款低成本、高性能的微控制器开发板Raspberry Pi Pico,新产品相比普通树莓体积更小,售价仅4
    发表于 12-04 13:06 ?14次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>:仅4美元的MCU

    树莓pico入门学习笔记(一)

    树莓pico入门学习笔记选择自己熟悉的编程语言树莓pico提供C/C++和micropyth
    发表于 12-17 18:42 ?21次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>pico</b>入门学习笔记(一)

    距离检测报警使用树莓Pico

    电子发烧友网站提供《距离检测报警使用树莓Pico.zip》资料免费下载
    发表于 11-09 11:49 ?0次下载
    距离检测报警使用<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>

    基于树莓pico的可编程游戏手柄设计

    方案介绍组件12x12x7.3mm 瞬时触觉按钮按钮树莓Pico通用 D1286464 OLED 显示屏操纵杆模块 PS210 欧姆电阻?组装将树莓
    发表于 12-26 15:10 ?4次下载

    如何在树莓Pico上使用红外线接收模块?

    树莓 Pico 上使用红外线接收模块(HX1838 型),我们采用开源的 pico_ir 库。
    的头像 发表于 11-30 09:08 ?2987次阅读
    如何在<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>上使用红外线接收模块?

    树莓 Pico 2040 的“速度狂飙”:时钟速度几乎翻倍!

    树莓Pico2040的“超能力”升级如果你手头有一个树莓Pico2040,但总觉得它的性能还
    的头像 发表于 03-25 09:25 ?444次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b> <b class='flag-5'>Pico</b> 2040 的“速度狂飙”:时钟速度几乎翻倍!