私は地元のメーカースペースのプロジェクトに取り組んでいます。予算が限られているため、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バイトの結果が必要なので、より大きな配列を使用してみましたか?