RFID Unit

RFIDUnit 是一款用于 RFID 卡读写操作的硬件模块。它扩展了 MFRC522 驱动,支持卡片检测、读取、写入,以及选择和唤醒 RFID 卡等高级功能。

支持以下产品:

RFIDUnit

MicroPython 应用示例

 1# SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD
 2#
 3# SPDX-License-Identifier: MIT
 4
 5import os, sys, io
 6import M5
 7from M5 import *
 8from hardware import *
 9from unit import RFIDUnit
10import time
11
12
13title0 = None
14i2c0 = None
15rfid_0 = None
16
17
18def setup():
19    global title0, i2c0, rfid_0
20
21    M5.begin()
22    Widgets.fillScreen(0x222222)
23    title0 = Widgets.Title(
24        "RFIDUnit CoreS3 Example", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu18
25    )
26
27    i2c0 = I2C(0, scl=Pin(1), sda=Pin(2), freq=100000)
28    rfid_0 = RFIDUnit(i2c0)
29
30
31def loop():
32    global title0, i2c0, rfid_0
33    print(rfid_0.is_new_card_present())
34    print(rfid_0.read_card_uid())
35    print(rfid_0.read(1))
36    time.sleep_ms(100)
37
38
39if __name__ == "__main__":
40    try:
41        setup()
42        while True:
43            loop()
44    except (Exception, KeyboardInterrupt) as e:
45        try:
46            from utility import print_error_msg
47
48            print_error_msg(e)
49        except ImportError:
50            print("please update to latest firmware")

UiFlow2 应用示例

example.png

rfid_cores3_example.m5f2

class RFIDUnit

Constructors

class RFIDUnit(i2c, address)

使用 I2C 通信初始化 RFIDUnit,并可选指定地址。

参数:
  • i2c – I2C 接口实例。

  • address (int) – RFIDUnit 的 I2C 地址。默认值为 0x28。

UIFLOW2

init.png

Methods

RFIDUnit.is_new_card_present()

检查是否存在新的 RFID 卡。

UIFLOW2

is_new_card_present.png

RFIDUnit.read_card_uid()

如果 RFID 卡可用,则读取其 UID。

UIFLOW2

read_card_uid.png

RFIDUnit.read(block_addr)

从 RFID 卡中读取指定块。

参数:

block_addr – 用于读取数据的块地址。

UIFLOW2

read.png

RFIDUnit.write(block_addr, buffer)

将数据写入 RFID 卡的指定块。

参数:
  • block_addr – 写入数据的块地址。

  • buffer – 要写入该块的数据缓冲区。

UIFLOW2

write.png

RFIDUnit.close()

使 PICC 进入 Halt 状态,并停止加密通信会话。

UIFLOW2

close.png

RFIDUnit.wakeup_all()

唤醒范围内的所有 RFID 卡。

RFIDUnit.picc_select_card()

选择当前处于活动状态的 RFID 卡。