跳轉至

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 對線軸識別、材料配置檔案選擇和簡單服務輸入很有用。但它不是任何卡的通用讀卡機,也不是可靠的安全系統。

首先選擇頻率和標籤類型,然後選擇模組、介面、電源和天線位置。然後在真實情況下測試讀取,並肯定保持手動備用選擇。

參考資料