Недавно я получил щит NFC v1.0 для моей платы Arduino Uno. Я пробовал некоторые из кода стартера, предоставленного из wiki студии посещений http://www.seeedstudio.com/wiki/index.php?title=NFC_Shield. После нескольких попыток чтения или записи набора Mifare Ultralight C, я решил попробовать по очереди, чтобы узнать, в чем проблема. Я сузили его до более или менее этой линии:Ошибка аутентификации NFC 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))
Идентификатор для карты правильно, поэтому я предполагаю, другой аргумент должен быть расцепления вещи. Я использую ключи [] = {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);
}
Осмотрев свой ответ, я был немного смущен, потому что мое предположение было то, что библиотека PN532 будет обрабатывать все типы MIFARE аутентификации (как правило, указано на вики-странице arduino nfc-shield, http://www.seeedstudio.com/wiki/index.php?title=NFC_Shield). Из любопытства я заглянул в проект mifare_ultralight.c проекта libfreefare для вдохновения, но немного подошел. Поскольку проект libfreefare не будет работать с щитом arduino nfc, у меня есть какие-либо рекомендации о том, как настроить PN532 lib для поддержки сверхлегкого MIFAREC? извините за то, что вы такой noob :( – sybohy
hm, извините, я буду продолжать изучать это первым: https://github.com/adafruit/Adafruit-PN532 – sybohy