6.6 KiB
6.6 KiB
BLE+MCU架构开发流程
1. 系统架构说明
功能说明
设备采用 BLE + MCU 双芯片架构:
-
MCU:
-
负责产品业务控制;
-
传感器采集;
-
外设控制;
-
产品逻辑处理。
-
-
BLE 模组:
-
负责 BLE 通信;
-
APP连接;
-
网关接入;
-
云端通信;
-
OTA升级;
-
数据透传。
-
整体通信链路:
APP
|
BLE
|
MCU
|
设备功能
云端通信:
设备
|
BLE----------
| |
网关 APP
| |
服务器-------
2. BLE启动流程
2.1 BLE上电初始化
功能说明
BLE 模组上电完成初始化后,主动向 MCU 获取设备身份信息。
BLE → MCU
请求获取设备信息:
| 字段 | 内容 |
|---|---|
| 命令 | 0x01 |
| 请求类型 | 获取设备身份信息 |
MCU → BLE
返回设备身份信息:
| 字段 | 内容 |
|---|---|
| 产品类别 | Product Type |
| 产品型号 | Product Model |
| 设备SN | Device SN(可选) |
BLE收到信息后:
-
保存产品类别;
-
保存产品型号;
-
生成BLE广播数据。
广播内容:
Product Type
+
Product Model
+
设备标识
注意:
BLE上电后默认不启动配网广播。
只有收到 MCU 配网指令后才进入配网状态。
3. 配网流程
3.1 用户触发配网
功能说明
用户长按设备按键进入配网。
流程:
用户操作
↓
MCU检测按键
↓
MCU发送配网指令
↓
BLE开启配网广播
↓
网关连接
↓
完成配网
3.2 MCU通知BLE进入配网
MCU → BLE
| 字段 | 内容 |
|---|---|
| 命令 | 0x10 |
| 参数 | 配网模式+配网超时时间 |
BLE收到后:
-
清除旧连接状态;
-
开启BLE广播;
-
等待APP或网关连接。
4. BLE联网成功流程
4.1 获取MCU版本信息
功能说明
BLE完成联网后,获取MCU版本信息并上传服务器。
流程:
BLE联网成功
↓
BLE请求MCU版本
↓
MCU返回版本
↓
BLE组合自身版本信息
↓
上传服务器
版本信息:
| 类型 | 示例 |
|---|---|
| BLE版本 | V1.0.0 |
| MCU固件版本 | V1.0.0 |
| 硬件版本 | V1.0.0 |
说明:
服务器出厂时已保存设备版本,因此该上报主要用于版本同步和调试。
5. BLE状态同步机制
功能说明
BLE实时同步当前通信状态给 MCU。
BLE → MCU
状态字段:
| 状态 | 描述 |
|---|---|
| Bit0 | 已完成配网 |
| Bit1 | 已连接互联网(云) |
| Bit2 | APP 在线 |
| Bit3 | 手机已连接 BLE |
| Bit4 | OTA 升级中 |
| Bit5 | 配网模式中 |
| Bit6~Bit7 | Reserved |
例如:
设备断电重新启动:
BLE启动
↓
检测保存的配网信息
↓
发送回连广播
↓
成功连接网关
↓
BLE通知MCU:设备已完成配网
6. BLE与MCU心跳机制
6.1 心跳检测
功能说明
检测 BLE 与 MCU UART通信是否正常。
规则:
-
BLE超过55秒没有收到 MCU 数据;
-
BLE主动发送心跳。
BLE → MCU
心跳请求
| 字段 | 内容 |
|---|---|
| 命令 | 0x12 |
| 序号 | Seq |
MCU → BLE
心跳回复
| 字段 | 内容 |
|---|---|
| 命令 | 0x13 |
| 状态 | 执行结果 |
6.2 心跳异常
判断:
发送心跳
↓
等待回复
↓
失败
↓
次数+1
↓
连续3次失败
进入异常状态。
7. MCU通信异常报警
7.1 BLE内部异常记录
BLE保存:
| 参数 | 说明 |
|---|---|
| 异常类型 | MCU通信异常 |
| 时间 | 时间戳 |
7.2 报警上报协议
BLE → Server
| 序号 | 字段名称 | 字节长度 | 内容说明 |
|---|---|---|---|
| 1 | 包头 | 2 | 固定 0x55AA |
| 2 | 包长度 | 2 | len(命令...校验和) |
| 3 | 命令 | 1 | 0x12 |
| 4 | 序列号 | 1 | 数据包序列号 |
| 5 | Error Code | 1 | 错误码 |
| 6 | 校验和 | 1 | 和校验(包长度...校验和前一个字节) |
错误码定义:
| 错误码 | 描述 |
|---|---|
| 0x01 | MCU通信超时 |
| 0x02~0xFF | 预留 |
离线处理
如果:
BLE未联网
则:
BLE保存报警记录
↓
等待BLE重新联网
↓
主动补报服务器
8. APP通信流程
功能说明
设备完成配网后:
BLE作为透明传输通道。
APP
↓
BLE
↓
MCU
------------
MCU
↓
BLE
↓
APP
BLE不解析业务数据。
9. 摄像功能控制
9.1 MCU控制录像/拍照
流程:
MCU
↓
BLE
↓
迈科网关协议
↓
网关
↓
摄像头执行
BLE收到MCU命令:
-
开启录像;
-
停止录像;
-
拍照。
按照迈科协议转换发送。
10. 音频播放功能
功能说明
MCU通知BLE播放指定Flash音频。
流程:
MCU发送音频编号
↓
BLE查询Flash
↓
播放对应音频
例如:
音频ID:
001 开机声音
002 报警声音
003 完成声音
11. OTA升级流程
11.1 OTA类型
OTA分为:
| 类型 | 说明 |
|---|---|
| MCU OTA | MCU固件升级 |
| BLE OTA | BLE固件升级 |
11.2 MCU OTA流程
流程:
APP发送OTA请求
↓
BLE判断类型
↓
MCU OTA
↓
转发升级
BLE处理:
删除OTA类型字段:
APP OTA协议
↓
MCU OTA协议
升级数据流程
APP发送数据包
↓
BLE
↓
MCU
MCU应答
↓
BLE转发APP
↓
APP继续发送下一包
升级完成:
MCU:
-
校验MD5;
-
保存固件;
-
重启;
-
切换固件。
成功:
MCU OTA完成通知
↓
BLE + 类型
↓
APP
BLE增加:
OTA类型 = MCU
11.3 BLE OTA流程
流程:
APP
↓
BLE判断OTA类型
↓
BLE自身升级
BLE:
-
回复包长度;
-
接收数据;
-
校验;
-
写入Flash;
-
重启。
完成:
BLE发送:
OTA完成通知
OTA类型 = BLE
12. OTA异常处理
| 异常 | 处理 |
|---|---|
| 数据超时 | 重新请求 |
| MD5失败 | 升级失败 |
| 断电 | 恢复升级 |
| BLE断链 | 保存进度 |
| MCU升级失败 | 上报失败 |
13. BLE直连模式
场景:
网关离线
↓
网关断开BLE
↓
APP扫描设备广播
↓
APP直接连接BLE
↓
控制设备
BLE支持:
-
回连广播;
-
APP直连;
-
数据透传。
14. 总体流程总结
BLE上电
↓
获取MCU身份信息
↓
生成设备广播信息
↓
等待MCU配网指令
↓
开启配网广播
↓
连接网关
↓
获取MCU版本
↓
上传服务器
↓
状态同步MCU
↓
APP数据透传
↓
业务控制
↓
OTA升级
↓
异常监控