· 綠糰子 · 讀寫器模組 · 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 連接。
| PN532 | Arduino Uno |
|---|---|
| VCC | 5V |
| GND | GND |
| MISO | 12 |
| MOSI | 11 |
| SCK | 13 |
| SS | 10 |
3. 安裝函式庫
- 打開 Arduino IDE。
- 前往 工具 > 管理程式庫。
- 搜尋 “Adafruit PN532” 並安裝。
- 同時,請確認您也安裝了 “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 資訊了。