Arduino 日特别活动:RFID 标签入门

尚无读者喜欢这篇文章。
Gift box opens with colors coming out

Opensource.com

RFID——我们每天都在使用它们。 每次去超市、公共图书馆、书店或百货商店,我们都会接触到带有 RFID 标签的物品,RFID 是射频识别(Radio Frequency Identification)的缩写。首先,这些小标签使店主更容易进行库存管理,通过跟踪商品进货、移动和购买的流程。RFID 标签通常由一个可以存储几千字节的小型电子芯片和一个天线组成,天线通常呈紧密的螺旋形——有时是方形,有时是圆形。

本文介绍了我如何使用 Adafruit PN532 控制器扩展板来读取和写入 RFID 标签。

Pictures of multiple types of RFID tags

要在 RFID 标签上读取和写入信息,您需要一个由天线、无线电电路和一些数字电子元件组成的设备。这正是 Adafruit PN532 控制器扩展板 的作用。它连接到 Arduino 开发板,后者提供用于读取或写入数据的编程逻辑。

RFID / NFC Shield PN532 from Adafruit

历史:RFID 阅读器有着丰富多彩的历史,可以追溯到冷战时期,当时发明家 Leon Theremin 构思了一种名为“The Thing”的被动监听设备,使苏联情报部门能够监听 1945 年至 1952 年间美国驻莫斯科大使馆办公室的对话。

硬件

为了开始探索 RFD/NFC 扩展板,我们需要以下物品

Adafruit 提供了关于扩展板组装和测试的 入门指南。我首先将连接器焊接到扩展板上

Soldering connectors into the RFID/NFC shield.

之后我才意识到这些连接器应该焊接到扩展板的另一侧。尽管犯了错误,但我还是使用了连接器的一侧,并将跳线焊接到另一侧进行连接。像往常一样,这次失误也是一个学习机会——我意识到扩展板实际上只需要五根线,而大多数连接器实际上是为了机械支撑。必要的线路是

  • 用于模拟 4 和 5 连接器的两根线,支持 I2C 通信协议
  • Arduino 的数字 2 号线连接到扩展板的中断线,以便在 RFID 标签进入扩展板天线的读取范围时通知 Arduino
  • 另外两根线提供电源(5V 和 GND)

Wiring of the shield after mishap.

软件

在(笨拙但肯定地)处理完接线后,我继续进行软件阶段。

按照 快速入门指南 中的说明,我克隆了 Adafruit-PN532 库 的 GitHub 仓库。然后我将目录重命名为 "Adafruit_PN532" (Arduino IDE 的库导入功能不接受 "-" 符号,但接受 "_")。要导入库,我使用了“项目”->“导入库...”->“添加库...”菜单选项。导入后,您可以通过“文件”->“示例”->“Adafruit_PN532”菜单选项查看示例,如下图所示。

Importing Adafruit PN532 Library into Arduino IDE.

我在 IDE 中打开了 readMiFare 示例,考虑到我使用了带有 I2C 协议的扩展板,我按照 入门指南 中的指示,对代码进行了以下修改

注释掉这行代码

// Adafruit_PN532 nfc(PN532_SCK, PN532_MISO, PN532_MOSI, PN532_SS);

取消注释这行代码

Adafruit_PN532 nfc(PN532_IRQ, PN532_RESET);

然后我用新名称“readMiFare_for_Shield”保存了修改后的程序。然后我使用 USB 电缆将 Arduino 开发板连接到 Linux 笔记本电脑(也可以使用 Windows 或 Mac)。

连接电缆几秒钟后,在 "/dev" 目录下出现了一个新的串行设备,名称为 "/dev/ttyACM0" 或 "/dev/ttyACM1"。此时,我启动了 Arduino IDE,并在“工具”->“串口”菜单下选择了该串行设备。然后我使用 "CTRL+R" 快捷键编译程序,并使用 "CTRL+U" 快捷键将其上传到 Arduino 开发板。

这个具体的示例将初始化开发板,然后等待 RFID 标签进入天线的读取距离范围,此时它将读取标签的标头信息。可以通过使用快捷键 "CTRL+SHIFT+M" 打开串行监视器窗口来查看输出,输出结果将如下图所示

Arduino IDE while reading an RFID tag.

Physical set up of the shield while reading an RFID tag.

写入 RFID 标签

我使用了 mifareclassic_formatndef 示例来格式化 RFID MiFare 标签,并在其中存储一个短字符串,该字符串可以被手机或平板电脑的 NFC(近场通信)读取。我在 Arduino IDE 中打开了这个示例,注释掉了 用于 breakout 板的行,并取消注释了 用于带有 I2C 连接的扩展板的行

Arduino IDE while writing an RFID tag.

运行示例时,您可以在串行监视器中看到成功消息(上图中的右侧窗口)。

Physical set up of the shield while writing an RFID tag.

结论

用于 Arduino 的 Adafruit PN532 NFC/RFID 控制器扩展板 是一个非常有趣的组件。提供的 说明 非常清晰和详细,但必须密切注意连接器的定位(请参阅我上面犯的新手错误)。之后,焊接就很简单了。也可以只连接五个必要的连接器,但代价是最终得到的装置机械强度较差。

使用 软件示例 非常容易,只需要修改几行代码,这些修改在 说明 中有明确的解释。

这是一个熟悉 RFID 和 NFC 的绝佳套件。对于教育项目和创客空间来说,它也是必备品。它也是一个很酷的工具,可以用来为您的下一个社区活动创建 SWAG 标签。


Adafruit Industries 在本文中提供了开源硬件。在作者试用硬件后,我们将其送回 Adafruit,让其他人也高兴一下。

标签
User profile image.
Luis Ibáñez 在 Google Inc. 芝加哥分公司担任高级软件工程师。

2 条评论

RFID 对于库存系统之类的应用来说是个好主意。但是,它绝不应该用于存储个人身份信息的任何应用。为什么?因为 RFID 标签可以从离标签几英尺远的地方被成功读取,这使得存储在标签中的信息有可能在所有者不知情的情况下被盗取。

Nonya,

感谢您指出在 RFID 标签中存储个人信息的缺点和风险。我应该在文章中包含这一点。您的警告也普遍适用于任何人们可能想要控制访问权限的关键信息。

RFID 标签最好在已经设置了其他安全和访问控制层(例如,加密和/或物理安全)的环境中使用。

感谢您的评论。

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.