如何在 Arduino Uno 上为 HM-10 BLE 设置服务和特性?

How do I set services and characteristics for HM-10 BLE on Arduino Uno?

我有一个 Arduino Uno 连接到一个 HM-10 BLE 设备。我希望能够通过 Xamarin 表单应用程序与之通信。不幸的是,我意识到要这样做,有必要在 Arduino 上为 BLE 模块定义可用服务和支持特性,然后才能开始使用它。

我研究了一些库,即 CurieBLE,它似乎是最突出的选择,但它不支持优秀的旧 Arduino Uno。

实际上是否有我还没有遇到过的用于此目的的在线库,如果没有,我该如何自己定义服务和特征?

事情不是这样的。 HM10 具有您需要内置和通信的特性和服务 通过 RX 和 TX 引脚与您的 Arduino 连接。
您需要 softserial 库来创建额外的串行连接。

还要考虑到大多数 HM10 设备仅兼容 3.3 伏,需要一个电平转换器才能与您的 Arduino 配合使用! 另一方面,我在没有电平转换器的情况下将 RX 连接到 TX,将 TX 连接到 RX 没有问题,但这就是你的风险。

将软串口的 TX 和 RX 引脚连接到 HM10 设备上的 TX 和 RX 引脚。 为您的 Arduino 创建一个可以读取和写入您的软串行连接的草图,您就完成了。

将您的 Xamarin 应用程序设置为 BLE 客户端。
在 Xamarin 表单应用程序上,您的应用程序必须找到设备,
通过获取服务连接到设备,
select 您需要的服务(我的 HM10 是 0000ffe0-0000-1000-8000-00805f9b34fb),
获取 selected 服务的特征,select 你需要的特征(对于我的 HM10,它是 0000ffe1-0000-1000-8000-00805f9b34fb),
将 ClientCharacteristicConfigurationDescriptor 写入能够接收通知的特征。

如果您从 Arduino 发送消息(CHAR 或 BYTE 数组最多 20 个字节),您的应用程序可以接收 它在通知中。 如果你从你的应用程序中写了一条消息,你可以在 Arduino 中阅读它。

要了解 Xamarin 应用程序的工作流程,请查看我在 Github 上的示例:https://github.com/GrooverFromHolland/SimpleBleExample_by_Devicename
它不是 Xamarin 示例,而是通用 Windows BleExample,仅用于展示设置连接所需的内容。

如果您对该示例有疑问,请在我的 Github 页面上创建问题。
对于其他问题,请使用此处的评论。