type
Post
date
Nov 19, 2025
slug
RaspberryPi-ZERO/bluetooth
summary
RaspberryPi ZERO 2W 接入蓝牙音响
status
Published
tags
树莓派
category
技术茶点
icon
password
因为 RaspberryPi Zero 2 W 上只有一个 USB 口,难免会需要用到蓝牙模块,测试下连接蓝牙语音音响,也方便后续迭代 AI 语音聊天的功能。

1.简单记录

  • SSH 连接后通过命令行交互,开启设备蓝牙模式后扫描,记录MAC地址并配对

    2.Wi-Fi / Bluetooth “协同存在机制(Coexistence)”

    Coexistence = 在同一 2.4GHz 天线、同一个 RF 模块上,通过硬件信号与软件协议协商,避免 Wi-Fi 与 Bluetooth 同时发射造成干扰的机制。
    Wi-Fi 与 Bluetooth 都占用 2.4GHz ISM 频段
    • Wi-Fi 2.4GHz:20MHz 通道宽度,持续占用
    • Bluetooth:79 个 1MHz 的跳频频点(AFH)
    如果没有 Coexistence:
    • 蓝牙鼠标会疯狂卡顿
    • 蓝牙音频破音严重
    • Wi-Fi 速度骤降
    • 两者互相干扰互相屏蔽
    因此共存机制是手机、树莓派、笔记本无线芯片的标配核心技术。

    2.1.物理信号线级 Coexistence(3-Wire/2-Wire)——硬件层面

    大多数 Broadcom/Cypress 芯片使用 2-wire 或 3-wire 协同协议
    三个关键信号:
    名称
    意义
    BT_ACTIVE
    蓝牙正在发送/接收
    WLAN_ACTIVE
    Wi-Fi 正在发送/接收
    BT_PRIORITY
    蓝牙需要优先权
    这些信号由蓝牙和 Wi-Fi MAC 层互相通知,可以实现:

    🔸 当蓝牙需要发送(例如音频),它会拉起 BT_ACTIVE

    → Wi-Fi 停止发射,避免打断蓝牙的短包。

    🔸 Wi-Fi 需要高吞吐(例如下载)时

    → 会降低 BT_PRIORITY
    → 蓝牙通过 “跳频避让” 来减少冲突。
    这是最底层的硬件互斥机制。

    2.2.MAC 层调度(Medium Access Control)——链路级

    Wi-Fi 是基于 CSMA/CA 的随机退避机制
    Bluetooth Classic 是基于 625µs 时隙的 TDMA
    BLE 是基于 Advertising + Connection Interval 的时序框架
    共存机制会协调:
    • 调整 BT 的跳频图(AFH)
    • Wi-Fi 载波侦听时间缩短
    • Wi-Fi 抢占时间窗口让给蓝牙
    实例:
    蓝牙音频 44.1kHz,需要每 3~6 ms 向耳机发一个音频包。
    如果 Wi-Fi 正在传大包(1500 bytes),一旦长时间占用,会导致蓝牙延迟超时 → 卡顿、破音。
    MAC 层共存调度会:
    • 分片 Wi-Fi 包(短包)
    • 降低 Wi-Fi 速率(减少占用时间)
    • 优先让蓝牙插入事件

    2.3.协议栈层的“软协调(Soft Coexistence)”——软件层

    这是在 Linux/Android/树莓派中很关键的一层。
    wifi/ble 协存在 firmware 与 kernel 中的调度逻辑包括:
    1. 动态调整 Wi-Fi 发包间隔
    1. 识别蓝牙应用类型:
        • 鼠标键盘 → 低延迟优先
        • 耳机 → 中高带宽 + 稳定时序
    1. 调整蓝牙 Connection Interval
    1. 调整 BLE 广播频率
    1. 动态降低 Wi-Fi MCS 速率(比如从 MCS7 → MCS3)
    1. 让蓝牙音频有更高优先权(SCO/eSCO)

    2.4.Adaptive Frequency Hopping (AFH) 自适应跳频

    蓝牙会扫描当前 Wi-Fi 使用的信道(比如 Wi-Fi 在 channel 1 或 6)
    → 把 Wi-Fi 正在使用的频谱“划掉”,避免跳到该频点。

    例如:

    Wi-Fi 在 channel 1(2.412GHz)
    AFH 会禁用频点 0–20 的蓝牙跳频信道。
    这显著降低冲突。

    2.5.PTA(Packet Traffic Arbitration)数据包仲裁器

    PTA 协议决定:哪个协议优先发包
    优先级示例(典型手机/树莓派配置):
    1. 蓝牙语音(SCO/eSCO)
    1. 蓝牙鼠标键盘(低延迟)
    1. BLE 数据包(小包)
    1. Wi-Fi 低速业务(ping)
    1. Wi-Fi 高速业务(下载、TCP 大流量)
    PTA 会实时分析:
    • 数据包类型
    • 包大小
    • 重传情况
    • 信道繁忙度
    然后动态决定:
    → 下一毫秒是蓝牙发,还是 Wi-Fi 发。

    2.6.时间片调度(Timeslot Scheduling)

    Wi-Fi 和 BT 在同一根天线上不能同时发射,只能轮流。
    芯片内部会按微秒级调度:
    蓝牙时隙是 625µs
    Wi-Fi 时隙不固定,但可被压缩
    共存机制会根据天线共享情况优化时隙分配。
     
    「捕风捉影」Raspberry Pi ZERO 2W 装机启动
    Loading...