跳转到内容

RC522 NFC/RFID

rc522 组件允许您在 ESPHome 中使用 RC522 NFC/RFID 控制器(数据手册Ali Express)。ESPHome 可以从标签读取 UID。每个 NFC/RFID 标签在制造时都分配有一个唯一的”UID”值。标签可以与二进制传感器关联,便于确定特定标签何时存在。您还可以在 ESPHome 自动化/lambda 中直接使用标签信息。请参阅 设置标签 了解如何使用此组件设置单独二进制传感器的信息。

RC522 IC 支持 SPI、I²C 和 UART 通信协议;ESPHome 可以使用 SPI 或 I²C。

  • 如果您有如上图所示的模块,它只能在 SPI 模式下使用(除非破解),您必须在配置中定义一个 SPI 总线,并设置 miso_pinmosi_pin

  • 如果您有通过 I²C 通信的 RC522(如 M5 Stack),您需要配置一个 I²C 总线。

rc522_spi 组件允许您在 ESPHome 中使用 RC522 NFC/RFID 控制器。此组件是一个全局集线器,通过 SPI 建立与 RC522 的连接。使用 RC522 二进制传感器,您可以创建单独的二进制传感器来跟踪 NFC/RFID 标签当前是否被 RC522 检测到。

spi:
rc522_spi:
cs_pin: GPIOXX
binary_sensor:
- platform: rc522
uid: 74-10-37-94
name: "RC522 RFID 标签"
  • cs_pin (*必需, 引脚模式): ESP 上连接片选线的引脚。

  • reset_pin (可选, 引脚模式): 连接到 RST 线的引脚。一些测试显示 RC522 在没有此引脚的情况下也能正常工作。

  • update_interval (可选, 时间): RC522 上每次扫描的持续时间。这影响各个二进制传感器被发现时保持活动的时间。如果在此时间窗口内未找到设备,将被标记为不存在。默认为 1s

  • spi_id (可选, ID): 如果要使用多个 SPI 总线,手动指定 SPI 组件 的 ID。

  • id (可选, ID): 手动指定此组件的 ID。

  • on_tag (可选, 自动化): 当读取标签时执行的自动化。请参阅 on_tag 触发器

  • on_tag_removed (可选, 自动化): 当标签被移除后执行的自动化。请参阅 on_tag_removed 触发器

rc522_i2c 组件允许您在 ESPHome 中使用 RC522 NFC/RFID 控制器。此组件是一个全局集线器,通过 I²C 建立与 RC522 的连接(也可通过 SPI)。使用 RC522 二进制传感器,您可以创建单独的二进制传感器来跟踪 NFC/RFID 标签当前是否被 RC522 检测到。

i2c:
rc522_i2c:
binary_sensor:
- platform: rc522
uid: 74-10-37-94
name: "RC522 RFID 标签"
  • address (可选, 整数): 手动指定传感器的 I²C 地址。默认为 0x28

  • reset_pin (可选, 引脚模式): 连接到 RST 线的引脚。一些测试显示 RC522 在没有此引脚的情况下也能正常工作。

  • update_interval (可选, 时间): RC522 上每次扫描的持续时间。这影响各个二进制传感器被发现时保持活动的时间。如果在此时间窗口内未找到设备,将被标记为不存在。默认为 1s

  • i2c_id (可选, ID): 如果要使用多个 I²C 总线,手动指定 I²C 组件 的 ID。

  • id (可选, ID): 手动指定此组件的 ID。

  • on_tag (可选, 自动化): 当读取标签时执行的自动化。请参阅 on_tag 触发器

  • on_tag_removed (可选, 自动化): 当标签被移除后执行的自动化。请参阅 on_tag_removed 触发器

当 RC522 识别到标签后立即触发此自动化。

此触发器提供的参数 x 类型为 std::string,是格式为 74-10-37-94 的标签 UID。下面的配置将在 MQTT 主题 rc522/tag 上发布标签 ID。

rc522_spi: # 或 rc522_i2c
# ...
on_tag:
then:
- mqtt.publish:
topic: rc522/tag
payload: !lambda 'return x;'

还可以使用 homeassistant.tag_scanned 操作 将标签扫描事件发送到 Home Assistant 标签组件。

rc522_spi: # 或 rc522_i2c
# ...
on_tag:
then:
- homeassistant.tag_scanned: !lambda 'return x;'

当 RC522 不再”看到”先前扫描的标签时触发此自动化。

此触发器提供的参数 x 类型为 std::string,是格式为 74-10-37-94 的被移除标签 UID。下面的示例配置将在 MQTT 主题 pn7160/tag_removed 上发布被移除的标签 ID。

rc522_spi: # 或 rc522_i2c
# ...
on_tag_removed:
then:
- mqtt.publish:
topic: rc522/tag_removed
payload: !lambda 'return x;'

rc522 二进制传感器平台允许您跟踪具有给定唯一 ID (uid) 的 NFC/RFID 标签当前是否被 RC522 检测到。

# 示例配置条目
spi:
clk_pin: D0
miso_pin: D1
mosi_pin: D2
rc522_spi: # 或 rc522_i2c
cs_pin: D3
update_interval: 1s
binary_sensor:
- platform: rc522
uid: 74-10-37-94
name: "RC522 RFID 标签"
  • uid (*必需, 字符串): NFC/RFID 标签的唯一 ID。这是以连字符分隔的十六进制值列表。例如 74-10-37-94

  • 所有其他选项来自 二进制传感器

要为特定 NFC/RFID 标签设置二进制传感器,您首先需要知道它们的唯一 ID。要获取此 ID,首先设置一个简单的 RC522 配置,不带任何二进制传感器,如上所示。

当代码运行并且您将 NFC/RFID 标签靠近 RC522 时,您应该看到类似以下的消息:

Found new tag '74-10-37-94'

然后复制此 ID 并创建一个 binary_sensor 条目,如配置示例所示。对每个标签重复此过程。