2012-05-13 3 views
0

私は最近、私のarduino Unoボード用のNFCシールドv1.0を手に入れました。シードのスタジオwiki http://www.seeedstudio.com/wiki/index.php?title=NFC_Shieldから提供されているスターターコードのいくつかを試しました。複数のMifare Ultralight Cを読み書きしようとしたが、私はその問題が何であるかを一行ずつ調べるようにした。私は、多かれ少なかれ、このラインにそれを絞り込む:NFC MIFARE超軽量C認証の失敗

nfc.authenticateBlock(1 /*1 or 2*/, 
       id /*Card NUID*/, 
       10/*0 to 63*/, 
       KEY_A /*Either KEY_A or KEY_B */, 
       keys)) 

カードのIDが正しいので、私は物事をトリップしなければならない引数の別を想定しています。私は鍵を使用している[] = {0xff、0xff、0xff、0xff、0xff、0xff}。それ以外の問題は何か?以下に私のコード全体を含めました。追加の詳細が必要な場合はお知らせください。

ありがとうございました!

#include "PN532.h" 

#define SCK 13 
#define MOSI 11 
#define SS 10 
#define MISO 12 

PN532 nfc(SCK, MISO, MOSI, SS); 

void setup(void) { 
    Serial.begin(9600); 
    Serial.println("Hello!"); 

    nfc.begin(); 

    uint32_t versiondata = nfc.getFirmwareVersion(); 
    if (! versiondata) { 
     Serial.print("Didn't find PN53x board"); 
     while (1); // halt 
    } 
    // Got ok data, print it out! 
    Serial.print("Found chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX); 
    Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC); 
    Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC); 
    Serial.print("Supports "); Serial.println(versiondata & 0xFF, HEX); 

    // configure board to read RFID tags and cards 
    nfc.SAMConfig(); 
} 


void loop(void) { 
    uint32_t id; 
    // look for MiFare type cards 
    id = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A); 

    if (id != 0) 
    { 
     Serial.print("Read card #"); 
     Serial.println(id); 
     Serial.println(); 
     uint8_t keys[]= {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; // default key of a fresh card 


     if(nfc.authenticateBlock(1 /*1 or 2*/, 
       id /*Card NUID*/, 
       0x08 /*0 to 63*/, 
       KEY_A /*Either KEY_A or KEY_B */, 
       keys)) 
     { 
      Serial.println("authenticated!"); 
     } 
     else { 
      Serial.println("failed to authenticate"); 
     } 
    } 
    delay(2000); 
} 

答えて

1

MIFARE Ultralight Cチップでの認証には、MIFAREクラシック認証機能を使用しています。 2種類のチップはまったく異なる認証方法を使用するため、これは機能しません。

+0

で小さなブロックである私の仮定はPN532ライブラリーは、認証のすべてのMIFAREの種類を扱うことだったので、私は少し混乱していたか

チェック(arduino nfc-shield wikiで一般的に述べられているように、http://www.seeedstudio.com/wiki/index.php?title=NFC_Shield)。好奇心の念から、私はlibfreefareプロジェクトのmifare_ultralight.cをインスピレーションのために調べましたが、少し不足していました。 libfreefareプロジェクトはarduinoのnfcシールドで動作しないので、MIFARE ultralightCをサポートするためにPN532ライブラリを調整する方法についてのアドバイスはありますか?そのような騒ぎのために申し訳ありません:( – sybohy

+0

hm、申し訳ありません実際に私はこの最初に探し続けます:https://github.com/adafruit/Adafruit-PN532 – sybohy

0

超軽量のNFCタグの書き込み/読み取りを認証する必要はありません。私は同じ問題を抱えていた。

seedstudioまたは他の場所からのライブラリの問題は、超軽量タグの読み取りのみをサポートしていることです。

ライブラリに関数が存在しないため、タグに書き込みを強制しようとしましたが、成功しませんでした。あなたはクラシックMifareのセクタ/ブロックに書き込みますが、超軽量タグでPagesに書き込む必要があります。あなたは超軽量ページに書き込むことができるように、NFC.H/NFC.PP内で機能を作成する必要があります。 NFC超軽量タグの構造は、あなたの答えを見た後、各ページ http://www.sonmicro.com/en/downloads/Mifare/um_sm130_a2.pdf