我想通过NFC将信息从Arduino发送到手机。
为此,我有一个PN532模块。我想发送信息的方式是使用该模块模拟NFC标签并从手机中读取信息。我不想使用真正的NFC卡的原因是内存限制。它们中的大多数都有近800字节的内存,而内存更多的则很昂贵。如果我模拟一个带有PN532模块的卡,我还会有一些内存限制吗?
我在文档中创建了这个:
PN532-ce
我认为重要的是APDU字节的限制。我不是真正的NFC专家,我不知道这是否会影响我在模拟卡内存中的表现。
我想要的信息是一个纯文本的JSON。我认为NDEF消息支持这一点,所以iPhone可以读取它。JSON可能有多达2500个字符或字节,每天都会更改很多次,所以物理卡的重写部分也是一个问题。
我的理解是ISO 14443-4是一种传输协议https://webstore.iec.ch/preview/info_isoiec14443-4%7Bed4.0%7Den.pdf因此是一个命令中可以发送/接收的数量的限制。这并不限制您使用多个命令来发送和接收以模拟更多内存。
因此,真正应该发生的是,设备会通过iso 14443-4向模拟卡发出iso 7816-4命令。
读取时,设备应遵守设备所说的最大收发长度(在您的情况下,短APDU命令应为256字节(,因此应读取多个256字节块以读取整个文件(内存(
参见ISO 7816-4read binary
命令https://cardwerk.com/smart-card-standard-iso7816-4-section-6-basic-interindustry-commands/#chap6_1它有偏移和长度参数
因此,对于更大的数据,基本上你在Arduino上的HCE响应代码应该从PN532";读取0到255字节的二进制";命令,您将使用JSON数据的前256个字节对其进行响应
然后;读取256到512字节的二进制";将由设备发出,等等,直到您想要返回的所有数据都已返回。
因此,它正在读取模拟文件(存储器(是可以由该设备支持的短APDU(256k(传输的最大大小的块。
注意,我没有做过任何编码,只是对标准有所了解。
请注意,你可以买到存储容量高达32K的卡,是的,它们的价格更高,但4K字节Desfire卡的价格仅为888字节Ntag216的150%左右。