Я работаю над проектом для моего местного Makerspace, у нас ограниченный бюджет, поэтому я надеялся использовать RFID-RC522 el'cheap'o RFID / NFC-ридеры на eBay, я получил пару плат на основе SPI, они работают, однако примеры кода для них ограничены.
Я нашел несколько разных библиотек и остановился на этой: https://github.com/ljos/MFRC522
Беда в том, что весь код, доступный в Интернете, создается из кода Python некоторых китайских парней, который люди перевели и взломали в библиотеку Arduino.
Код работает, но карты Mifare должны иметь 4, 7 или 10-байтовые UID, а пример / библиотека возвращает 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-байтовый результат?