ฉันกำลังทำงานในโครงการสำหรับ Makerspace ในพื้นที่ของฉันเรามีงบประมาณ จำกัด ดังนั้นฉันจึงหวังว่าจะใช้ RFID-RC522 el'cheap'o เครื่องอ่าน RFID / NFC บน eBay ฉันได้รับกระดาน SPI สองชุดพวกเขาทำงาน แต่ ตัวอย่างรหัสสำหรับพวกเขาถูก จำกัด
ฉันพบห้องสมุดที่แตกต่างกันหลายแห่งและตัดสินในห้องสมุดนี้: https://github.com/ljos/MFRC522
ปัญหาคือรหัสทั้งหมดที่มีออนไลน์ดูเหมือนจะวางไข่จากคนจีนรหัส Python ที่คนแปลและเจาะเข้าไปในห้องสมุด Arduino
รหัสใช้งานได้ แต่การ์ด Mifare มีความหมายว่าจะมี UID 4, 7 หรือ 10 ไบต์และตัวอย่าง / ไลบรารีจะส่งคืนหมายเลขซีเรียล 5 ไบต์
ไม่มีเอกสารประกอบและแผ่นข้อมูล NXPไม่สามารถเข้าใจได้ ... นอกจากนี้ดูเหมือนว่าจะทำงานกับการ์ดส่วนใหญ่ แต่ไม่สามารถใช้งานได้กับการ์ด Mastercard PayWave ซึ่งเป็นไปตามมาตรฐาน ISO 14443 เครื่องอ่าน RDM880 ที่มีราคาแพงกว่าซึ่งอิงกับ MFRC500 นั้นใช้งานได้ดีและมีห้องสมุดที่ดี
ดังนั้นใครบางคนสามารถช่วยฉันในการรับหน่วยตาม NXP MFRC522 นี้อ่าน UID จากการ์ด ISO 14443 ทั้งหมด
#include <SPI.h>
#include <MFRC522.h>
#define RFID_SS  10
#define RFID_RST 5
MFRC522 rfid( RFID_SS, RFID_RST );
void setup() {
  SPI.begin();
  Serial.begin(115200);
  rfid.begin();
}
void loop() {
  byte data[MAX_LEN];
  byte uid[5];
  if ( rfid.requestTag( MF1_REQIDL, data ) == MI_OK ) {
    if ( rfid.antiCollision( data ) == MI_OK ) {
      memcpy( uid, data, 5 );
      for ( int i = 0; i < 5; i++ ) {
        Serial.print( uid[i], HEX );
        Serial.print( ' ' );
      }
      Serial.println();
    }
  }
}
          
uidอาเรย์ของคุณมีความยาว 5 คุณลองใช้อาเรย์ที่มีขนาดใหญ่ขึ้นเนื่องจากคุณต้องการผลลัพธ์ 10 ไบต์หรือไม่