初步完成 BLE 广播部分

This commit is contained in:
2024-05-11 13:42:05 +08:00
parent e1fcde04a4
commit e85f9d1968
2 changed files with 37 additions and 3 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

View File

@@ -669,15 +669,49 @@ image::doc_attachments/2024-05-09T04-59-40-361Z.png[IIC 读写示意]
=== 基于 MEMS 和 CNN 的振动筛故障检测设备蓝牙设备程序开发
本设计中采用南京沁恒 (WCH) 公司的 RISC-V 内核的集成蓝牙主控 CH582F 进行开发。该主控开发环境主要为 MounRiver Studio基于 risc-v-gcc 和 openocd 工具链实现代码编译、调试和下载。
不同于运行一般任务的单片机,因为蓝牙可能会和多个设备连接或者同时运行多个任务,为了解决多任务的调度问题,需要实现基于单片机的实时操作系统或者任务调度程序,能够以类似分时的方式实现多任务的伪并行。在沁恒的蓝牙开发组件 (BLE SDK) 中,提供了操作系统抽象层 TMOS。TMOS 是调度的核心BLE 协议栈、profile 定义和所有应用都围绕它实现。不同于传统的操作系统它是一个允许软件建立和执行事件的循环。TMOS 是通过时间片轮询的方式实现多任务调度运行,系统时钟来源于芯片实时时钟 (RTC)。用户通过注册任务Task将自定义的事件Event添加到 TMOS 的任务链表中,由 TMOS 进行调度运行。Event 事件标志位,为 1 则运行,为 0 则不运行。
在开发过程中,所有的任务都将注册到 TMOS 调度框架中。
==== BLE 广播模式程序设计
==== BLE MESH 模式程序设计 (optional)
本设计中采用 BLE 广播模式进行无线状态下的数据传输。功能上要求当蓝牙主控采集到数据处理主控所反馈的被测设备状态信息后,使用 BLE 广播模式直接将相关的状态信息包含在广播包中。这一设计主要服务对象为人员巡检场景。由于蓝牙单点广播的范围较小,所以需要接收端存在于设备附近进行接受,而每个蓝牙设备的 MAC 地址不同,实际应用中,可以通过接收端设备记录搜索到的广播设备地址,实现数据收集和巡检打卡的功能。
== 基于 MEMS 和 CNN 的振动筛故障检测设备有效性验证(及工程集成应用)
===== 广播包 PDU 内容设计
广播包 PDU 数据是广播模式的核心部分,在仅广播不建立连接的情况下,所有的数据只通过 PDU 负载段 (Payload) 向外传送。本设计中设备处于广播状态,且作为不可连接的信标模式 (Beacon)。该模式主要有 URI Beacons、iBeacons 和 AltBeacons 三种类型,本设计中使用类似 iBeacons 的格式进行 PDU 负载段内容的设计。自定义的数据包格式如下图所示。
image::doc_attachments/2024-05-11T05-02-31-706Z.png[广播数据段设计]
其中:
* Adv Flags 将广播数据包定义为 BLE 处于普通可发现模式和不兼容经典蓝牙。
* 设备名称为 `{B,L,E,V,A,R}` 作为显示名称
* 厂家 ID 作为设备版本表示,暂时保留 0xEFFF
* UUID 作为设备标志,根据设备 MAC 地址进行散列映射,基本保证不出现重复
* 状态信息作为数据处理主控识别结果的表示,最大可表示 65535 种状态类型
* 温湿度数据从数据处理主控采集,因为其最大可测量到小数点后两位,所以均放大 100 倍,一般使用 16 位整型广播
==== 程序框架设计
程序主要分为三个任务,由 TMOS 进行任务调度。
===== 数据采集任务
该任务定时触发,主要内容是从数据处理主控获取数据。使用前述“设备间数据交换协议”,分批次从数据处理主控读取状态识别结果以及温湿度数据。
===== 广播数据包任务
该任务定时或数据采集任务完成后触发。当产生数据采集任务相关事件产生后,先关闭广播,然后更新需要广播的数据包,再重启广播。定时触发时不关闭广播。
===== 射频校准任务
该任务定时触发,用于定周期校准射频部分,保证蓝牙稳定工作。
== 基于 MEMS 和 CNN 的振动筛故障检测设备有效性验证
=== 验证场景
=== 基于 MEMS 和 CNN 的振动筛故障检测设备工况识别准确性验证
=== 准确性验证
== 总结与展望