这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【蓝牙信道探测开发深度测评与创意应用】BLE6.0蓝牙ChannelSoundi

共1条 1/1 1 跳转至页

【蓝牙信道探测开发深度测评与创意应用】BLE6.0蓝牙ChannelSounding测评

工程师
2026-10-06 18:14:15     打赏

摘要

本文从蓝牙定位和测距需求出发,回顾 BLE 从信号强度估计、Bluetooth 5.1 Direction Finding 到 Bluetooth Core 6.0 Channel Sounding 的技术演变,并比较 RSSI、AoA/AoD、PBR 和 RTT 的测量对象、硬件要求、误差来源、功耗和安全能力。报告以 nRF54LM20 DK 作为 Initiator,以 nRF54L15 Tag 作为 Reflector,结合 Zephyr/NCS、Nordic SoftDevice Controller、RAS 和 cs_de,说明从 BLE 连接、CS 能力交换、测量配置到距离输出的完整链路。

本文按照“标准原理—协议实现—实物测试—数据分析”的顺序展开,分别说明 Bluetooth SIG 定义的能力、Nordic NCS/SoftDevice Controller 的实现方式,以及本工程的实测结论。

0. 本报告的硬件、软件

本报告采用一块 Nordic nRF54LM20 DK 和一块 Nordic nRF54L15 Tag:

设备硬件身份Channel Sounding 角色工程目标
nRF54LM20 DKPCA10184;当前实测为 nRF54LM20B ENG BInitiator / 测距计算端nrf54lm20dk/nrf54lm20b/cpuapp
nRF54L15 TagPCA20072Reflector / 标签端nrf54l15tag/nrf54l15/cpuapp

LM20 DK 负责串口日志、CS 配置、RAS 数据读取和距离估计;L15 Tag 负责广播、连接响应、Reflector 角色、状态指示和后续 IMU/低功耗应用逻辑。Initiator/Reflector 是 CS 逻辑角色,不能直接等同于 Central/Peripheral 连接角色。

1. 为什么蓝牙需要测距

1.1 从连接状态到空间信息

传统 BLE 连接主要回答设备是否能够被发现、连接和通信。测距进一步回答两个设备之间相距多远;定位则在测距基础上增加方向、参考点或地图约束,计算设备在二维或三维空间中的位置。

因此,RSSI、AoA、AoD 和 Channel Sounding 的输出不能直接混为一谈:RSSI 主要反映信号强弱,AoA/AoD 主要反映方向,PBR 和 RTT 才是 Channel Sounding 中用于距离估计的测量方法。

1.2 从信号强弱、方向到精细距离

蓝牙的空间感知能力大致经历了三个阶段:早期利用 RSSI 判断远近;Bluetooth 5.1 引入 AoA/AoD,为定位增加方向信息;Bluetooth Core 6.0 引入 Channel Sounding,通过 PBR 和 RTT 进行精细测距。

RSSI 早于这些新特性存在;AoA/AoD 是方向测量的两种方式;PBR/RTT 是 Channel Sounding 中互补的两种测距方法。它们不是五个依次替代的蓝牙版本。


2. 五种技术的简要对比

技术如何工作得到什么优点主要局限
RSSI:接收信号强度根据接收功率和路径损耗模型估计远近粗略距离或近远等级成本低、兼容性广人体遮挡、姿态和多径会改变强度
AoA:到达角单天线发送,多天线接收;比较接收阵列的相位信号到达方向适合资产标签定位需要接收阵列、校准和角度算法
AoD:出发角多天线发送,单天线接收;利用阵列发出的信号估计方向信号出发方向适合固定信标辅助室内导航需要发射阵列,移动端也需支持相应采样和算法
PBR:相位测距在多个频率上交换信号,根据双向相位随频率的变化估计距离两设备间距离可实现精细测距相位歧义、多径和天线时延会影响结果
RTT:往返时间测距测量信号往返时间,并扣除响应及硬件延迟两设备间距离可与 PBR 交叉校验、辅助安全判断时间分辨率和延迟校准要求高

AoA/AoD 的天线布局和方向能力见 Bluetooth SIG Direction Finding;RSSI 路径损耗、Bluetooth 5.1 方向测量及 Bluetooth 6.0 PBR/RTT 的关系见 Bluetooth Core 6.0 Feature Overview。

3. RSSI:先判断“近还是远”

RSSI 测的是接收信号强度。理想情况下,距离越远,接收功率越低,因此可以用现场标定的模型估计距离。但同一距离下,人体挡住天线或设备转向,也可能让信号明显变弱,所以 RSSI 更适合低成本的接近检测和粗略远近判断。

4. AoA / AoD:再判断“在哪个方向”

Bluetooth 5.1 引入 Direction Finding。它使用 CTE(恒定音调扩展)和 IQ 采样,从天线阵列相关的相位差中估计方向。

AoA(到达角):标签用单天线发送,固定定位器用多天线接收并计算信号从哪个方向来,适合仓库、工厂中的资产定位。

AoD(出发角):固定定位器用多天线发送,移动设备用单天线接收并估计信号的出发方向,适合室内导航。

两种方法主要得到角度。求二维或三维位置还需要已知的参考点、多个方向观测或其他约束;天线阵列、校准和多径处理也会增加成本。本文将它们作为背景介绍,实际工程重点使用 nRF54LM20 DK 和 nRF54L15 Tag 的 Channel Sounding。

接下来重点讲解 Channel Sounding:PBR 通过多频相位变化估计距离,RTT 通过往返时间估计距离。两者可独立或组合使用,具体模式以两端能力和实际配置为准。

5. Bluetooth 6.0 Channel Sounding

5.1 角色和数据通路

Channel Sounding 使用 Initiator 和 Reflector 两个逻辑角色。Initiator 通常负责发起测量配置、收集报告并运行距离估计算法;Reflector 按照控制器安排响应测量交互并提供远端测量数据。两种角色与 Central/Peripheral 连接角色不是同一套概念,应用应分别描述。

本文工程的逻辑数据通路如下:

image.png

RAS 是上层的 Ranging Service,用于让测距应用读取远端测距数据并配置相关参数。它与 Channel Sounding 的射频测量机制要分开解释:Channel Sounding 产生测量数据,RAS 负责标准化地交换或管理测距数据。

在 Reflector 端,应用首先初始化 BLE,然后开始可连接广播。当前 ras_reflector 工程中的核心逻辑可以简化为:

LOG_INF("Starting Channel Sounding Reflector Sample");

err = bt_enable(NULL);
if (err) {
    LOG_ERR("Bluetooth init failed (err %d)", err);
    return 0;
}

err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_2,
                      ad, ARRAY_SIZE(ad), NULL, 0);
if (err) {
    LOG_ERR("Advertising failed to start (err %d)", err);
    return 0;
}

连接建立后,Reflector 允许自己作为 Reflector 工作,并配置远端 Initiator 可使用的过程参数:

const struct bt_le_cs_set_default_settings_param default_settings = {
    .enable_initiator_role = false,
    .enable_reflector_role = true,
    .cs_sync_antenna_selection =
        BT_LE_CS_ANTENNA_SELECTION_OPT_REPETITIVE,
    .max_tx_power = BT_HCI_OP_LE_CS_MAX_MAX_TX_POWER,
};

err = bt_le_cs_set_default_settings(connection, &default_settings);

这段代码对应图中的“应用层 → Bluetooth Host → Controller”路径。应用负责角色和参数配置,精确的 CS 射频时序由 Nordic SoftDevice Controller 执行。

5.2 PBR:Phase-Based Ranging

PBR 利用无线信号相位随频率变化的关系估计传播距离。单一频率的相位具有周期性,同一个相位可能对应多个距离,因此需要跨多个频率采样。

image.png

Bluetooth SIG 的技术概览指出,Channel Sounding 使用 1 MHz 的频率间隔设计来推迟距离歧义的出现;实际工程仍应使用 RTT 和多频点处理降低歧义及异常结果的影响。

PBR 的主要问题是相位噪声、多径、天线群时延、频率偏差、姿态变化和信道质量。它通常需要多信道数据和后端算法,单个相位值不能直接当作距离。

在 Initiator 端,PBR 数据不是直接从一个变量读出,而是先把本地和远端 Step 数据解析成 cs_de_report_t,再交给 cs_de_calc():

memset(&m_cs_de_report, 0, sizeof(m_cs_de_report));
memset(m_n_iqs, 0, sizeof(m_n_iqs));

bt_ras_rreq_rd_subevent_data_parse(
    &latest_peer_steps,
    &latest_local_steps,
    cs_config.role,
    process_ranging_header,
    NULL,
    process_step_data,
    &m_cs_de_report);

cs_de_quality_t quality = cs_de_calc(&m_cs_de_report);
if (quality == CS_DE_QUALITY_OK) {
    /* 读取 IFFT、Phase Slope 和 RTT 结果并进入应用层滤波 */
    k_sem_give(&sem_distance_estimate_updated);
}

代码讲解:bt_ras_rreq_rd_subevent_data_parse() 负责解析 RAS 测距数据,process_step_data() 负责把每个 Step 的本地和远端信息放入算法报告,cs_de_calc() 再计算质量和距离估计。只有质量满足条件时,结果才进入后续统计和应用状态机。

5.3 RTT:Round-Trip Timing

RTT 通过发送、响应和接收之间的时间关系估计传播时间。理想化关系为:

距离 ≈ 光速 × 往返传播时间 / 2

实际控制器需要扣除或校准两端的处理延迟、发射接收延迟、时钟偏差和频率偏差。Bluetooth Core 6.0 将 RTT 的响应周转时间纳入协议设计,使 Initiator 能够把已知的 Reflector 响应时间用于更可靠的传播时间估计。

RTT 的优点是距离含义直观,并能与 PBR 形成互补;缺点是时间测量和延迟校准要求高,环境中的多径和非视距传播仍可能影响结果。

5.4 CS Step 和 Mode

一轮测量可理解为 Procedure、Event、Subevent 和 Step 的嵌套:image.png

常见 Step Mode 的含义可以这样写入文章:

Mode作用
Mode 0校准频率生成差异,得到 FFO 等补偿信息
Mode 1主要用于 RTT 测量
Mode 2主要用于 PBR 测量
Mode 3在一个 Step 中组合 RTT 与 PBR,是否支持取决于实现和配置

应用层可以配置测量方法、重复次数、信道和部分过程参数。重复次数增加通常能改善统计稳定性,但也会增加射频占用、功耗和测量延迟。

当前 Initiator 工程中,CS 配置由结构体明确给出。例如,下面的配置选择 Initiator、1M 同步 PHY、算法 3b 和指定的 Mode 0 Step 数量:

static void cs_config_get(struct bt_le_cs_create_config_params *params)
{
    memset(params, 0, sizeof(*params));

    params->id = CS_CONFIG_ID;
    params->mode = CS_CONFIG_MODE;
    params->min_main_mode_steps = 2;
    params->max_main_mode_steps = 5;
    params->mode_0_steps = NUM_MODE_0_STEPS;
    params->role = BT_CONN_LE_CS_ROLE_INITIATOR;
    params->rtt_type = BT_CONN_LE_CS_RTT_TYPE_AA_ONLY;
    params->cs_sync_phy = BT_CONN_LE_CS_SYNC_1M_PHY;
    params->channel_selection_type = BT_CONN_LE_CS_CHSEL_TYPE_3B;
    params->ch3c_shape = BT_CONN_LE_CS_CH3C_SHAPE_HAT;
    params->ch3c_jump = 2;
}

这些参数与实际串口日志一并记录。改变 Mode、PHY、Step 数或天线选择后,必须重新进行测试,不能把不同配置下的数据放到同一张曲线中比较。

5.5 安全和质量判断

Channel Sounding 的价值不仅是“距离数字更细”,还在于它把时间、相位、随机化和质量评估纳入同一套测量设计。

  • PBR 与 RTT 可以进行一致性检查;

  • 随机化和探测序列增加伪造测距结果的难度;

  • NADM 等指标可用于识别异常或攻击迹象;

  • 应用层不能只根据一次距离结果执行开锁、报警解除等安全动作;

  • 应结合连接状态、测量质量、连续多次确认、滞回和异常值过滤。

6. 五种技术的对比

项目RSSIAoA/AoDChannel Sounding
主要测量量接收功率天线间相位差/方向多频相位和往返时间
直接输出信号强弱,通常映射成粗略距离角度;结合多节点得到位置两设备间距离估计
标准基础BLE 链路已有能力Bluetooth 5.1 Direction Finding、CTEBluetooth Core 6.0 CS
对端要求普通 BLE 设备即可获得 RSSI需要 CTE,至少一端通常需要天线阵列两端均需支持 CS 控制器和相应角色
硬件成本低阵列、切换、校准成本高需要支持 CS 的新一代 SoC、射频和算法
环境敏感性很高多径和阵列校准敏感仍受多径、姿态和天线影响,但信息维度更多
方向能力没有有本身主要输出距离,方向需另配方案
功耗和延迟通常最低取决于 IQ 采样和阵列取决于信道数、Step 数、重复次数和算法
适合场景近远判断、低成本标签室内定位、导航、资产方向精细测距、数字钥匙、近距离安全和资产追踪
本文角色对照基线理论对比,当前硬件不作为主线nRF54LM20 DK + nRF54L15 Tag 实测主线

7. 本项目的协议栈和运行逻辑

7.1 控制平面与数据平面

image.png

7.2 nRF54L15 + Zephyr/NCS 的软件分层

image.png

7.3 本项目的一次测量流程

image.png

对应的简化应用代码可以写成:

static void report_distance(const cs_de_dist_estimates_t *estimate,
                            cs_de_quality_t quality)
{
    if (quality != CS_DE_QUALITY_OK) {
        LOG_WRN("Ranging result rejected, quality=%d", quality);
        return;
    }

    LOG_INF("distance ifft=%.2f m phase_slope=%.2f m rtt=%.2f m",
            (double)estimate->ifft,
            (double)estimate->phase_slope,
            (double)estimate->rtt);

    handle_ranging_result(estimate->best, quality);
}

代码讲解:日志同时输出三种估计值,便于后续比较 PBR 和 RTT;应用状态机只使用经过质量判断和滤波的结果。工程中如果 best 的选择策略发生变化,也应在文章中说明。

8. 实测结果与分析

8.1 测试布置

本次测试使用 nRF54LM20 DK 作为 Initiator,nRF54L15 Tag 作为 Reflector。两块板按照约 0.90 m 的参考距离布置,Tag 的状态指示灯正常点亮,LM20 DK 连接串口输出测距结果。测试使用天线路径 0,连续记录 15 组 IFFT、Phase Slope 和 RTT 结果。

image.png

图 8-1 nRF54LM20 DK 与 nRF54L15 Tag 的实物测试布置。

image.png

图 8-2 Channel Sounding 串口输出的 IFFT、Phase Slope 和 RTT 测距结果。

8.2 原始测量结果

序号IFFT/mPhase Slope/mRTT/m
10.980.963.23
20.980.963.35
30.950.953.43
40.920.932.94
50.910.922.94
60.910.922.72
70.900.883.43
80.900.882.99
90.900.872.99
100.900.872.99
110.900.882.99
120.900.882.99
130.880.882.99
140.820.882.99
150.820.882.99

8.3 统计结果

以实物布置中的约 0.90 m 作为参考距离,计算结果如下:

算法结果平均值/m最小值/m最大值/m标准差/mMAE/mRMSE/m平均偏差/m
IFFT0.9050.820.980.0440.0290.044+0.005
Phase Slope0.9030.870.960.0330.0290.033+0.003
RTT3.0642.723.430.1952.1642.173+2.164

其中:

MAE  = mean(|测量值 - 参考距离|)
RMSE = sqrt(mean((测量值 - 参考距离)^2))
平均偏差 = mean(测量值 - 参考距离)

8.4 结果分析

本次测试中,IFFT 和 Phase Slope 都稳定在 0.90 m 附近。IFFT 平均值为 0.905 m,平均偏差只有 +0.005 m;Phase Slope 平均值为 0.903 m,平均偏差为 +0.003 m。两种 PBR 结果的标准差分别为 4.4 cm 和 3.3 cm,说明在本次约 0.90 m、天线路径 0 的测试条件下,PBR 输出与实际布置距离基本一致。

RTT 结果集中在 2.72–3.43 m,平均值为 3.064 m,明显高于约 0.90 m 的参考距离。当前数据表明,在这组配置和测试条件下,RTT 结果不能直接作为最终距离输出,需要结合控制器时间参数、响应延迟补偿、RTT 类型和测量配置进行校正。PBR 与 RTT 的偏差也说明,应用层不能直接把所有算法结果简单平均,而应根据测量质量和配置选择有效结果。

从串口日志还可以看到,PBR 结果存在从约 0.98 m 逐渐下降到 0.82 m 的变化,但仍处于约 0.90 m 附近。对于基于距离的安全和资产追踪应用,可以使用 PBR 结果作为距离输入,再加入滑动中值滤波、连续确认和远近状态滞回,减少单次跳变造成的误报警。

8.5 本次测试结论

  1. nRF54LM20 DK 与 nRF54L15 Tag 已完成 Channel Sounding 测距数据输出。

  2. 当前测试的 IFFT 和 Phase Slope 结果与约 0.90 m 的实物距离一致性较好。

  3. 当前测试的 RTT 结果存在约 2.16 m 的平均正偏差,不能直接与 PBR 结果混合使用。

  4. cs_de 同时输出 IFFT、Phase Slope 和 RTT,便于应用层进行质量判断和算法选择。

  5. 这组数据适合支撑“Channel Sounding 能够输出精细距离信息,但不同测距方法需要分别校准和评估”的结论。

9. 总结

RSSI 通过接收功率提供低成本的近远判断;AoA 和 AoD 通过 CTE、IQ 采样和天线阵列获得方向信息;Bluetooth 6.0 Channel Sounding 则通过 PBR 和 RTT 为两个 Bluetooth LE 设备提供更直接的距离测量能力。

本项目使用 nRF54LM20 DK 和 nRF54L15 Tag 完成了 Channel Sounding 测试。实测结果显示,PBR 的 IFFT 与 Phase Slope 在约 0.90 m 布置下分别得到 0.905 m 和 0.903 m 的平均值,能够较好反映实际距离;RTT 平均结果为 3.064 m,存在明显正偏差,因此需要在应用中单独校准并结合质量状态使用。

对于基于距离感知的安全和资产追踪应用,推荐使用“PBR 距离估计 + 质量判断 + 滑动滤波 + 连续确认 + 状态滞回”的实现结构。RSSI 可作为低功耗预筛选,Channel Sounding 负责精细距离确认,Tag 的 LED 和 IMU 可进一步承担状态显示和移动检测功能。



共1条 1/1 1 跳转至页

回复

匿名不能发帖!请先 [ 登陆 注册 ]