跳转至

RFID 和 NFC

RFID 是射频识别。NFC 是一种相关的超短距离技术,通常在 13.56 MHz 频率。

在简单的 DIY 设备中,这是一种在没有有线接触的情况下读取卡、钥匙链、贴纸或标签的方法。例如,用户带来灯丝线轴标签,设备选择材料配置文件。

主要错误是认为"RFID"意味着通用兼容性。实际上,你需要频率匹配、标签类型、读卡器芯片、库、接口、电源和天线放置都排成一行。

用途

在 iDryer 等项目中,RFID/NFC 可用于:

  • 识别灯丝线轴;
  • 选择材料配置文件;
  • 将设置链接到标签;
  • 服务访问;
  • 用户操作确认;
  • 易耗品追踪;
  • 在容器、线轴或盒式磁带上的标签实验。

对于材料配置文件选择,通常只需读取标签的 UID 并存储 UID -> 材料 表就足够了。但这种方法必须有手动后备:如果标签无法读取,用户仍可手动选择配置文件。

RFID 和 NFC 简单来说

RFID 是一个广泛的术语。它包括不同的频率、标准、范围和标签类型。

NFC 通常意味着在 13.56 MHz 的近场通信,与 RFID 生态的一部分兼容。NFC 从银行卡、手机、NTAG 贴纸和 MIFARE 卡中被广为人知,但这并不意味着任何 NFC 读卡器读任何卡和任何数据。

对于小型 DIY 设备,13.56 MHz 模块最常见:

  • RC522 / MFRC522;
  • PN532;
  • 现成的 USB/UART RFID/NFC 读卡器;
  • 带 SPI、I2C 或 UART 的 NFC 模块。

有其他 RFID 系统,如 125 kHz 访问卡或 UHF RFID。它们与 13.56 MHz NFC 模块不兼容。

RC522

RC522 是一个便宜且常见的 13.56 MHz 模块,用于卡和标签。它通常与 Arduino 和 ESP32 配合使用。

优点:

  • 便宜;
  • 许多示例;
  • 适合简单的 UID 读取;
  • 通常通过 SPI 连接。

缺点:

  • 通常仅适用于 3.3V 电源和逻辑;
  • 便宜模块质量不同;
  • 读取范围很小;
  • 卡类型支持有限;
  • 板上的 SDA 引脚通常意味着 SPI 的 SS/CS,而不是 I2C SDA

如果你只需要以短距离从 MIFARE 类型的卡或钥匙链读取 UID,RC522 就可以工作。对于更广泛的 NFC 任务,PN532 通常更方便。

PN532

PN532 是一个更灵活的 NFC/RFID 控制器。许多 PN532 模块可以通过以下方式工作:

  • SPI;
  • I2C;
  • UART。

但选择的接口通常需要在板上物理设置:跳线、DIP 开关或焊接。如果模块设置为 SPI 模式,你不能通过 I2C 连接模块。

如果你需要,PN532 通常被选择:

  • 更多的接口选项;
  • 更好的 NFC 场景支持;
  • 与不同标签类型的工作;
  • Python/CircuitPython/Raspberry Pi 场景;
  • 更好的文档化模块。

但 PN532 也不是魔法通用读卡器。你需要检查特定的卡类型、库和工作模式。

频率和标签类型

标签必须与读卡器匹配。

购买标签前,检查:

  • 频率:13.56 MHz125 kHz 或其他;
  • 类型:MIFARE Classic、NTAG213/215/216、ISO14443A 或其他;
  • 你是否只需要读取 UID;
  • 你是否需要读取/写入自定义数据;
  • 所选库是否支持所需的操作;
  • 你是否可以物理地将标签放在线轴或机箱上。

如果任务是选择材料配置文件,通常只需读取 UID 并单独存储配置文件更简单。在标签内写入数据会使项目复杂化:你需要考虑数据格式、兼容性、写保护和写错误。

UID - 不是安全

卡或标签的 UID 可以方便地用作标识符。但 UID 不是可靠的保护。

对于线轴配置文件,这是正常的:如果已知 UID,选择配置文件。错误不是关键的,因为用户可以手动检查材料。

对于访问危险功能、服务模式或解锁加热器,UID 仅是弱的。某些 UID 可被复制或伪造,某些卡具有已知的安全限制。

实用规则:

  • UID 对于便利和易耗品识别很好;
  • UID 不应是危险模式的唯一保护;
  • 对于加热器和电源部件,始终需要单独的安全检查。

电源和逻辑电平

许多 RFID/NFC 模块额定为 3.3V 逻辑。这对 RC522 和 PN532 分线模块特别重要。

检查:

  • 模块电源电压;
  • SPI/I2C/UART 上的逻辑电平;
  • 板是否有稳压器;
  • 信号线是否有电平匹配;
  • 是否需要 I2C 上拉电阻;
  • 是否需要与控制器的公共地。

模块板上 5V 引脚的存在并不总是意味着信号线容许 5V。某些模块可以通过稳压器从 5V 供电,但逻辑保持 3.3V

连接接口

RFID/NFC 模块可通过 SPI、I2C 或 UART 连接。

SPI:

  • 快速且常见;
  • 需要 SCKMOSIMISOCS
  • 在 RC522 上,SDA 引脚通常实际意味着 CS
  • 重要的是不要混淆 MOSIMISO

I2C:

  • 使用 SDASCL
  • 可以与其他设备共享总线;
  • 需要正确的上拉电阻;
  • 重要的是检查地址和所选模块模式。

UART:

  • 使用 TXRX
  • 一个设备的 TX 进入另一个的 RX
  • 对某些现成的读卡器很方便;
  • 需要匹配的速度和协议。

详细的 RC522 SPI 连接在实用部分:连接 RFID 读卡器

天线和机箱

RFID/NFC 通过天线工作。在小型模块上,它通常直接印在板上。

阅读受以下因素影响:

  • 天线大小;
  • 标签方向;
  • 距离;
  • 机箱塑料;
  • 附近的金属;
  • 附近的线和电源线;
  • 模块电源;
  • 标签类型;
  • 用户带卡的地方。

天线附近的金属可能会急剧恶化读取。如果读卡器安装在打印机的金属框架、螺钉、屏幕、电源或铝板附近,范围可能会变得更差。

对于机箱,最好制作清晰区域:"在此带标签"。不要期望线轴上的标签总是通过塑料、空气、轴、支架和附近的部件自动读取。

设备逻辑

RFID 应提高便利性,不应破坏控制。

线轴的正常逻辑:

  1. 用户带标签。
  2. 设备读取 UID。
  3. UID 在配置文件表中查找。
  4. 如果找到 UID,建议材料配置文件。
  5. 用户可以确认或更改配置文件。
  6. 如果 UID 未找到或未读取,可进行手动选择。

坏的逻辑:

  • 没有标签设备无法启动;
  • 未知标签选择随机配置文件;
  • 读取错误静默地保持旧配置文件;
  • 配置文件在没有用户确认的情况下改变;
  • UID 是服务模式的唯一保护。

对于加热器,特别重要的是配置文件选择不绕过温度限制、传感器和应急保护。

购买前的检查清单

购买前,检查:

  • 模块频率;
  • 支持的标签类型;
  • 接口:SPI、I2C、UART、USB;
  • 电源电压;
  • 逻辑电平;
  • 电平匹配的可用性;
  • 文档和引脚分配的可用性;
  • 接口在板上如何选择;
  • 是否有控制器的库;
  • 天线大小;
  • 标签类型和大小;
  • 实际机箱中的预期范围;
  • 是否可能进行手动后备选择。

对于第一个项目,选择有很好文档和示例的模块,而不是没有原理图的最便宜的模块。

典型错误

  • 13.56 MHz 读卡器购买了 125 kHz 卡;
  • 3.3V RC522 连接到 5V 电源或逻辑;
  • 在 RC522 上误认为 SDA 引脚为 I2C SDA
  • 混淆了 MOSIMISO
  • 在 SPI 中忘记了 CS/SS
  • 在 PN532 上用跳线设置了一个接口但连接了另一个;
  • 在需要的地方没有放置 I2C 上拉;
  • 在金属附近放置天线;
  • 在台上测试读取,但在机箱中没有测试;
  • 使 RFID 成为选择配置文件的唯一方法;
  • 使用 UID 作为可靠的访问保护;
  • 没有处理"标签未读"的情况。

主要点

RFID/NFC 对于线轴识别、材料配置文件选择和简单的服务输入很有用。但它不是任何卡的通用读卡器,本身也不是可靠的安全系统。

首先选择频率和标签类型,然后选择模块、接口、电源和天线位置。然后在真实机箱中测试读取,并绝对保留手动后备选择。

参考资料