· 綠糰子 · 讀寫器模組  · 2 min read

PN532 NFC 讀寫器模組教學

PN532 是一款功能強大且廣受歡迎的 NFC 模組。本篇將介紹如何將它與 Arduino 連接並進行基本的讀寫卡操作。

1. 產品介紹

PN532 模組是基於 NXP PN532 晶片所設計,是開發 NFC 相關應用的絕佳選擇。它支援多種通訊介面,包括 I2C、SPI 和 HSU (High Speed UART)。

  • 工作電壓: 3.3V - 5V
  • 支援卡片類型: Mifare 1k, 4k, Ultralight, DesFire, ISO/IEC 14443-4
  • 通訊介面: I2C, SPI, HSU

2. 硬體接線 (以 Arduino Uno 為例)

我們將使用 SPI 介面來與 Arduino 連接。

PN532Arduino Uno
VCC5V
GNDGND
MISO12
MOSI11
SCK13
SS10

3. 安裝函式庫

  1. 打開 Arduino IDE。
  2. 前往 工具 > 管理程式庫
  3. 搜尋 “Adafruit PN532” 並安裝。
  4. 同時,請確認您也安裝了 “Adafruit GFX” 與 “Adafruit SSD1306” (如果您的模組有OLED螢幕)。

4. 範例程式碼

這是一個讀取卡片 UID 的基本範例。

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_PN532.h>

#define SCK  (13)
#define MOSI (11)
#define SS   (10)
#define MISO (12)

Adafruit_PN532 nfc(SCK, MISO, MOSI, SS);

void setup(void) {
  Serial.begin(115200);
  while (!Serial) delay(10);

  Serial.println("Hello!");

  nfc.begin();

  uint32_t versiondata = nfc.getFirmwareVersion();
  if (! versiondata) {
    Serial.print("Didn't find PN53x board");
    while (1); // halt
  }

  Serial.print("Found chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX);
  Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC);
  Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);

  nfc.setPassiveActivationRetries(0xFF);
  nfc.SAMConfig();

  Serial.println("Waiting for an ISO14443A Card ...");
}

void loop(void) {
  boolean success;
  uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };
  uint8_t uidLength;

  success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);

  if (success) {
    Serial.println("Found a card!");
    Serial.print("UID Length: ");Serial.print(uidLength, DEC);Serial.println(" bytes");
    Serial.print("UID Value: ");
    nfc.PrintHex(uid, uidLength);
    Serial.println("");
    delay(1000);
  }
}

上傳程式碼後,打開序列埠監控視窗,並將您的 NFC 卡片靠近讀卡機,您應該就能看到卡片的 UID 資訊了。

Back to Blog

Related Posts

View All Posts »

NTAG215 錢幣卡入門指南

本指南將帶您了解如何開始使用 NTAG215 錢幣卡,從基本規格到讀寫操作,一步步成為 NFC 應用大師。