ฉันกำลังทำงานในโครงการสำหรับ 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 ไบต์หรือไม่