当前位置: 首页 > 知识库问答 >
问题:

如何在NFC上使用Arduino读取/写入MIFARE标签?

伊锦
2023-03-14

我正在开发一个用于从MIFARE标签读取和写入数据的应用程序。我买了一个可以使用NFC技术读取和写入MIFARE标签操作的设备。

NFC屏蔽

我一直在使用MIFARE ultralight标签,但在尝试验证特定内存地址时遇到了问题。由于这个原因,我不能开始阅读。这是我的Arduino代码:

//This example reads a MIFARE memory block. It is tested with new MIFARE 1K cards.
//Uses default keys.
//Contributed by Seeed Technology Inc (www.seeedstudio.com)

#include <PN532.h>

#define SCK 52
#define MOSI 51
#define SS 10
#define MISO 50

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);
    
    uint8_t keys[]= {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
    if(nfc.authenticateBlock(1, id ,0x08,KEY_A,keys)) { //authenticate block 0x08
      Serial.print("giris tmm #");
      //if authentication successful
      uint8_t block[16];
      //read memory block 0x08
      if(nfc.readMemoryBlock(1,0x08,block)) {
        Serial.print("Read tmm #");
        //if read operation is successful
        for(uint8_t i=0;i<16;i++) {
          //print memory block
          Serial.print(block[i],HEX);
          Serial.print(" ");
        }
        Serial.println();
      }
    }
  }
  
  delay(500);
}

此读取代码是为Arduino Mega 2560和Seeedstudio NFC Shield v1.0和MIFARE超轻标签制作的。在写作操作过程中也遇到了同样的问题。

我该如何解决这个问题?

共有3个答案

商兴朝
2023-03-14

使用PN532库和NDEF库,您可以读取/写入mi,经典标签和读取mi,超轻标签。

李鸿
2023-03-14

MIFARE Ultralight与MIFARE Classic 1K并不相同。MIFARE Ultralight不支持(或不需要)身份验证。您可以直接开始阅读,无需使用身份验证。

涂玉韵
2023-03-14

我遇到了同样的问题,并编辑了米费尔经典示例以读取米费尔超轻卡片。这是我的代码:https://gist.github.com/SamDecrock/bd1ec55f083a71ecee95

输出应该是这样的:

Looking for PN532...
Found chip PN532
Firmware ver. 1.6
Waiting for an ISO14443A Card ...
Found an ISO14443A card
  UID Length: 7 bytes
  UID Value: 4 13 74 72 83 1E 81 
Page 0   04 13 74 EB    ..t.
Page 1   72 83 1E 81    r...
Page 2   6E 48 00 00    nH..
Page 3   E1 11 06 00    ....
Page 4   00 00 00 00    ....
Page 5   00 00 00 00    ....
Page 6   00 00 00 00    ....
Page 7   00 00 00 00    ....
Page 8   00 00 00 00    ....
Page 9   00 00 00 00    ....
Page 10  00 00 00 00    ....
Page 11  00 00 00 00    ....
Page 12  00 00 00 00    ....
Page 13  00 00 00 00    ....
Page 14  00 00 00 00    ....
Page 15  00 00 00 00    ....


Send a character to run the mem dumper again!

如您所见,第0页和第1页包含UID;-)

 类似资料:
  • 更新:从本文NFC论坛类型标签中,您可以发现Mifare Ultralight与NDEF兼容。Android设备可以轻松读取这种类型的标签。

  • 我正在尝试使用NFC读卡器库读取Mifare超轻型卡的内容。 我对NFC完全陌生,我正在使用这个github存储库开始。 此存储库中的代码允许检测检测到哪种类型的卡(Mifare,Mifare超轻量级......)并读取卡的UID。我添加了以下代码以读取Mifare超轻型卡的内容: 我有一张卡片,上面写着“Hello world”,当我读到它时,上面的代码会打印以下字节: 所以我从我的卡片上读了一

  • 我一直在尝试创建一个将数据写入Mifare Ultralight NFC卡的应用程序,但似乎找不到任何有助于我的文档。官方文件非常模糊。我只想在按下按钮时写入两页数据,但我不知道如何让手机检测卡并写入。我在Java方面有一些经验,但我刚刚开始使用android studio。 谢谢!

  • 本文向大家介绍详解Android平台上读写NFC标签,包括了详解Android平台上读写NFC标签的使用技巧和注意事项,需要的朋友参考一下 本文主要谈一谈Android上有关NFC标签的读写问题(NDEF格式)。 硬件环境:android4.0(Sony M35h)+可读可写的NFC标签若干 一、NFC基础知识 1.NFC是什么? NFC,即Near Field Communication,近距离

  • 如何将NDEF消息写入NFC标记?我必须更改清单文件吗?到目前为止,我有生成NDEF消息的代码: 如何发现标签?有人能帮我吗?

  • 我正在尝试使用react-native-NFC-Manager在我的react-本机应用程序中添加NFC功能,它工作正常。但问题是我第一次无法读取/写入NFC卡。第一次,我需要使用NFC工具应用程序编写一个新标签,将“NdeFormatable”转换为“Ndef”,否则我无法读取/写入NFC卡 我用这段代码写数据: 这个问题有什么解决办法吗?