PN532 เป็นโมดูลเครื่องอ่าน RFID/NFC ที่หลากหลายซึ่งรองรับโหมดการสื่อสารและมาตรฐานหลายอย่างทำให้เหมาะสำหรับการตรวจสอบสิทธิ์การชำระเงินแบบไม่สัมผัสและโครงการ IoT บทช่วยสอนนี้จะแนะนำคุณผ่านการเชื่อมต่อโมดูล PN532 กับ Arduino เพื่ออ่านแท็ก RFID/NFC
สิ่งที่คุณต้องการ
- โมดูล PN532 RFID/NFC
- คณะกรรมการ Arduino (เช่น Uno, Mega, Nano)
- กระดาน
- สายจัมเปอร์
- แท็ก RFID/NFC (เช่นการ์ด mifare)
- คอมพิวเตอร์ที่ติดตั้ง Arduino IDE
ขั้นตอนที่ 1: ทำความเข้าใจโมดูล PN532
โมดูล PN532 รองรับสามโหมดการสื่อสาร:
- i2c (ค่าเริ่มต้นสำหรับโมดูลจำนวนมาก): ใช้สาย SDA และ SCL
- SPI: ใช้สาย Mosi, MISO และ SCK
- uart (อนุกรม): ใช้หมุด TX และ RX
ในบทช่วยสอนนี้เราจะใช้ไฟล์ โหมด i2cเนื่องจากง่ายกว่าในการตั้งค่าและรองรับอย่างกว้างขวาง
pn532 pinout ในโหมด i2c
เข็มหมุด | การทำงาน |
---|---|
VCC | แหล่งจ่ายไฟ (3.3V/5V) |
gnd | พื้น |
SDA | สายข้อมูล i2c |
SCL | สายนาฬิกา i2c |
ขั้นตอนที่ 2: เดินสาย PN532 ไปยัง Arduino
นี่คือวิธีการเชื่อมต่อโมดูล PN532 กับ Arduino UNO ในโหมด I2C:
PN532 PIN | พิน Arduino |
---|---|
VCC | 5V |
gnd | gnd |
SDA | A4 |
SCL | A5 |
บันทึก: หากโมดูลของคุณมีจัมเปอร์การเลือกโหมดให้ตั้งค่าเป็นโหมด I2C
ขั้นตอนที่ 3: ติดตั้งไลบรารีที่ต้องการ
เพื่อลดความซับซ้อนของการโต้ตอบกับโมดูล PN532 ให้ติดตั้งไลบรารีต่อไปนี้:
- ห้องสมุด Adafruit PN532
- ห้องสมุด Adafruit Busio (การพึ่งพาสำหรับไลบรารี PN532)
ขั้นตอนในการติดตั้ง:
- เปิด Arduino IDE
- ไป ร่าง > รวมห้องสมุด > จัดการห้องสมุด.
- ค้นหา "Adafruit PN532" แล้วคลิก ติดตั้ง.
- ค้นหา "Adafruit Busio" แล้วคลิก ติดตั้ง.
ขั้นตอนที่ 4: อัปโหลดรหัส
นี่คือตัวอย่างตัวอย่างในการอ่านข้อมูลจากแท็ก RFID/NFC:
#include <Wire.h>
#include <Adafruit_PN532.h>
#define SDA_PIN A4
#define SCL_PIN A5
Adafruit_PN532 nfc(SDA_PIN, SCL_PIN);
void setup() {
Serial.begin(9600);
Serial.println("PN532 RFID/NFC Reader Test");
nfc.begin();
uint32_t versiondata = nfc.getFirmwareVersion();
if (!versiondata) {
Serial.println("Didn't find PN532 module. Check connections.");
while (1);
}
Serial.println("Found PN532 module.");
nfc.SAMConfig(); // Configure the module in normal mode
Serial.println("Waiting for an NFC card...");
}
void loop() {
uint8_t success;
uint8_t uid[] = { 0 }; // Buffer to store UID
uint8_t uidLength; // Length of the UID
// Check if an NFC card is present
success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
if (success) {
Serial.println("Found an NFC card!");
Serial.print("UID Length: ");
Serial.print(uidLength, DEC);
Serial.println(" bytes");
Serial.print("UID Value: ");
for (uint8_t i = 0; i < uidLength; i++) {
Serial.print(" 0x");
Serial.print(uid[i], HEX);
}
Serial.println("");
delay(1000); // Wait 1 second
}
}
ขั้นตอนที่ 5: ทดสอบการตั้งค่า
- เชื่อมต่อ Arduino กับคอมพิวเตอร์ของคุณผ่าน USB
- เปิด Arduino IDE และเลือกที่ถูกต้อง กระดาน และ ท่าเรือ ภายใต้ เครื่องมือ เมนู.
- อัปโหลดรหัสไปยัง Arduino โดยคลิก อัพโหลด.
- เปิดมอนิเตอร์อนุกรม (เครื่องมือ > จอภาพอนุกรม) และตั้งค่าอัตราการรับส่งข้อมูลเป็น
9600
. - วางแท็ก RFID/NFC ใกล้กับโมดูล PN532 จอภาพอนุกรมควรแสดง UID ของแท็ก (ตัวระบุที่ไม่ซ้ำกัน)
การแก้ไขปัญหา
- ไม่พบโมดูล: ตรวจสอบสายไฟอีกครั้งและตรวจสอบให้แน่ใจว่าจัมเปอร์โหมดถูกตั้งค่าเป็น I2C
- ไม่พบแท็ก: ตรวจสอบให้แน่ใจว่าแท็กเข้ากันได้ (เช่นการ์ด mifare สำหรับตัวอย่างนี้)
- การอ่านที่ไม่แน่นอน: ใช้สายจัมเปอร์ที่สั้นกว่าและให้แน่ใจว่าพลังงานเสถียรไปยังโมดูล
แอปพลิเคชันของโมดูล PN532
- ระบบควบคุมการเข้าถึง
- ระบบการชำระเงินแบบไม่สัมผัส
- การจัดการสินค้าคงคลังอัจฉริยะ
- อุปกรณ์ IoT ที่ต้องการการรับรองความถูกต้องที่ปลอดภัย
บทสรุป
คุณสามารถเชื่อมต่อโมดูล PN532 RFID/NFC ได้สำเร็จกับ Arduino และอ่านแท็ก RFID/NFC โมดูลอเนกประสงค์นี้เปิดโอกาสที่ไม่มีที่สิ้นสุดสำหรับการตรวจสอบความปลอดภัยและการแลกเปลี่ยนข้อมูลในโครงการของคุณ ทดลองกับคุณสมบัติเพิ่มเติมเช่นการเขียนไปยังแท็กหรือการสื่อสารแบบ peer-to-peer เพื่อสร้างแอปพลิเคชันขั้นสูงมากขึ้น!