BLE 设备三态工作机制:HID 自动连接、GATT 通信与DFU 固件升级

 目录

一、总体架构设计

二、连接状态切换流程图

三、关键模块技术实现

1. HID 服务动态启用/禁用(设备端)

A. 初始化时加载 HID 服务或跳过

B. 断开系统层 HID 连接

2. GATT 服务:App 与设备通讯控制接口

3. OTA 升级切换(DFU 模式)

四、App 交互逻辑建议

五、注意事项

六、设备端建议架构

七、总结方案结构图


在智能挂锁中,BLE HID + GATT + OTA/DFU 协议切换设计是一种常见的 多协议复用方案,适用于低功耗智能设备,需要在 HID 输入、标准 BLE 服务通讯(如 GATT)与 OTA 固件升级之间灵活切换。

设计目标:一套 BLE HID + GATT + DFU 的三态工作机制,且通过 App 控制 HID 的启用与关闭,同时支持靠近自动连接、App 唤醒(只支持Android)、连接状态切换和固件升级。

以下是完整的设计解析、切换逻辑、系统实现建议。


一、总体架构设计

1.系统模块角色划分

模块 说明
BLE HID Profile 提供与手机/iOS/macOS 进行输入交互(如自动连接、模拟按键、触摸输入)
BLE GATT Profile 提供挂锁专属数据通信通道(如身份验证、开锁命令、状态上报)
OTA/DFU 模块 提供 BLE 下固件升级能力(nRF OTA、ESP OTA、DFU Service)

2.协议架构设计

模式 用途 蓝牙协议 特性
快速靠近连接 唤醒设备,自动连接 BLE + HID Profile iOS /Andriod可自动连接并显示连接状态(系统设置-手机蓝牙列表显示)
应用通信 App 打开并控制设备 GATT 自定义服务 支持配网、开锁、状态上报
OTA 升级 固件更新 DFU OTA 专用服务 进入后需断开现有连接再重连

二、连接状态切换流程图

前提:在APP端设置HID开启/关闭.以下为已开启HID流程图

【1】靠近广播(启用HID)─────┐
                               ↓(系统自动连接)
                     【2】系统层 BLE HID 连接
                               ↓(打开App)
【3】App连接GATT】───→ GATT 握手(认证、控制)
                               ↓(App设置关闭HID)
【4】关闭HID并断开】←──── 设备断开系统BLE HID连接
                               ↓
                     仅保留App GATT通信
                               ↓(App触发升级)
【5】重启并切DFU】────→ 进入OTA广播 → DFU连接 → 升级完成
                               ↓
                         重启回广播状态。

三、关键模块技术实现

1. HID 服务动态启用/禁用(设备端)

支持 App 控制是否启用 BLE HID 服务

实现方式:

A. 初始化时加载 HID 服务或跳过

设备端维护一个非易失性标志位(如 Flash 标志):

bool isHIDEnabled = read_setting_from_flash();
if (isHIDEnabled) {
    ble_add_hid_service(); // 注册 HID 服务
}

App 通过 GATT 写入 disable_hid 指令 → 保存标志 → 重启设备。

B. 断开系统层 HID 连接

外设调用 GAP 断开连接:

esp_ble_gap_disconnect(remote_bda);

这将在 iOS/Android 上断开 BLE HID 连接,但不影响 GATT。


2. GATT 服务:App 与设备通讯控制接口

定义如下 GATT Characteristic:

Characteristic 类型 用途
auth_control write 认证/开锁指令
hid_toggle write 打开/关闭 HID 标志(写入后重启)
dfu_request write 切换至 DFU 模式请求

3. OTA 升级切换(DFU 模式)

接收到 dfu_request 后,立即:

存储 DFU 标志到 Flash

调用断电/重启接口

启动时判断 DFU 标志,跳转到 OTA bootloader

ESP32 示例:

write_flag(DFU_MODE);
esp_restart();  // 重启

nRF 示例:

sd_power_gpregret_set(BOOTLOADER_DFU_START);
NVIC_SystemReset();

四、App 交互逻辑建议

场景 App 操作
靠近自动连接(HID) App 被唤醒(只有Android可以主动唤醒,iOS不支持)
App 打开后 主动扫描连接 GATT 服务
用户关闭 HID 功能 写入 GATT:disable_hid=true,设备断开 HID
用户升级固件 写入 GATT:enter_dfu=true,设备重启 DFU 模式

五、注意事项

事项 说明
系统限制 App 无法主动断开 BLE HID,需设备端主动断开
广播策略 启用 HID 时广播 HID UUID;进入 DFU 模式时改为 DFU UUID
隐私性设计 HID 开启可作为靠近识别,GATT 控制实际安全事务(如开锁)
多手机互斥连接 可通过广播中绑定 App ID 或认证后 GATT 通信维持唯一连接

六、设备端建议架构

main.c
├── ble_init()
│   ├── check_hid_flag()
│   ├── add_hid_service()   // 动态加载
│   ├── add_gatt_services()
├── gatt_event_handler()
│   ├── on_hid_toggle()
│   ├── on_dfu_request()
│   ├── on_auth()
├── dfu.c / bootloader.c
    ├── enter_dfu_mode()
    ├── reset_to_ota_bootloader()

七、总结方案结构图

┌─────靠近连接─────┐
│  [HID广播+配对]  │
└────────┬────────┘
         ↓(打开 App)
     [App连接GATT]
         ↓(切换)
   ┌────App关闭HID────┐
   │  写入hid_flag关闭 │
   └────────┬─────────┘
            ↓(断开HID)
        只保留GATT通信
            ↓
        App请求DFU升级
            ↓
         DFU模式广播
            ↓
         OTA完成→重启
            ↓
          GATT复位

扩展阅读:

蓝牙HID:无线人机交互的通用标准 蓝牙HID:无线人机交互的通用标准
蓝牙 HID:常见应用和创新应用 蓝牙 HID:常见应用和创新应用
BLE HID 开发中的常见挑战和解决方案(键盘、鼠标、遥控器) BLE HID 开发中的常见挑战和解决方案(键盘、鼠标、遥控器)
BLE HID 低功耗设计:功耗分析、影响因素与优化策略 BLE HID 低功耗设计:功耗分析、影响因素与优化策略
Apple 耳机 (AirPods) 如何利用 BLE HID 进行输入 Apple 耳机 (AirPods) 如何利用 BLE HID 进行输入
BLE + Classic 在睡眠耳机中的应用:模式策略与切换逻辑详解 BLE + Classic 在睡眠耳机中的应用:模式策略与切换逻辑详解
双模蓝牙高效设计:BLE + Classic 在智能穿戴等设备中的实现 双模蓝牙高效设计:BLE + Classic 在智能穿戴等设备中的实现
BLE HID 外设与手机App:深入解析连接与断开机制 BLE HID 外设与手机App:深入解析连接与断开机制
iOS 和Android 对BLE HID 开发的支持与限制:键盘、鼠标、遥控器等设备指南 iOS 和Android 对BLE HID 开发的支持与限制:键盘、鼠标、遥控器等设备指南
Android 自研App 主动断开蓝牙连接的限制与策略:BLE 和Classic 设备指南 Android 自研App 主动断开蓝牙连接的限制与策略:BLE 和Classic 设备指南
Android 系统签名权限:系统级应用的专属高权限机制 Android 系统签名权限:系统级应用的专属高权限机制
BLE HID 属性实现近距离蓝牙挂锁快速配对与自动解锁 BLE HID 属性实现近距离蓝牙挂锁快速配对与自动解锁
BLE 设备三态工作机制:HID 自动连接、GATT 通信与DFU 固件升级 BLE 设备三态工作机制:HID 自动连接、GATT 通信与DFU 固件升级
从 App 跳转系统蓝牙设置页面:Android 与 iOS 平台实现差异及优化策略 从 App 跳转系统蓝牙设置页面:Android 与 iOS 平台实现差异及优化策略
© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容