HID 解锁服务

更新时间:2025-10-31 02:22:28下载pdf

概述

人机接口设备(Human Interface Device,HID)定义了蓝⽛在⼈机接⼝设备中的协议、特征和使⽤规程,主要是利用蓝牙设备与手机系统蓝牙配对、靠近后系统能够自动回连此设备的特性,使连接的工作由 App 转到系统层,无需依赖 App 发起扫描连接,从而达到无感连接的体验。其具有系统级、速度快的特性,首次使用需要通过 App 操作配对。

HID 流程

流程如下:

是 93
是 92
开始
MCU 解析 DP 命令
DP 为 93 或者 92?
App 会主动发起配对流程
设备端主动调用配对流程
模组回复配对成功以及 HID 配对已连接且校验通过
MCU 请求 RSSI 值
获取到 RSSI 进行滤波计算
开关锁逻辑处理
结束

收到 DP 93 指令后,MCU 不要主动去发起 HID 配对请求。

DP 指令

HID 流程涉及以下协议指令:

DP DP 名称 DP code 描述
92 感应解锁开关 auto_unlock iOS:蓝牙 HID 无感解锁功能开关,使能或关闭,默认是关闭状态
93 感应解锁开关 auto_unlock_pair 安卓:手机蓝牙 HID 无感解锁功能开关,使能或关闭,默认是关闭状态
33 自动锁车距离 auto_unlock_distance 枚举值,默认 3 档:lowmiddlehigh
94 设防距离设定 fortify_distance_record App 触发设备标定设防距离
95 解防距离设定 disarm_distance_record App 触发设备标定解防距离
96 HID 绑定状态 hid_bind 使能 HID 感应开关后,设备端发起与手机系统层 HID 绑定流程,完毕后设备端反馈绑定结果:bind(已绑定)、unbind(未绑定)。App 在感应解锁界面内显示该状态。当设备配对失败会上报未绑定状态,配对成功则上报已绑定状态。当配对失败时,需要同时更新一下对应的感应解锁开关 DP

涉及的串口指令

请参考 蓝牙通用串口协议 > 扩展功能 > 蓝牙 HID 相关功能(CMD-0xBA)

示例

  • 蓝牙发送(Bluetooth LE to MCU):

    55 AA 00 06 00 05 5D 01 00 01 01 6A // HID 解锁功能打开
    55 AA 00 BA 00 02 01 02 BE  // HID 配对成功
    55 AA 00 BA 00 02 03 05 C3  // HID 配对已连接且校验通过
    55 AA 00 BA 00 03 02 00 3B F9 // 模组回复的 RSSI
    55 aa 00 BA 00 01 01 BB MCU // 请求 HID 配对(DP 92 才需要主动请求)
    
    HID 解锁服务
    • 55 AA 00 06 00 05 5D 01 00 01 01 6A:HID 解锁功能打开。
    • 55 AA 00 BA 00 02 01 02 BE:HID 配对成功。
    • 55 AA 00 BA 00 02 03 05 C3:HID 配对已连接且校验通过。
  • MCU 回复(MCU to Bluetooth LE):

    55 AA 00 07 00 05 5D 01 00 01 01 6B // HID 解锁功能打开 ACK
    55 AA 00 BA 00 01 03 BD  // 查询 HID 配对状态
    55 AA 00 BA 00 04 02 01 0A 01 CB  // 请求开始按照 100 MS 获取 10 个 RSSI 值
    
    HID 解锁服务
    • 55 AA 00 07 00 05 5D 01 00 01 01 6B:MCU 回复 DP 93 命令。
    • 55 AA 00 BA 00 04 02 01 06 01 C7:请求 RSSI。

注意事项

  • App 下发的每个 DP,设备端都需要做相应的 DP 回复。
  • 对于 iOS 平台而言,涂鸦 App 没有系统蓝牙删除配对信息的权限,会提示用户跳转到系统蓝牙中去手动清除系统中的蓝牙配对信息。
  • 开发功能时,先根据具体环境(办公室及实际户外)判断具体的 RSSI 值是否稳定,分析对应的 RSSI 数据,然后再做相应的逻辑处理。
  • 参与获取的 RSSI 要做条件限制,防止非法数据影响结果。RSSI 值 ≤ -110 时,无需参与计算,例如值 -128、-110 需要忽略。

建议

在您的使用过程中,请按需参考以下:

  • 获取到的 RSSI 可以先去掉其最大值和最小值,然后再做平均处理。
  • 开/关机阈值计算方法:对于某些客户而言,当MCU 收到 DP 94 的命令,会存储当前的 RSSI 作为设定的 RSSI 值,那么:开机阈值 = 设定的 RSSI - x,关机阈值 = 设定的 RSSI - y。例如,设置的 RSSI 值是 -53,开机阈值计算后为 -56,关机阈值计算后为 -75(开机减去某个值,是为了更加灵敏)。
  • 如不同型号的手机远程关机需要的距离之间偏差较大,可以根据 DP 94 和 DP 95 分别处理逻辑。

模组仅上报 RSSI 值,开关锁的具体逻辑,需要由客户根据实际应用具体处理。

参考文档