मैं अपने स्थानीय मेकर्सस्पेस के लिए एक परियोजना पर काम कर रहा हूं, हमारे पास सीमित बजट है इसलिए मैं eBay पर RFID-RC522 el'cheap'o RFID / NFC पाठकों का उपयोग करने की उम्मीद कर रहा था, मुझे कुछ SPI आधारित बोर्ड मिले, वे काम करते हैं, फिर भी उनके लिए कोड उदाहरण सीमित हैं।
मैंने कई अलग-अलग पुस्तकालयों को पाया है और इस एक पर बसे हैं: https://github.com/ljos/MFRC522
परेशानी यह है कि ऑनलाइन उपलब्ध सभी कोड कुछ चीनी लोगों के पायथन कोड से स्पॉन लगते हैं जिन्हें लोगों ने अनुवादित किया है, और एक Arduino लाइब्रेरी में हैक किया है।
कोड काम करता है, लेकिन Mifare कार्ड का मतलब 4, 7 या 10 बाइट UID है और उदाहरण / लाइब्रेरी 5 बाइट सीरियल नंबर दे रहा है।
कोई दस्तावेज नहीं है और NXP डेटाशीट समझ से बाहर है ... इसके अलावा यह अधिकांश कार्ड के साथ काम करने लगता है, लेकिन यह मास्टरकार्ड पेवेव कार्ड के साथ काम नहीं करता है जो आईएसओ 14443 मानक के अनुरूप है। अधिक महंगा RDM880 रीडर जो MFRC500 पर आधारित है, ठीक काम करता है और इसमें एक अच्छा पुस्तकालय है लेकिन लागत कार्यान्वयन को असंभव बना देती है।
तो, क्या कोई मुझे इस NXP MFRC522 आधारित इकाई को सभी आईएसओ 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 बाइट के परिणाम के बाद एक बड़े सरणी का उपयोग करने की कोशिश की?