gpt4 book ai didi

ios - 如何使用 Swift 代码和 HM-10 配对和/或绑定(bind)到 iOS 上的 BLE,以便加密发送的数据?

转载 作者:搜寻专家 更新时间:2023-11-01 06:55:18 26 4
gpt4 key购买 nike

背景

我构建了一个简单的电路,其中包括一个 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 串行监视器看到来 self 的 iPad 的数据。

但是,根据我所做的研究(参见前面的链接),我相信我已经确定我使用 Core Bluetooth 发送的数据 writeValue()未加密。

我想做什么

现在我已经成功发送和接收字节,我想让我的 iPad 与 BLE 设备 (HM-10) 绑定(bind),这样我就可以确保我发送的数据通过提供的 BLE channel 加密。

我尝试过的

  • 通读了 Apple 的 Core Bluetooth 文档,但我找不到如何配对或绑定(bind)到设备以便加密通过 channel 发送的数据。
  • 阅读我能找到的所有 SO 问题,但找不到任何 iOS 代码向我展示如何安全地绑定(bind)和发送数据。
  • 我确实找到了一些非常基本的信息来让我的设备绑定(bind)需要尝试写入具有的 BLE 设备的特性属性 CBCharacteristicPropertyNotifyEncryptionRequired 但是 documentation on that at Apple is a ridiculous one-liner .
  • 我编写了迭代 HM-10 特性的代码并阅读属性,但我似乎没有找到该属性。但docs on the HM-10似乎表明它确实支持身份验证和加密,我知道这是 BLE 的一部分。

问题

  1. 你能给我指点 Swift 代码吗?它给我一个例子,说明我将如何绑定(bind)和发送加密数据?是否需要在 CBPeriperhal 上设置某些属性或需要将某些参数发送到 writeValue()
  2. 我是不是误会了? HM-10不支持加密发送吗数据?

最佳答案

在发布我的问题后,我再次搜索配对/绑定(bind)。

我被带到了一个链接 datasheet for the HM-10我已经读过很多遍了。然而这一次,我在文档中搜索了“债券”这个词。

当我这样做时,我阅读了文档中的以下图表:

HM-10 AT+TYPE bond

这让我开始思考和猜测。我认为问题在于 HM-10 是作为 TYPE 0 发送的,这样爱好者用户就可以在不配对的情况下进行设置。
这与我在其他项目中多次使用并且需要配对的 HC-05 模块(经典蓝牙)完全不同。

可能的解决方案

我相信我需要做的就是将 AT_TYPE 设置为 2,然后我的 iOS (iPad) 设备将允许我使用 PIN 进行配对。

我猜它会强制每个用户使用 PIN 来配对他们的设备,然后数据将只能通过安全的 BLE channel 写入(使用 writeValue)。

额外信息

这对我来说也很有趣,因为当我使用默认的蓝牙 iOS 扫描时,操作系统永远不会看到 HM-10——名称不会出现在蓝牙部分下。我猜这是因为 HM-10 没有广播它可以通过 pin 配对,而 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 码),如图表底部所示。不知道为什么其他数据表没有相同的信息,因为它看起来像同一张图表。

set module bond mode

更新 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 配对和/或绑定(bind)到 iOS 上的 BLE,以便加密发送的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53872133/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com