วิธีใช้เครื่องอ่าน PN532 RFID/NFC กับ Arduino

How to Use the PN532 RFID/NFC Reader with Arduino

PN532 เป็นโมดูลเครื่องอ่าน RFID/NFC ที่หลากหลายซึ่งรองรับโหมดการสื่อสารและมาตรฐานหลายอย่างทำให้เหมาะสำหรับการตรวจสอบสิทธิ์การชำระเงินแบบไม่สัมผัสและโครงการ IoT บทช่วยสอนนี้จะแนะนำคุณผ่านการเชื่อมต่อโมดูล PN532 กับ Arduino เพื่ออ่านแท็ก RFID/NFC

สิ่งที่คุณต้องการ

  1. โมดูล PN532 RFID/NFC
  2. คณะกรรมการ Arduino (เช่น Uno, Mega, Nano)
  3. กระดาน
  4. สายจัมเปอร์
  5. แท็ก RFID/NFC (เช่นการ์ด mifare)
  6. คอมพิวเตอร์ที่ติดตั้ง Arduino IDE

ขั้นตอนที่ 1: ทำความเข้าใจโมดูล PN532

โมดูล PN532 รองรับสามโหมดการสื่อสาร:

  1. i2c (ค่าเริ่มต้นสำหรับโมดูลจำนวนมาก): ใช้สาย SDA และ SCL
  2. SPI: ใช้สาย Mosi, MISO และ SCK
  3. 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 ให้ติดตั้งไลบรารีต่อไปนี้:

  1. ห้องสมุด Adafruit PN532
  2. ห้องสมุด Adafruit Busio (การพึ่งพาสำหรับไลบรารี PN532)

ขั้นตอนในการติดตั้ง:

  1. เปิด Arduino IDE
  2. ไป ร่าง > รวมห้องสมุด > จัดการห้องสมุด.
  3. ค้นหา "Adafruit PN532" แล้วคลิก ติดตั้ง.
  4. ค้นหา "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: ทดสอบการตั้งค่า

  1. เชื่อมต่อ Arduino กับคอมพิวเตอร์ของคุณผ่าน USB
  2. เปิด Arduino IDE และเลือกที่ถูกต้อง กระดาน และ ท่าเรือ ภายใต้ เครื่องมือ เมนู.
  3. อัปโหลดรหัสไปยัง Arduino โดยคลิก อัพโหลด.
  4. เปิดมอนิเตอร์อนุกรม (เครื่องมือ > จอภาพอนุกรม) และตั้งค่าอัตราการรับส่งข้อมูลเป็น 9600.
  5. วางแท็ก RFID/NFC ใกล้กับโมดูล PN532 จอภาพอนุกรมควรแสดง UID ของแท็ก (ตัวระบุที่ไม่ซ้ำกัน)

การแก้ไขปัญหา

  • ไม่พบโมดูล: ตรวจสอบสายไฟอีกครั้งและตรวจสอบให้แน่ใจว่าจัมเปอร์โหมดถูกตั้งค่าเป็น I2C
  • ไม่พบแท็ก: ตรวจสอบให้แน่ใจว่าแท็กเข้ากันได้ (เช่นการ์ด mifare สำหรับตัวอย่างนี้)
  • การอ่านที่ไม่แน่นอน: ใช้สายจัมเปอร์ที่สั้นกว่าและให้แน่ใจว่าพลังงานเสถียรไปยังโมดูล

แอปพลิเคชันของโมดูล PN532

  1. ระบบควบคุมการเข้าถึง
  2. ระบบการชำระเงินแบบไม่สัมผัส
  3. การจัดการสินค้าคงคลังอัจฉริยะ
  4. อุปกรณ์ IoT ที่ต้องการการรับรองความถูกต้องที่ปลอดภัย

บทสรุป

คุณสามารถเชื่อมต่อโมดูล PN532 RFID/NFC ได้สำเร็จกับ Arduino และอ่านแท็ก RFID/NFC โมดูลอเนกประสงค์นี้เปิดโอกาสที่ไม่มีที่สิ้นสุดสำหรับการตรวจสอบความปลอดภัยและการแลกเปลี่ยนข้อมูลในโครงการของคุณ ทดลองกับคุณสมบัติเพิ่มเติมเช่นการเขียนไปยังแท็กหรือการสื่อสารแบบ peer-to-peer เพื่อสร้างแอปพลิเคชันขั้นสูงมากขึ้น!

แสดงความคิดเห็น

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.