用華為和蘋果的朋友,應該知道自己的手機上基本都帶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對話。
Waveshare HAT包含許多設定。請務必閱讀說明
配置并安裝擴充闆
如上所述,我們可以通過更改擴充闆本身的某些實體開關來選擇不同的接口。預設情況下,我們可以将其配置為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.py
pn532 = PN532_UART(debug=False, reset=20)
拿RFID令牌來測試一下
試試看!
如下所示啟動示例代碼:
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
編譯:王文文
相關閱讀:DIY帶資料的NFC“袖扣”