用华为和苹果的朋友,应该知道自己的手机上基本都带NFC支付功能。
实际上NFC相关的场景不只是支付,还涵盖我们生活中的方方面面。比如IoT前哨站之前发过的一篇:DIY带数据的NFC“袖扣”。
NFC(近场通信)基于RFID(射频识别)标准,两者都允许设备从被动令牌或电子标签接收数据(这意味着它不需要外部电源即可工作)。
市场上有现成的RFID和NFC识别设备出售,但可定制化程度不高。不过熟悉树莓派的朋友,可以凭借WaveShare的RFID/NFC扩展板,DIY一个更极客的识别装置。
开始之前,你需要一个能跑Raspberry Pi OS Lite(Buster)的树莓派,还有一个WaveShare NFC扩展板(大约人民币几十块)。
登录系统后,先更新系统。
sudo apt -y update && sudo apt -y upgrade
启用串行接口
该扩展版能够通过三个不同的接口进行通信:I2C,SPI和UART。
我们这里使用UART,因为它演示起来最简单。首先运行sudo raspi-config,进入“接口选项”,然后选择“串行接口”。
当系统询问你是否要登录控制台时,请选择“否”。当询问你是否要启用串行接口时,请选择“是”。
你需要立即重启,这将允许WaveShare HAT通过串行接口与我们的Raspberry Pi对话。
配置并安装扩展板
如上所述,我们可以通过更改扩展板本身的某些物理开关来选择不同的接口。默认情况下,我们可以将其配置为UART / Serial,但具体接法最好到以下网址核对:
https://www.waveshare.com/wiki/PN532_NFC_HAT#Raspberry_Pi_examples
一般I1和I0处的跳线均应短接“ L”,D16和D20应短接,在DIP开关上,除RX和TX外,所有其他器件均应关闭。
仔细检查,然后将板子插到树莓派GPIO口上,启动。
sudo apt install rpi.gpio p7zip-full python3-pip
pip3 install spidev pyserial
wget https://www.waveshare.com/w/upload/6/67/Pn532-nfc-hat-code.7z
7z x Pn532-nfc-hat-code.7z
在尝试任何操作之前,需要编辑示例文件,以便我们使用UART。请根据自身要求将其注释或启用。
cd ~/raspberrypi/python
nano example_get_uid.pypn532 = PN532_UART(debug=False, reset=20)
试试看!
如下所示启动示例代码:
python3 example_get_uid.py
如果一切顺利,屏幕将会显示与扩展板连接的信息。
现在,你可以将RFID令牌放在标有“ NFC”的HAT区域上。十六进制数字会开始在屏幕上滚动。这意味着,你的令牌已被检测到!
每个RFID令牌都有唯一的编号,因此可以用来标识不同人员的身份。
但是,该扩展板的功能远不止于此,因为它还支持NFC,并且可以与MIFARE Classic等通用标准进行通信,该标准允许卡上存储1kB的存储空间。
对应的example_dump_mifare.py文件在同一目录中(请确保你已正确设置串行连接)。
更进一步
现在,你可以读取RFID和NFC令牌上的唯一标识符了。
如前所述,如果你用的是MIFARE或NTAG2标准,还可以将数据写到卡上。
examples文件夹包含一些C程序,你可以试一下。
在卡上读取和写入少量数据,可以产生一些有趣的项目。在2018年的电磁场节上,整个游戏都是基于查找物理位置并使用MIFARE卡注册玩家的存在来进行的。
智能手机还可以使用NFC交换任何形式的数据,以及更多可能。
来自:Raspberrypi.org
编译:王文文