HM-10 BLE模块自定义服务创建问题及替代方案咨询
针对HM-10 BLE模块自行车追踪器开发的问题解答
1. 能否用HM-10创建新的BLE服务?
不能。HM-10的原厂固件AT指令集仅支持修改现有自定义服务的UUID,不提供动态创建新服务的指令接口。这类低成本BLE模块的固件通常是预编译固化的,仅开放有限的配置项,没有预留服务创建的底层接口。除非你能找到适配HM-10的第三方自定义固件并自行烧录,但这种操作风险高,且缺乏官方技术支持,不建议在量产项目中采用。
2. 能否用单个服务传输所有数据?
可以,有两种可行方案:
- 复用预定义服务的自定义特征:比如选择位置与导航服务(0x1819),利用模块允许修改特征UUID的功能,创建一个自定义特征,将速度、位置、时间、日期、电量数据打包成二进制帧传输。例如定义帧格式:
- 字节0-3:速度(32位浮点型)
- 字节4-11:纬度(64位双精度)
- 字节12-19:经度(64位双精度)
- 字节20-23:时间戳(Unix时间,32位整数)
- 字节24:电量百分比(0-100,8位整数)
nRF Connect/BLE Scanner可以读取该特征的原始二进制数据,你也可以通过APP的自定义解析功能(或自行编写简单解析逻辑)将数据转换为可读格式。
- 复用现有特征扩展数据:如果模块允许修改预定义特征的数据长度,也可以直接在电池服务(0x180F)或时间服务(0x1805)的特征中追加其他数据,但这种方式会打破BLE规范的特征定义,可能导致部分APP解析异常,优先推荐第一种方案。
3. 支持AT指令创建新服务的BLE模块推荐
以下模块均提供支持自定义服务/特征创建的AT指令集:
- JDY-23:低成本模块,AT指令集支持创建多个自定义服务和特征,配置灵活,适合小型项目。
- ESP32系列BLE模块(如ESP-01S BLE版):官方AT固件支持通过
AT+BLEGATTSSRVCREATE等指令创建自定义服务和特征,同时具备更强的算力,适合需要额外处理逻辑的项目。 - nRF52832 AT模块:部分厂商基于nRF52832开发的模块提供完整的AT指令集,支持动态创建BLE服务、特征,兼容性和稳定性较好。
- CC2541第三方AT固件模块:部分第三方固件为CC2541添加了服务创建的AT指令,功能丰富,但需注意选择可靠的固件来源。
内容的提问来源于stack exchange,提问作者sofien
相关产品推荐
相关产品推荐

