0

最近、arduino Uno ボード用の NFC シールド v1.0 を入手しました。シードのスタジオ wiki http://www.seeedstudio.com/wiki/index.php?title=NFC_Shieldから提供されたスターター コードのいくつかを試しました。Mifare Ultralight C のセットの読み取りまたは書き込みを複数回試行した後、問題が何であるかを確認するために行ごとに試行するように設定しました。私は多かれ少なかれこの行にそれを絞り込みました:

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

カードのIDは正しいので、別の引数が問題を引き起こしているに違いないと思います。キーに keys[]= {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);
}
4

2 に答える 2

1

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

于 2012-05-13T21:44:11.927 に答える
0

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

シードスタジオまたは他の場所のライブラリの問題は、超軽量タグの読み取りのみをサポートすることです。

関数がライブラリに存在しないため、タグへの書き込みを「強制」しようとしましたが、成功しませんでした。Classic Mifare ではセクター/ブロックに書き込みますが、ページには超軽量タグで書き込む必要があります。超軽量ページに書き込むことができるように、NFC.H/NFC.PP 内で関数を作成する必要があります。

NFC Ultralight タグの構造がどのようになっているのか、各ページの小さなブロックを確認してください http://www.sonmicro.com/en/downloads/Mifare/um_sm130_a2.pdf

于 2013-12-12T04:58:26.967 に答える