问题标签 [pn532]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
102 浏览

nfc - 发送 GetInitiatorCommand (0x88) 指令时来自 PN532 NFC 板的 CRC 错误

我正在使用 Adafruit PN532 分线板来模拟 NTAG213 ISO/IEC 14443-2 标签。我已将板配置为使用 TgInitAsTarget 进行仿真,如下所示:

[ 0x8C, 0x01, 0x44, 0x00, 0x7B, 0x58, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00 , 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00];

作为回应,我收到了对原创签名的 ReadSig 请求:

[0x8D,0x00,0x3C]

这确认与发起者的通信正在工作。我通过返回部分显示的原创性签名成功地处理了请求,并且由于显而易见的原因在这里被遮盖了:

[ 0x90, 0x??, 0x??, 0x??, ... ]

我得到了积极的回应:

[0x91,0x00]

然后,我以 100 毫秒的间隔重复发送明确的 GetInitiatorCommand 指令(我尝试了长达 250 毫秒但没有运气),以便从发起者那里检索下一个命令:

[0x88]

PN532 以 CRC 错误响应每一个:

[0x89,0x02]

当我发送它们时,我使用相同的算法来计算所有这些命令的校验和,所以我不认为我的 CRC 实际上是错误的,但要明确的是,发送到 PN532 的完整数据帧是:

[0x00、0x00、0xFF、0x02、0xFE、0xD4、0x88、0xA4、0x00]

当我手动运行计算时,这似乎对长度和数据都有正确的 CRC。

顺便说一句,如果我使用完全不同的设备作为启动器,它的行为类似 - 尽管最初使用读取命令 (0x30) 响应 - 这表明问题出在我的尽头。

CRC错误是否可能适用于其他东西,可能是PN532和发起者之间的数据包?我是否以错误的顺序提交指令?我承认我不完全理解 TgInitAsTarget 数据集中所有选项的含义,这些选项是从另一个已知的好应用程序复制的,也许我的 PN532 仿真器设置不正确?显然我做错了什么。

关于我做错了什么或如何诊断根本原因的任何提示?

0 投票
0 回答
583 浏览

python - 从连接到 Raspberry Pi 的 PN532 模块(UART 模式)读取 Python 中的 NDEF 消息时出现问题

我有一个通过 UART 连接到 Raspberry Pi 3B 的 PN532。在 Python 脚本(V3.7.4)中,我激活阅读器并从标签中读取数据。如果有 NDEF 消息,我会读取标签的数据并在字典中返回 NDEF 记录。所有这些都基于 nfcpy 和 ndeflib 库。

问题是,检查 NDEF 消息的标签似乎无法正常工作。使用 Android App NFC Tools Pro 模拟标签时,可以读取 NDEF 消息。使用各种其他应用程序,无法读取 NDEF 消息。当我使用 NFC 工具 Pro 对真实标签或卡片进行编程时,也找不到 NDEF 消息。使用其他应用程序或带有 USB NFC 阅读器的标签或使用手机扫描标签,可以找到并读取 NDEF 数据。

所以由于某种原因 if 的结果tag.ndef:并不总是返回 true,即使它应该返回它。

这是使用 Pi 上的 PN532 从 Android App NFC 工具 Pro 读取数据的结果: 单击此处

我用与应用程序发送的相同数据对芯片进行了编程。编程也使用 NFC 工具 Pro 完成。这是用NFC工具Pro读取芯片的结果: 点这里

这是我在 Pi 上使用 PN532 读取上述编程芯片时的结果: 单击此处

知道这里出了什么问题吗?

提前感谢您的任何帮助。

0 投票
1 回答
384 浏览

python - 在 GPIO 中断上写入/读取 SPI 失败并出现 OSError:[Errno 9] 文件描述符错误

我在我的 Raspberry Pi 上运行一个带有中断引脚的 NFC 阅读器,我编写了一个脚本来让它运行。到目前为止,它工作得很好,但在某些情况下,SPI xfer 崩溃并出现OSError: [Errno 9] Bad file descriptor

当我收到 GPIO 引脚的中断时,整个 SPI 部分都会发生 - 这可能是个问题吗?我知道代码不应该在中断上做太多事情,这可能会导致崩溃。

在这里分享的代码有点多,但我正在使用带有 Adafruit 库的 PN532 芯片https://github.com/adafruit/Adafruit_Python_PN532 - 我知道它已被弃用,但与 C 实现的差异非常小。我正在运行pn532.read_passive_target(timeout=0.2)从该 NFC 芯片读取 UID 并使其扫描 NFC 卡。

它工作得很好,直到我经常这样做。为了测试,我一次又一次地将卡片放在阅读器上,没有任何延迟。大约5-10次后它崩溃了。

任何想法如何解决这个问题?很抱歉对错误的错误描述。

0 投票
3 回答
1644 浏览

android - PN532 模拟卡无法被 Android 手机读取

我正在使用Arduino UNOelechouse的库和一个PN532通过SPI.

我正在尝试使用该emulate_tag_ndef库中的示例模拟一张卡片,但是当我尝试使用我的NFC工具应用程序读取模拟卡片时Samsung Galaxy S7,我得到一个空序列号并且我没有收到与此类Ndef似的消息。

当我尝试根据链接问题上的帖子更改库中的命令数组Github时,我的手机根本无法检测到模拟卡。

PN532所有其他NFC模式(读/写,点对点)的工作对我来说都很好。

0 投票
1 回答
20 浏览

arduino - arduino yun 和 rfid shield 兼容性

我和这个板子一起买了一个 arduino yun

https://wiki.keyestudio.com/Ks0259_keyestudio_PN532_NFC/RFID_Controller_Shield

阅读一些帖子,由于引脚排列,它们似乎不兼容(uno没问题!),

我对电子产品的经验很少,但如果有办法让它在不连接电缆的情况下工作,我会徘徊吗?

0 投票
1 回答
1366 浏览

arduino - PN532 V3 + Arduino UNO + libnfc 错误(错误:无法打开 NFC 设备:pn532_uart:/dev/ttyUSB0:115200)

我正在尝试将 PN532 (v3) 板与 Arduino UNO 和 libnfc 一起用于我的大学项目。我偶然发现的一个问题是,当我调用 nfc-list 时,libnfc-1.7.1 给了我以下错误:

我在 Arduino 上使用阅读器没有任何问题,我可以上传草图,阅读器与标签进行交互。阅读器处于 SPI 模式,当我调用 nfc-list 时,LED 会闪烁,因此我唯一能想到的就是 libnfc 的某种问题。

我希望有人可以提供帮助,任何建议都会很棒!:) 谢谢!

连接

PN532 V3

Arduino.1

Arduino.2

文件配置

/etc/nfc/libnfc.conf

uartnfc.info

使用的资源

http://nfc-tools.org/index.php/Libnfc:Arduino - 用于安装 libnfc
https://github.com/gunmetal313/mfocuino - 上传草图uartnfc.ino并导入库(mfocuino/mfocuino-read -only/nfcreader/arduino/libraries/PN532/ ) 进入 Arduino IDE。

我已经尝试解决问题的事情

为什么使用 libnfc 和 PN532 SHIELD PN532“找不到 NFC 设备”
无法打开 NFC 设备
https://github.com/nfc-tools/libnfc/issues/507
https://forums.adafruit.com/viewtopic.php?f =19&t=58188
https://superuser.com/questions/1409108/nfc-unable-to-open-nfc-device

0 投票
1 回答
1400 浏览

raspberry-pi - 使用 PN532 和 Raspberry Pi 检测徽章的问题

我一直在尝试使用从亚马逊购买的 PN532 模块检测标签:

https://www.amazon.ca/ASHATA-Controller-Raspberry-Interface-Switching/dp/B07XFNDHNS

我按照这里的教程:

http://wiki.sunfounder.cc/index.php?title=PN532_NFC_Module_for_Raspberry_Pi

我尝试同时使用 I2C 或 SPI,但是当我运行 nfc-poll 时,这两个结果都给了我以下信息:

看起来 PN532 已正确连接到 Pi,但未检测到标签或打印任何信息。我开始怀疑问题是否出在 PN352 设备本身。也许我有一个错误的?

谢谢

0 投票
1 回答
286 浏览

android - 如何使用 EXPLORE-NFC-WW 从带有 React-Native 设备的 Android 向 RaspberryPi 发送一个简单的字符串

这是我的第一篇文章,所以请温柔。我主要是在寻找可以引导我找到一个好的图书馆的信息或一个可以帮助我实现我想要实现的目标的文档。到目前为止,我尝试使用我在 github 上找到的这个库将 nfc 功能添加到我的应用程序中,它适用于卡片和标签,但我不知道如何让它与我的 pi阅读器通信。

任何帮助将非常感激。提前致谢!

0 投票
1 回答
232 浏览

java - 来自带有 Jewel/Topaz512 NFC 标签的 ACR122U 阅读器的“超时,目标尚未回答”

我正在构建一个 Windows/Java 程序(使用javax.smartcardio)以使用 ACR122U 设备(内部带有 PN532 NFC 控制器芯片)与 Jewel/Topaz512 标签(来自 Innovision/Broadcom)进行通信。

我实现了 Topaz512 协议(来自此数据表),但我的命令只有一半有效

  • 一些有效的命令:RID, RALL, READ, WRITE-NE, RSEG
  • 一些不起作用的命令:WRITE-E, READ8, WRITE-E8, WRITE-NE8

使用 WRITE-NO-ERASE 命令的示例

例如,这是我发送 WRITE-NO-ERASE 命令时得到的结果:

命令:FF:00:00:00:0C:D4:40:01:1A:7F:42:38:01:9A:00:17:E8

在哪里:

  • D4:40:01是 InDataExchange 命令,
  • 1A:7F:42是 WRITE-NO-ERASE 命令(值:0x42,块 0x0F,字节 7),
  • 38:01:9A:00是 4 字节的标签 UID,
  • 17:E8是CRC。

回复:D5:41:00:42:90:00

这里的回答是正确的:0x42。状态字节 ( 0x00) 通知一切顺利。

使用 WRITE-WITH-ERASE 命令的示例

这是我发送 WRITE-WITH-ERASE 命令时得到的结果:

命令:FF:00:00:00:0C:D4:40:01:53:7F:42:38:01:9A:00:28:6E

在哪里:

  • D4:40:01是 InDataExchange 命令,
  • 53:7F:42是 WRITE-WITH-ERASE 命令(值:0x42,块 0x0F,字节 7),
  • 38:01:9A:00是 4 字节的标签 UID,
  • 28:6E是CRC。

回复:D5:41:01:90:00

这里,状态字节 ( 0x01) 通知 PN532 检测到超时。(来自PN532 文档(p67):“超时,目标未回答 - 0x01”)

此外,当我删除 PN532 超时(使用FF:00:00:00:06:D4:32:02:00:00:00)时,非工作命令不响应D5:41:01:90:00,但等待更长时间,然后我没有得到响应。

编辑 2020-04-20

我只是尝试使用 gscriptor(来自pcsc-tools套件)执行命令,我得到了相同的行为。这是我的结果:

剧本:

结果:

0 投票
1 回答
296 浏览

c - Elechouse PN532 模拟卡时返回超时

我想将 Elechouse PN532 NFC 模块 V3 模拟为 ISO/IEC 1443-4A 卡。我使用 Arduino Uno 作为开发板。我还从Github下载了他们的库并运行了一些示例来检查 NFC 模块是否工作正常(ISO 卡读取)。检查模块后,我熟悉了 PN532 应用笔记,如何模拟 ISO/IEC 1443-4A 卡。所以,我使用tgInitAsTarget()函数来设置参数和 UID。但是这个函数返回超时错误。启用调试后,我得到以下输出:

我的 Arduino 划痕:

如果我没有向tgInitAsTarget()传递任何参数,它就会卡在readResponse()函数中。

有什么想法吗?


1)PN532 模块正在工作 - 因为我能够获得固件版本(在这个例子中也是如此)或做其他事情。
2) 在终端输出的最后一行是tgInitAsTarget()函数的写入帧。但在第 57 页的应用说明中给出了所有参数。它们那些在库函数中的不同。我尝试粘贴此应用笔记中的参数,但并没有解决问题
3)在我看来,问题是 MCU 向 PN532 芯片发送数据(写入帧)后,无法读取 RDY 寄存器- 或 PN532 收到此命令时未将其设置为 1。这就是为什么它停留在readResponse()函数上的原因

PC - 根据参考手册,RDY 寄存器是特定寄存器“它允许主机控制器知道 PN532 是否准备好接收或发送回数据”。