Pracuję nad projektem dla mojej lokalnej Makerspace, mamy ograniczony budżet, więc liczyłem na użycie czytników RFID / NFC RFID-RC522 el'cheap'o na eBayu, otrzymałem kilka płyt opartych na SPI, działają jednak jednak przykłady kodów dla nich są ograniczone.
Znalazłem kilka różnych bibliotek i zdecydowałem się na tę: https://github.com/ljos/MFRC522
Problem polega na tym, że cały kod dostępny online wydaje się pochodzić od chińskiego kodu Python, który ludzie tłumaczyli i włamali się do biblioteki Arduino.
Kod działa, ale karty Mifare mają mieć 4, 7 lub 10 bajtowe identyfikatory UID, a przykład / biblioteka zwraca 5-bajtowy numer seryjny.
Nie ma dokumentacji, a arkusz danych NXP jest niezrozumiały ... Ponadto wydaje się, że działa z większością kart, ale nie działa z kartami Mastercard PayWave zgodnymi ze standardem ISO 14443. Droższy czytnik RDM880 oparty na MFRC500 działa dobrze i ma ładną bibliotekę, ale koszt uniemożliwia wdrożenie.
Czy ktoś może mi pomóc w uzyskaniu tego urządzenia opartego na NXP MFRC522 odczytującego UID ze wszystkich kart 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
tablica ma długość 5. Czy próbowałeś użyć większej tablicy, ponieważ chcesz uzyskać wynik 10 bajtów?