智能手表蓝牙 GATT 通讯协议文档

以下是一份适用于智能手表的 蓝牙 GATT 通讯协议文档,适用于 BLE 5.0 及以上标准,兼容 iOS / Android 平台:


智能手表蓝牙 GATT 通讯协议文档

文档版本 :V1.0
编写日期 :2025年xx月xx日
产品型号 :Aurora Watch S1
适用芯片:EFR32BG22 / nRF52 / TLSR 系列等


一、协议概述

本通讯协议定义了 Aurora Watch S1 与手机 App 之间基于 Bluetooth Low Energy (BLE) 的 GATT 通讯结构,支持基础配置、实时同步、通知推送、健康数据同步等功能。

  • 协议基础:GATT Profile(Generic Attribute Profile)
  • 连接方式:Peripheral 模式(手表) ←→ Central 模式(手机)
  • MTU Size:默认 247 bytes(支持扩展)
  • 安全模式:BLE Secure Connections(支持绑定、加密)

二、GATT Profile 总览

Service 名称 UUID(128-bit) 用途说明
设备信息服务 0x180A 固件版本、厂商信息等
通用通讯服务(主服务) 0000FFF0-0000-1000-8000-00805F9B34FB 所有 App 与手表数据传输
时间同步服务 00001805-0000-1000-8000-00805F9B34FB 时间校准
心率服务 0x180D 实时/历史心率同步
电池服务 0x180F 电池电量读取

三、通用通讯服务定义(UUID: FFF0)

用于 App 与手表之间自定义双向数据传输,使用 Notify + Write Without Response 组合。

3.1 特征定义

特征名称 UUID 属性 最大长度 描述
下行控制 FFF1 Write Without Response 247 bytes App → 手表命令写入
上行通知 FFF2 Notify 247 bytes 手表 → App 数据上报
OTA升级通道 FFF3 Write/Notify 247 bytes 固件升级数据通道

四、协议数据结构

所有 FFF0 服务使用统一协议帧结构,格式如下:

复制代码
| Byte 0   | Byte 1~2 | Byte 3 ~ N       |
|----------|----------|------------------|
| CMD_ID   | Length   | Payload Data     |
  • CMD_ID:1 Byte,命令类型(详见下表)
  • Length:2 Bytes,小端,Payload 长度
  • Payload:具体数据内容,变长

4.1 常用命令定义

CMD_ID 方向 功能说明 Payload 示例
0x01 App→手表 请求设备信息
0x02 手表→App 返回设备信息 {"sn":"S1A001", "ver":"1.0.5"}
0x10 App→手表 设置时间 时间戳 (4 bytes, UNIX格式)
0x11 手表→App 返回时间确认 同步后时间戳
0x20 App→手表 发送通知内容 UTF-8 字符串(如来电、短信)
0x21 手表→App 用户点击操作反馈 {"type":"sms","action":"read"}
0x30 手表→App 上传心率数据 时间戳 + 心率值序列
0x40 App→手表 OTA升级初始化 固件版本+大小校验码等
0x41 App→手表 OTA数据包 固件片段(最大240字节)
0x42 手表→App OTA结果回执 {"result":"success"}

五、连接与绑定流程

  1. App 扫描广播(含设备名称 AuroraS1 + MAC 后缀)
  2. 连接后读取 Device Info(Model/Ver)
  3. App 启动绑定流程(随机绑定码或 BLE pairing)
  4. 加密通道建立后允许所有功能访问

六、注意事项

  • OTA升级阶段需独占 FFF0 服务,不可并发其他命令
  • 所有时间同步应以 UTC 格式传输,避免时区混乱
  • 通讯应基于 ACK 超时重试机制(最多3次)
  • 建议使用 JSON 作为 Payload 格式,便于解析与扩展
  • 特征 Notify 应开启 CCCD 才能收到数据

七、版本控制记录

版本号 日期 修改说明
V1.0 2025-05-10 初版发布,定义基础命令、数据结构

喜欢的盆友点赞加收藏,关注不迷路

相关推荐
Lester_11014 天前
STM32霍尔传感器输入口设置为复用功能输入口时,还能用GPIO函数直接读取IO的状态吗
stm32·单片机·嵌入式硬件·电机控制
LCG元4 天前
低功耗显示方案:STM32L0驱动OLED,动态波形绘制与优化
stm32·嵌入式硬件·信息可视化
三佛科技-187366133974 天前
120W小体积碳化硅电源方案(LP8841SC极简方案12V10A/24V5A输出)
单片机·嵌入式硬件
z20348315204 天前
STM32F103系列单片机定时器介绍(二)
stm32·单片机·嵌入式硬件
Alaso_shuang4 天前
STM32 核心输入、输出模式
stm32·单片机·嵌入式硬件
yuzhuanhei4 天前
YOLO26实操记录(自用)
人工智能·计算机视觉·目标跟踪
脚后跟4 天前
AI助力嵌入式物联网项目全栈开发
嵌入式硬件·物联网·ai编程
2501_918126915 天前
stm32死锁是怎么实现的
stm32·单片机·嵌入式硬件·学习·个人开发
星马梦缘5 天前
驱动层开发——蜂鸣器驱动
stm32·单片机·嵌入式硬件·hal·驱动
小刘爱玩单片机5 天前
【stm32简单外设篇】- 测速传感器模块(光电)
c语言·stm32·单片机·嵌入式硬件