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,而不是 I2CSDA。
如果你只需要在短距離從類似 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 MHz、125 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:
- 快速且常見;
- 需要
SCK、MOSI、MISO、CS; - 在 RC522 上,腳位
SDA通常實際上表示CS; - 不混淆
MOSI和MISO很重要。
I2C:
- 使用
SDA和SCL; - 可以與其他設備共享匯流排;
- 需要正確的上拉電阻;
- 檢查位址和選擇的模組模式很重要。
UART:
- 使用
TX和RX; - 一個設備的
TX進到另一個的RX; - 對某些現成的讀卡機很方便;
- 需要匹配的速度和協定。
詳細的 RC522 SPI 連接在實務部分:連接 RFID 讀卡機。
天線和外殼¶
RFID/NFC 通過天線工作。在小型模組上,它通常直接列印在主板上。
讀取受到以下因素影響:
- 天線大小;
- 標籤方向;
- 距離;
- 外殼塑膠;
- 附近的金屬;
- 附近的線和電源線;
- 模組電源;
- 標籤類型;
- 用戶帶卡的地方。
天線附近的金屬可以大大惡化讀取。如果讀卡機安裝在印表機的金屬框架、螺釘、屏幕、電源或鋁製面板附近,範圍可能會變得更差。
對於外殼,最好創建一個清晰的區域:「把標籤帶到這裡」。不要期望線軸上的標籤總是透過塑膠、空氣、軸、支架和附近零件自動讀取。
設備邏輯¶
RFID 應該提高方便性,而不是破壞控制。
線軸的正常邏輯:
- 用戶帶著標籤。
- 設備讀取 UID。
- 在配置檔案表中查詢 UID。
- 如果找到 UID,建議材料配置檔案。
- 用戶可以確認或改變配置檔案。
- 如果找不到 UID 或無法讀取,手動選擇可用。
不好的邏輯:
- 設備無法在沒有標籤的情況下啟動;
- 未知標籤選擇隨機配置檔案;
- 讀取錯誤無聲地保持舊配置檔案;
- 配置檔案在沒有用戶確認的情況下改變;
- UID 是服務模式的唯一保護。
對於加熱器,特別重要的是配置檔案選擇不會繞過溫度限制、感應器和應急保護。
購買前要檢查的事項¶
購買前,檢查:
- 模組頻率;
- 支援的標籤類型;
- 介面:SPI、I2C、UART、USB;
- 電源電壓;
- 邏輯等級;
- 電壓匹配的可用性;
- 文件和腳位圖的可用性;
- 如何在主板上選擇介面;
- 你的控制器是否有程式庫;
- 天線大小;
- 標籤類型和大小;
- 真實外殼中的預期範圍;
- 手動備用選擇是否可能。
對於第一個專案,選擇有良好文件和示例的模組,而不是沒有原理圖的最便宜的模組。
常見錯誤¶
- 為
13.56 MHz讀卡機購買了125 kHz卡; - 將
3.3VRC522 連接到5V電源或邏輯; - 將 RC522 上的腳位
SDA視為 I2CSDA; - 混淆
MOSI和MISO; - 在 SPI 中忘記
CS/SS; - 用跳線在 PN532 上設定一個介面但連接了不同的;
- 未在需要的地方放置 I2C 上拉;
- 將天線放在金屬附近;
- 在工作臺上測試讀取但未在外殼中測試;
- 製作 RFID 唯一的方式來選擇配置檔案;
- 使用 UID 作為可靠的訪問保護;
- 未處理「標籤無法讀取」的情況。
要點¶
RFID/NFC 對線軸識別、材料配置檔案選擇和簡單服務輸入很有用。但它不是任何卡的通用讀卡機,也不是可靠的安全系統。
首先選擇頻率和標籤類型,然後選擇模組、介面、電源和天線位置。然後在真實情況下測試讀取,並肯定保持手動備用選擇。
參考資料¶
- Adafruit: PN532 RFID/NFC Breakout Wiring - PN532 連接、SPI/I2C/UART 選擇和
3.3V邏輯警告。 - Adafruit: PN532 RFID/NFC guide, single page - 完整 PN532 指南、CircuitPython/Python、介面和 SEL 跳線設定。
- Adafruit PN532 product page - PN532 模組描述、支援的介面和 NFC/RFID 功能。
- NXP: MFRC522 Standard performance MIFARE and NTAG frontend - MFRC522/RC522 微晶片頁面及其對
13.56 MHzMIFARE/NTAG 場景的目的。 - DigiKey: MFRC522 Datasheet by NXP - MFRC522 的技術描述:
13.56 MHz讀寫器、ISO/IEC 14443 A/MIFARE/NTAG 支援和通訊介面。