健身怪兽跑步机蓝牙通讯协议

英文名称: FIT MONSTER Fitness Device BLE Protocol for Treadmill

文档信息
Document Information

项目 / Item 内容 / Content
当前版本 / Current Version V1.0
修订日期 / Revision Date 2024.12.01
修订人 / Editor Sam

修订记录 / Revision History

版本号 / Version 修订日期 / Revision Date 修订人 / Editor 修订内容 / Revision Content
V1.0 2024.12.01 Sam 新建 / New File
UUID介绍(非必要)
1、开发APP时,用以下服务进行数据交互即可:协议一致
类型 UUID 备注
Service 服务 FFF0 广播时支持,连接后可获取
Characteristic 接收 FFF1 支持Notify、Indicate
Characteristic 发送 FFF2 支持Write、WriteWithoutResponse
1. 协议说明
蓝牙通讯协议采用帧进行通讯,每一帧采用了起始头、校验码、终止尾的方式进行数据校验。
1.1 UART配置
1.2 数据帧格式
0x02 CMD SCMD DATA FCS 0x03
起始码 指令 子指令 数据 校验码 终止码
1.3 字段描述
字段 长度 取值 描述
起始码 1Byte 0x02 表征通讯帧开头,固定的1字节数据,为十六进制
指令 1Byte 0x50(示例) 指令标识
子指令 1Byte 0x00(示例) 子指令标识
数据 不定 不定 写入或读取的数据,长度依指令不同而不同。数据采用【小端】对齐方式,即低字节在前,高字节在后。
例:数据0x1234,数据码为0x34 0x12;数据0x12345678,数据码为0x78 0x56 0x34 0x12
校验码 1Byte 不定 帧校验,所有指令码(CMD、SCMD)与数据码(DATA)字节按位异或后的值
终止码 1Byte 0x03 表征通讯帧结束,固定的1字节数据,为十六进制
注:数据采用【小端】对齐方式,即低字节在前、高字节在后。
1.4 数据类型
表示符 类型 长度
B 无符号字节 1Byte
W 无符号整型 2Byte
L 无符号长整型 4Byte
N 无符号多字节 nByte
注:未指定类型数据均为字节型。
1.5 示例说明
若设备收到未在本协议中出现的指令(格式符合标准并验证成功)时,应返回包含当前指令的帧,如下所示:
蓝牙模块下发给设备指令:
START CMD SCMD DATA FCS END
0x02 0x7F 0x00 0x01 0x02 0x7C 0x03
设备返回:
START CMD FCS END
0x02 0x7F 0x7F 0x03
1.6 表格颜色说明
2. 获取设备信息
本协议制定了允许上位机读取设备所支持的信息数据,包括设备的一些参数,如最高速度。若设备不支持指定参数,设备只需返回指令(02 50 xx FCS 03)即可。
2.1 获取设备信息指令(0x50 - 0x00)
蓝牙模块下发指令:
START CMD SCMD FCS END
0x02 0x50 0x00 0x50 0x03
设备返回指令:
START CMD SCMD DATA FCS END
0x02 0x50 0x00 厂商(W) 机型(W) xx 0x03
字段 取值/说明
起始码 0x02
指令 0x50
子指令 0x00
厂商码 16位的无符号数,厂商代码由蓝牙模块供应商分配后固定
机型码 16位的无符号数,需由制造商向蓝牙模块供应商官方申请
FCS 帧校验,所有指令码(CMD、SCMD)与数据码(DATA)字节按位异或后的值
结束码 0x03
2.2 示例说明

厂商码:0x1234(其中高4位为设备类型,示例1为椭圆机)

机型码:0x5678

蓝牙发送:02 50 00 50 03

蓝牙模块下发指令:
START CMD SCMD FCS END
0x02 0x50 0x00 0x50 0x03
设备返回数据:02 50 00 34 12 78 56 xx 03
字节 0 1 2 3 4 5 6 7 8
类型 START CMD SCMD DATA FCS END
0x02 0x50 0x00 34 12 78 56 xx 0x03
设备类型(小端对齐)
设备类型 十进制 十六进制 字节
跑步机 0 0x0 4位
椭圆机 1 0x1 4位
健身车 2 0x2 4位
划船机 3 0x3 4位
若设备无法在上电瞬间回复机型码(超时约5-10s),请发重启命令:02 60 0A 6A 03(注:波特率要对应得上,发送后模块不回复,直接进行重启)
3. 获取设备速度参数
获取设备速度参数指令(0x50 - 0x02)
蓝牙模块下发指令:
START CMD SCMD FCS END
0x02 0x50 0x02 0x52 0x03
设备返回(0x50 - 0x02):[速度上限 <=25 KM/H]
START CMD SCMD DATA FCS END
0x02 0x50 0x02 最高速度(B) 最低速度(B) xx 0x03
参数 单位说明
最高速度 单位:0.1km/h 或0.1mi/h,100代表10.0km/h 或10.0mi/h
最低速度 单位:0.1km/h 或0.1mi/h,100代表10.0km/h 或10.0mi/h
注意:以下内容是为了兼容大于25.5KM/H的设备,若最高速度小于等于25KM/H可忽略
设备返回(0x50 - 0x02):[速度上限> 25KM/H]
1、若需要支持最高速度大于25KM/H,则该协议所有传速度的地方,速度由原本的1个字节(B)改为2个字节(W)。
START CMD SCMD DATA FCS END
0x02 0x50 0x02 最高速度(W) 最低速度(W) xx 0x03
注意:支持最高速度大于25KM/H时,KINOMAP的FITSHOW入口可能异常,如需使用KINOMAP请尽量使用FTMS
4. 获取设备坡度参数
获取设备坡度参数指令(0x50 - 0x03)
CMD SCMD END
0x50 0x03 0x03
设备返回(0x50 - 0x03)
说明
1-0 0:不支持暂停;1:支持暂停
2-1 1:支持心率预警
7-2 预留
9 预留
备注:若为公制设备,则通讯的均为公制数据。若为英制数据,则通讯的均为英制数据。
5. 获取设备状态
获取设备状态指令(0x51)
蓝牙模块下发指令:
START CMD FCS END
0x02 0x51 0x51 0x03
设备返回(0x51):[速度上限<= 25KM/H]
START CMD DATA FCS END
0x02 0x51 状态(B) 数据(N) xx 0x03
状态(B) 数据(N)
(0x00) 待机 NA
(0x02) 倒计时启动 启动倒计时-秒(B)
(0x01) 停机、(0x03) 运行中、(0x04) 减速停止、(0x0A) 暂停 当前速度(B)、当前坡度(B)、当前时间(W)、当前距离(W)、当前热量(W)、当前步数(W)、当前心率(B)、预留(B)
(0x05) 故障 故障码(B)
(0x06) 禁用 禁用码(B):1-安全锁脱落;2-设备睡眠
数据 单位 数据 单位
速度 0.1km/h 或0.1mi/h 热量 0.1 千卡
坡度 1 档 步数
时间 心率 1 次
距离 0.001km 或0.001mile - -
注意:以下内容是为了兼容大于25.5KM/H的设备,若最高速度小于等于25KM/H可忽略
设备返回(0x51):[速度上限> 25KM/H](V3X,1.1.7、2.0.5及以上版本,D2/C1/T4,1.4.0及以上版本支持)
1、若需要支持最高速度大于25KM/H,则该协议所有传速度的地方,速度由原本的1个字节(B)改为2个字节(W)。
START CMD DATA FCS END
0x02 0x51 状态(B) 数据(N) xx 0x03
状态(B) 数据(N)
(0x00) 待机 NA
(0x02) 倒计时启动 启动倒计时-秒(B)
(0x01) 停机、(0x03) 运行中、(0x04) 减速停止、(0x0A) 暂停 当前速度(W)、当前坡度(B)、当前时间(W)、当前距离(W)、当前热量(W)、当前步数(W)、当前心率(B)、预留(B)
(0x05) 故障 故障码(B)
(0x06) 禁用 禁用码(B):1-安全锁脱落;2-设备睡眠
注意:支持最高速度大于25KM/H时,KINOMAP的FITSHOW入口可能异常,如需使用KINOMAP请尽量使用FTMS入口
6. 设备控制
6.1 设备启动/恢复指令
设备启动/恢复指令(0x53 - 0x01):蓝牙模块下发
START CMD SCMD DATA FCS END
0x02 0x53 0x01 预留 xx 0x03
设备返回(0x53 - 0x01)
START CMD SCMD DATA FCS END
0x02 0x53 0x01 倒计时(B) xx 0x03
6.2 设置速度和坡度
设置速度和坡度指令(0x53 - 0x02):[速度上限<= 25KM/H](蓝牙模块下发)
START CMD SCMD DATA FCS END
0x02 0x53 0x02 目标速度(B) 目标坡度(B) xx 0x03
设备返回(0x53 - 0x02):[速度上限<= 25KM/H]
START CMD SCMD DATA FCS END
0x02 0x53 0x02 当前实际速度(B) 当前实际坡度(B) xx 0x03
注意:以下内容是为了兼容大于25.5KM/H的设备,若最高速度小于等于25KM/H可忽略
设置速度和坡度指令(0x53 - 0x02):[速度上限> 25KM/H](蓝牙模块下发)
1、若需要支持最高速度大于25KM/H,则该协议所有传速度的地方,速度由原本的1个字节(B)改为2个字节(W)。
START CMD SCMD DATA FCS END
0x02 0x53 0x02 目标速度(W) 目标坡度(B) xx 0x03
设备返回(0x53 - 0x02):[速度上限> 25KM/H]
START CMD SCMD DATA FCS END
0x02 0x53 0x02 目标速度(W) 目标坡度(B) xx 0x03
注意:支持最高速度大于25KM/H时,KINOMAP的FITSHOW入口可能异常,如需使用KINOMAP请尽量使用FTMS入口
6.3 设备停止指令
设备停止指令(0x53 - 0x03):蓝牙模块下发
START CMD SCMD FCS END
0x02 0x53 0x03 xx 0x03
设备返回(0x53 - 0x03)
START CMD SCMD FCS END
0x02 0x53 0x03 xx 0x03
补充:运行中(3)→减速停止中(4)→已停机(1)→待机(0);暂停(10)→已停机(1)→待机(0)
6.4 设备暂停指令
设备暂停指令(0x53 - 0x0A):蓝牙模块下发
START CMD SCMD FCS END
0x02 0x53 0x0A xx 0x03
设备返回(0x53 - 0x0A)
START CMD SCMD FCS END
0x02 0x53 0x0A xx 0x03
补充:运行中(3)→减速停止中(4)→暂停(10)
7. 设备扩展特征值(非必要)
此功能仅作为设备控制(0x53)的补充项!例如手环数据通过APP下发到设备心率下发、步数下发、卡路里下发。
e.g. 02 53 9f (02 00) 9A FCS 03 此时仅下发心率。
设备扩展特征值指令(0x53 - 0x9f)
START CMD SCMD DATA FCS END
0x02 0x53 0x9f 标志位(W)、数据(N) xx 0x03
参数 格式 大小 取值 解释
Flags 16Bits 2 Octets Bit0 参数包含解锁码
Bit1 参数包含心率
Bit2 参数包含总卡路里
Bit3 参数包含动态卡路里
Bit4 参数包含计步
Bit5-15 保留
UnlockCode Octets 6 0-F的6个数字 厂家自定义,6字节解锁码
Heart Rate Unit8 1 心率值 心率值
Total Energy Unit16 2 总卡路里 总卡路里
Dynamic Energy Unit16 2 动态卡路里 动态卡路里
Step Count Unit16 2 实时步数 实时步数
8. 音频控制(非必要)
音频控制需要下位机“主动”上报!在程序设计上,该功能优先级应该处于低优先级的状态。
8.1 播放、暂停
设备上报播放、暂停指令(0x62 - 0x01)
START CMD SCMD FCS END
0x02 0x62 0x01 xx 0x03
8.2 停止
设备上报停止指令(0x62 - 0x02)
START CMD SCMD FCS END
0x02 0x62 0x02 xx 0x03
8.3 下一首
设备上报下一首指令(0x62 - 0x03)
START CMD SCMD FCS END
0x02 0x62 0x03 xx 0x03
8.4 上一首
设备上报上一首指令(0x62 - 0x04)
START CMD SCMD FCS END
0x02 0x62 0x04 xx 0x03
8.5 音量+
设备上报音量+指令(0x62 - 0x0B)
START CMD SCMD FCS END
0x02 0x62 0x0B xx 0x03
8.6 音量-
设备上报音量-指令(0x62 - 0x0C)
START CMD SCMD FCS END
0x02 0x62 0x0C xx 0x03
9. 连接状态位(非必要)
1、设备主动发送该指令查询蓝牙连接状态(0x44 - 0xC3)(V3X,1.1.3及以上版本,D2/C1/T4,1.3.0及以上版本支持):
START CMD SCMD FCS END
0x02 0x44 0xC3 0x87 0x03
2、BLE发送连接状态(0x44 - 0xC3)(V3X,1.1.2及以上版本,D2/C1/T4,1.3.0及以上版本支持):
START CMD SCMD DATA FCS END
0x02 0x44 0xC3 连接状态(B) xx 0x03
连接状态:0=未连接,1=已连接。设备无需回复。
10. 蓝牙信息查询(非必要)
1、设备主动发送该指令查询蓝牙名称(0x44-0xC5)
支持版本:V3X(1.1.3 及以上版本),D2/C1/T4(1.3.0 及以上版本)
说明:不同固件版本支持长度不一致,详情参考
设备发送指令格式
START CMD SCMD FCS END
0x02 0x44 0xC5 0x81 0x03
蓝牙模块反馈格式(0x44-0xC5)
START CMD SCMD DATA(N Bytes)(大端) FCS END
0x02 0x44 0xC5 示例:"FS-xxxxxx" XXXX xx 0x03
2、设备主动发送该指令查询蓝牙MAC地址(0x44-0xC6)
支持版本:V3X(1.1.3 及以上版本),D2/C1/T4(1.3.0 及以上版本)
设备发送指令格式
START CMD SCMD FCS END
0x02 0x44 0xC6 0x82 0x03
蓝牙模块反馈格式(0x44-0xC6)
START CMD SCMD DATA(6 Bytes)(大端) FCS END
0x02 0x44 0xC6 XX:XX:XX:XX:XX:XX xx 0x03
3、设备主动修改蓝牙名称(0x44-0xC7)
支持版本:V3X(1.1.3 及以上版本),D2/C1/T4(1.3.0 及以上版本)
说明:不同固件版本支持长度不一致,详情参考
设备发送指令格式
START CMD SCMD DATA(N Bytes)(大端) FCS END
0x02 0x44 0xC7 xx xx 0x03
蓝牙模块反馈格式(0x44-0xC7)
支持回复版本:V3X(1.1.7、2.0.5 及以上版本),D2/C1/T4(1.4.0 及以上版本)
START CMD SCMD DATA FCS END
0x02 0x44 0xC7 确认码(B) xx 0x03
确认码说明:若为0,则修改成功
4、设备主动发送该指令查询音频名称(0x44-0xD1)
支持版本:D2/C1/T4(1.3.7 及以上版本)
说明:不同固件版本支持长度不一致,详情参考
设备发送指令格式
START CMD SCMD FCS END
0x02 0x44 0xD1 0x80 0x03
蓝牙模块反馈格式(0x44-0xD1)
START CMD SCMD DATA(N Bytes)(大端) FCS END
0x02 0x44 0xD1 示例:"FS-xxxxxx"(XXXX) xx 0x03
5、设备主动修改音频名称(0x44-0xC8)
支持版本:V3X(不支持),D2/C1/T4(1.3.4 及以上版本)
说明:不同固件版本支持长度不一致,详情参考
设备发送指令格式
START CMD SCMD DATA(N Bytes)(大端) FCS END
0x02 0x44 0xC8 xx xx 0x03
蓝牙模块反馈格式
START CMD SCMD - FCS END
0x02 0x44 0xC8 - xx 0x03
重要说明:之后必须要发送修改蓝牙名称的指令才会进行保存;如果蓝牙名称不修改,直接发送 02 44 c7 83 03
6、设备主动查询蓝牙型号(0x44-0xC9)
支持版本:V3X(1.1.6 及以上版本、V3X 主从 2.0.3 及以上版本),D2/C1/T4(1.3.4 及以上版本)
设备发送指令格式
START CMD SCMD FCS END
0x02 0x44 0xC9 xx 0x03
蓝牙模块反馈格式
START CMD SCMD DATA(大端) FCS END
0x02 0x44 0xC9 示例:FS-BT-C1(xxx) xx 0x03
说明:查询后蓝牙回复型号,例如 FS-BT-C1
7、设备主动查询蓝牙编号(0x44-0xCA)
支持版本:V3X(1.1.6 及以上版本、V3X 主从 2.0.3 及以上版本),D2/C1/T4(1.3.4 及以上版本)
设备发送指令格式
START CMD SCMD FCS END
0x02 0x44 0xCA xx 0x03
蓝牙模块反馈格式
START CMD SCMD DATA(大端) FCS END
0x02 0x44 0xCA 示例:FS240528001(xxx) xx 0x03
说明:查询后蓝牙回复编号,例如 FS240528001
8、设备主动进行蓝牙音频状态查询(0x44-0xCB)
支持版本:V3X(不支持),仅 C1/T4(1.3.4 及以上版本)
设备发送指令格式
START CMD SCMD FCS END
0x02 0x44 0xCB 0x8F 0x03
蓝牙模块反馈格式
START CMD SCMD DATA(音频连接状态(B)) DATA(播放状态(B)) 预留 预留 FCS END
0x02 0x44 0xCB 0=未连接,1=已连接 0=未播放,1=正在播放 0x00 0x00 xx 0x03
- 音频连接状态:0 表示未连接,1 表示已连接
- 播放状态(B):0 表示未播放,1 表示正在播放
11. LED 屏心率阈值设置(非必要)
1、设备发送的数据(0x46-0x03)
START CMD SCMD DATA FCS END
0x02 0x46 0x03 心率阈值(B) xx 0x03
2、蓝牙模块发送的数据(0x46-0x03)
START CMD SCMD FCS END
0x02 0x46 0x03 xx 0x03
12. 附加功能配置(非必要)
1、设备主动发送该指令配置蓝牙的附加功能(0x44-0xD2)
设备发送指令格式
START CMD(0x44) SCMD(0xD2) DATA1(1 Byte 配置数据) DATA2(5 Bytes 配置数据) DATA3(1 Byte 配置数据) DATA4(1 Byte 配置数据) FCS(0x95) END
0x02 0x44 0xD2 配置数据1 配置数据2 配置数据3 配置数据4 0x95 0x03
配置数据1说明:
支持版本:V3X 型号(V2.0.6 及以上固件版本),F5 型号(V1.0.0 及以上固件版本),其他型号及版本均不支持
说明 说明
0 1:无线心率打开;0:无线心率关闭 4 RFU(保留)
1 RFU(保留) 5 RFU(保留)
2 RFU(保留) 6 RFU(保留)
3 RFU(保留) 7 RFU(保留)
配置数据2说明:
支持版本:F5 型号(V1.0.0 及以上固件版本),C1/T4 型号(V1.4.0 及以上固件版本),其他型号及版本均不支持
说明:设置密码为“0000”时,默认为不需要密码
Byte 说明
Byte 0 1:音频配对需要密码;0:音频配对不需要密码
Byte 1~4 配对密码:例如 1234(只能是 0~9 的数字)
配置数据3说明:预留,按 0 填充
配置数据4说明:预留,按 0 填充
蓝牙模块反馈格式(0x44-0xD2)
START CMD SCMD FCS END
0x02 0x44 0xD2 xx 0x03
重要说明:配置之后蓝牙模块需要重新上电后方可生效
13. 休眠控制(非必要)
1、APP 或设备发送都可以控制蓝牙模块进入休眠模式(0x44-0xC2)
支持版本:串口模式下电控与程控休眠指令 - 仅限 V3X 模块 1.0.5 以后的版本
发送指令格式(APP/设备)
START CMD SCMD FCS END
0x02 0x44 0xC2 0x86 0x03
说明:蓝牙模块接收到该指令后直接进入休眠,不做反馈
14. OTA 模式切换(下控OTA,非蓝牙模块OTA) (非必要)
1、设备主动发送该指令切换OTA模式
支持版本:目前仅 C1/D2/T4 的 1.4.0 版本支持
设备发送指令格式
START CMD SCMD DATA FCS END
0x02 0x44 0xCC 0X01:开启OTA模式;0X00:关闭OTA模式 XX 0x03
蓝牙模块反馈格式
START CMD SCMD FCS END
0x02 0x44 0xCC xx 0x03
重要说明:该功能需要前期与蓝牙模块供应商联调完成后,将需要OTA的固件上传至蓝牙模块供应商后台即可完成,下控部分需要能够支持该方式升级
蓝牙回复该指令后进入透传模式,透传通道信息:
- serverUUID: FFE0
- Notify: FFE4(蓝牙串口接收的部分通过其透传给APP)
- Write: FFE1(接收其数据后通过串口发送给设备)