현지 Makerspace의 프로젝트를 진행 중이며 예산이 제한되어 있으므로 eBay에서 RFID-RC522 el'cheap'o RFID / NFC 리더를 사용하고 싶었지만 몇 가지 SPI 기반 보드를 받았지만 작동합니다. 그들에 대한 코드 예제는 제한적입니다.
나는 몇 가지 다른 라이브러리를 발견하고 이것에 정착했다 : https://github.com/ljos/MFRC522
문제는 온라인에서 사용 가능한 모든 코드가 사람들이 번역하고 Arduino 라이브러리에 해킹 한 일부 중국인 Python 코드에서 생성 된 것처럼 보입니다.
코드는 작동하지만 Mifare 카드에는 4, 7 또는 10 바이트 UID가 있으며 예제 / 라이브러리는 5 바이트 일련 번호를 반환합니다.
문서가없고 NXP 데이터 시트 를 이해할 수 없습니다 ... 또한 대부분의 카드에서 작동하는 것 같지만 ISO 14443 표준을 준수하는 Mastercard PayWave 카드에서는 작동하지 않습니다. MFRC500을 기반으로 한 더 비싼 RDM880 리더는 잘 작동하고 멋진 라이브러리가 있지만 비용으로 인해 구현이 불가능합니다.
따라서 누군가 NXP MFRC522 기반 장치가 모든 ISO 14443 카드에서 UID를 읽는 데 도움을 줄 수 있습니까?
#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 바이트 결과를 원하므로 더 큰 배열을 사용해 보셨습니까?