背景
我建立了一个简单的电路,其中包括一个Arduino Nano和一个HM-10 BLE串行模块。
您可以在以下电气工程SE问题中看到该电路:https://electronics.stackexchange.com/questions/412525/when-i-write-data-to-a-ble-characteristic-ffe1-to-send-data-over-bluetooth-is
我还有一个用Swift编写的Xcode项目,该项目成功将字节发送到FFE1特性。
一切都很好,我可以通过Arduino串行监视器看到来自iPad的数据。
但是,根据我所做的研究(请参阅上一链接),我相信我已确定使用Core Bluetooth writeValue()发送的数据未加密。
我要做什么
现在,我已经成功发送和接收了字节,我想使我的iPad与BLE设备(HM-10)绑定(bind),以便确保通过提供的BLE channel 对我发送的数据进行加密。
我尝试过的内容
向我展示了如何安全地绑定(bind)和发送数据。
需要尝试写入具有以下功能的BLE设备的特征
属性
CBCharacteristicPropertyNotifyEncryptionRequired
但documentation on that at Apple is a ridiculous one-liner。
并阅读属性,但我似乎没有找到该属性。但
docs on the HM-10似乎表明它确实支持
身份验证和加密,我知道这是BLE的一部分。
问题
CBPeriperhal
上设置一些属性或需要发送到writeValue()
的某些参数? 数据?
最佳答案
发布我的问题后,我再次搜索配对/绑定(bind)。
我被带到一个datasheet for the HM-10的链接,我已经阅读了无数次。但是,这次,我在文档中搜索了“bond”一词。
当我这样做时,我阅读了文档中的以下图表:
这让我开始思考和猜测。
我认为问题在于HM-10的类型为TYPE 0,因此业余爱好者用户无需配对即可进行设置。
这与我在其他项目中使用了无数次且需要配对的HC-05模块(经典蓝牙)完全不同。
可能的解决方案
我相信我所要做的只是将AT_TYPE设置为2,然后我的iOS(iPad)设备将允许我使用PIN进行配对。
我猜测这将迫使每个用户使用PIN来配对其设备,然后只能通过安全BLE channel 写入数据(使用writeValue)。
额外信息
这对我也很有趣,因为当我使用默认的蓝牙iOS进行扫描时,该操作系统从未看到HM-10-,该名称没有出现在“蓝牙”部分下。我猜这是因为HM-10没有广播,它可以通过引脚配对,而iOS则忽略了它。
这对我总是很有趣,因为即使iOS无法看到HM-10,我也可以连接它并通过我的Swift代码将数据发送给它。哇,这一切可能最终会融合在一起。
我今晚将对此进行测试,然后回发以确认设置TYPE是否可以解决该问题。
还有一件事
我在HM-10上所做的广泛阅读(see Martyn Curry's fantastic, detailed articles)都没有提到此选项,也没有在任何地方讨论它。
我还看到一些站点指示AT+TYPE
用于设置设备是否为Master/Slave (Central/Periperhal),我认为这不是该项目的正确文档。所有这些都使得确定如何工作变得更加困难。
更新说明
我正在阅读yet another datasheet for HM-10,这表明AT + TYPE的默认设置实际上为0(不需要PIN码),如图表底部所示。不知道为什么其他数据表没有相同的信息,因为它看起来像相同的图表。
更新2 -这就是答案。我给HM-10通电并运行了Arduino代码,该代码允许我发送AT命令并发送AT+TYPE3<ENTER>
,然后发送AT + RESET以确保HM-10自行重启。
之后,您无需执行其他任何操作。我使用在iPad上运行的iOS应用程序将数据发送到FFE1特性。当我尝试这样做时,iOS会弹出默认的BLE对/绑定(bind)对话框并询问您或输入PIN(在这些HM-10组件上默认为000000)。
注意我发现的一件事是我的HM-10之一出现故障。即使取消配对或配对失败(通过发送不正确的PIN码),它也可以写入数据。该制造商的组件不再可用,因此我假设它是错误的。我拥有的另一架HM-10完全可以预期。如果您不配对或配对失败,则该应用程序将无法写入数据。我会尽快将其标记为答案。
关于ios - 如何使用Swift代码和HM-10在iOS上配对和/或绑定(bind)到BLE,以便对发送的数据进行加密?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53872133/