如何编码 NFC 标签以将智能 phone 与蓝牙设备配对

How to encode a NFC tag to pair a smart phone to a bluetooth device

前言:本人是NFC新手,不是程序员。尽我所能弄清楚如何完成我想做的事情并在此过程中学习。

我正在尝试使用 ACS ACR122 reader/writer 通过与智能 phone 带蓝牙音箱。

我 运行 遇到的麻烦是 GoToTags 没有内置蓝牙记录。我一直在 NFCForum(和 Google 一般搜索)上搜索了很多,以尝试了解如何使用我想要配对的蓝牙 MAC 地址对标签进行编码,但我不确定要使用 GoToTags 中的哪种类型的记录来执行此操作(或者是否可能)。我从 NFCForum 看到了一些二进制内容,但我对 programming/NFC 没有基本的了解,无法真正利用这些信息做很多事情。

我的记录选项是 Android 应用程序、应用程序、Bing 地图、Bing 搜索、联系信息、电子邮件、Facebook 个人资料、地理位置、Google 地图、Google 搜索、本地文件、Mime 类型、Phone 数字、纯文本、短信、Twitter 个人资料、Uri、网站和 YouTube 视频。

我在想我也许可以使用 Mime 类型或纯文本记录来放入一些魔法字符串,要求用户与蓝​​牙扬声器配对(或自动配对),但我真的很难找到我需要的。

我也试过在Windows上使用另一个NFC read/write软件(NFC工具)写一个蓝牙标签,但是当我用我的文本扫描它时它不起作用iPhone 7 Plus,当我用 GoToTags 读取标签时,它显示了一条带有长数据字符串的未知记录 "D220086170706C69636174696F6E2F766E642E626C7565746F6F74682E65702E6F6F620800000000000000."

这可能只是在我的头脑中(好吧,现在显然是这样),而且似乎大多数人都在使用他们的编程知识来创建他们自己的应用程序和软件。我没有智能 phone(只有一个朋友的 iPhone 7 Plus,当我看到它们时尝试读取我在 Windows 机器上创建的标签——所以不经常)我知道有很多 Android 应用程序可以编写蓝牙标签,但我希望它可以在我的 Windows 机器上运行,如果可能的话,使用 GoToTags。

感谢您的帮助!

您需要的 mimeType 是 application/vnd.bluetooth.ep.oob

如果您使用 https://codebeautify.org/hex-string-converter 将该十六进制字符串解码为文本,您将获得 "application/vnd.bluetooth.ep.oob" 作为 mimeType。

查看十六进制字符串,它在 mimeType 前面有正确的 NDEF headers,但将其与 Android 应用程序写入 "Bluetooth Secure Simple Pairing" 记录进行比较,它写入 08 00 随后通过Mac反向地址

更新: 来自蓝牙规范(第 3.1 节)08 00 是 OOB 可选数据长度(包括自身的 2 个字节 + [=51 的 6 个字节=]地址)

因此,如果您在字符串中查找 "oob" + 08 00 或 6F6F620800 作为指向 MAC 地址应开始位置的指针,那么在字符串中这是正确的。您似乎缺少的是任何 MAC 地址(全为零),这就是为什么 Iphone 可能不会对它做任何事情。

有关 NDEF 规范的更多详细信息,请访问 https://github.com/haldean/ndef/blob/master/docs/NFCForum-TS-NDEF_1.0.pdf

根据读取此 NDEF 记录的 NXP 应用程序,它被存储为规范链接中的 "Short Record" 第 3.2.4 节。 08 00 是有效载荷数据的一部分

所以尝试用你的 windows 软件写一条 "application/vnd.bluetooth.ep.oob" 的 mimeType 记录,数据为 08 00 + MAC 地址反转。

例如如果 MAC 地址是 A1:B1:C1:A2:B2:C2

要写入的十六进制数据为 08 00 C2 B2 A2 C1 B1 A1

更新: 我确实在 https://members.nfc-forum.org/resources/AppDocs/NFCForum_AD_BTSSP_1_0.pdf

找到了蓝牙消息的规范