Tôi đang làm việc trong một dự án cho Makerspace địa phương của mình, chúng tôi có ngân sách hạn chế nên tôi hy vọng sẽ sử dụng trình đọc RFID / RC522 trên đầu đọc trên eBay, tôi đã nhận được một vài bảng dựa trên SPI, tuy nhiên chúng hoạt động các ví dụ mã cho chúng bị hạn chế.
Tôi đã tìm thấy một số thư viện khác nhau và giải quyết trên thư viện này: https://github.com/ljos/MFRC522
Vấn đề là tất cả các mã có sẵn trực tuyến dường như sinh ra từ một số người Trung Quốc mã Python mà mọi người đã dịch và hack vào thư viện Arduino.
Mã này hoạt động, nhưng thẻ Mifare có nghĩa là có UID 4, 7 hoặc 10 byte và ví dụ / thư viện đang trả về một số sê-ri 5 byte.
Không có tài liệu và bảng dữ liệu NXP là không thể hiểu được ... Ngoài ra, nó dường như hoạt động với hầu hết các thẻ, nhưng nó không hoạt động với thẻ Mastercard PayWave phù hợp với tiêu chuẩn ISO 14443. Trình đọc RDM880 đắt hơn dựa trên MFRC500 hoạt động tốt và có một thư viện đẹp nhưng chi phí khiến việc triển khai không thể thực hiện được.
Vì vậy, ai đó có thể giúp tôi lấy đơn vị dựa trên NXP MFRC522 này đọc UID từ tất cả các thẻ 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
mảng của bạn có độ dài 5. Bạn đã thử sử dụng một mảng lớn hơn vì bạn muốn có kết quả 10 byte?