将 NFC 扫描仪连接到手机以显示弹出窗口

问题描述 投票:0回答:1

我的名字是 Daniel Spierings,我代表我的项目组与您联系。我们目前正在开展第一年的一个学校项目,在我们的案例中包括 NFC 的使用。

我们已将 BBC Micro:bit 控制器与 PN532 NFC 模块 V3 (HW-147) 配对,并编写了一些代码,让我们的 NFC 扫描仪识别接触的 NFC 标签。我将为您提供在 Arduino IDE 中编写的代码。我们希望能够让 PN532 在我们的手机上显示弹出窗口。

我们希望您能够在将手机连接到 PN532 以显示弹出窗口时帮助我们,因为我们(经过大量谷歌搜索后)不知道如何让它工作.

理想情况下,弹出菜单应显示是/否选项按钮,但这不是绝对必须的。如果我们能够将手机靠在 PN532 上,以便屏幕上出现弹出窗口,那就太棒了。我们希望您能帮助我们解决这个问题。

感谢您的宝贵时间

  • 丹尼尔
#include <Wire.h>
#include <Adafruit_PN532.h>

#define SDA_PIN 20  // Define the SDA pin on the micro:bit
#define SCL_PIN 19  // Define the SCL pin on the micro:bit

Adafruit_PN532 nfc(SDA_PIN, SCL_PIN);

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

  nfc.begin();
  uint32_t versiondata = nfc.getFirmwareVersion();
  if (!versiondata) {
    Serial.print("Didn't find PN53x board");
    while (1);
  }

  nfc.SAMConfig();
  Serial.println("Waiting for an NFC card ...");
}

void loop(void) {
  uint8_t success;
  uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };
  uint8_t uidLength;

  success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);

  if (success) {
    Serial.println("Found an NFC card!");

    Serial.print("UID Length: "); Serial.print(uidLength, DEC); Serial.println(" bytes");
    Serial.print("UID Value: ");
    for (uint8_t i = 0; i < uidLength; i++) {
      Serial.print(" 0x"); Serial.print(uid[i], HEX);
    }
    Serial.println("");
    delay(1000);
  }
}
java nfc nfc-p2p bbc-microbit
1个回答
0
投票

这是一个非常大的问题,我只能给出一些建议,因为我并没有真正在微控制器上进行 NFC。

首先,NFC 硬件有 2 种主要操作模式 - 读/写模式(NFC 术语中的发起者)和(主机)卡模拟模式(NFC 术语中的目标)。

所有通信都是由充当发起者的硬件启动到充当目标的硬件。

通过正确的命令和软件,许多硬件都可以充当发起者或目标,幸运的是 PN532 可以充当两者。

因此,要实现您想要的目标,手机需要充当发起者,PN532 作为目标。 Android(我相信 iOS)安装了一些默认软件来读取目标设备的选定类型的数据,而无需其他软件,通常这些是 Ndef URL 或文本格式的数据。

否则你将不得不为手机编写一个应用程序来读取其他数据格式。

Ndef 数据格式的详细信息是这里

继续当前代码是为了让 PN532 充当 Initiator,这是没有用的,因为 2 个 Initiator 不会相互通信。

如果您阅读PN532数据表的第7.4和7.5节,其中给出了“ISO/IEC14443-4 PICC模式”的命令,这将允许PN532像NFC类型4标签一样存储Ndef数据。

总之,您需要编写 BBC Micro:bit 控制器代码,将 PN532 配置为目标模式,然后正确响应用于读取 Ndef 数据格式的 Type 4 命令,并响应一些 Ndef 文本/Url 数据。

快速谷歌显示了正确模式下的 Adafruit PN532 的一些示例代码这里以及基本的 APDU 解析和响应。您需要正确响应一系列 APDU,才能将 Ndef 数据发送到手机。

我希望对您有所帮助,并为您提供解决这个复杂问题的指导。

© www.soinside.com 2019 - 2024. All rights reserved.