· 綠糰子 · 讀寫器模組 · 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 資訊了。