广播类型与模式:可连接广播、可扫描广播、不可连接广播、定向广播、广播间隔与占空比

BLE 广播,说白了就是设备在「喊话」。但喊话的方式有好几种——有的想让别人连进来,有的只想让别人看看数据,有的干脆就是「一次性通知」。你想想看,如果所有设备都用同一种方式广播,那信道早就挤爆了。

这一节,我把 BLE 广播的几种类型和模式拆开讲。每种模式我都踩过坑,咱们一个一个来。

广播类型的核心分类

BLE 规范定义了四种广播类型。它们的区别,主要在于「能不能被扫描」和「能不能被连接」。

广播类型 可被扫描 可被连接 典型场景
可连接广播 ✅ ✅ 传感器、外设等待主机连接
可扫描广播 ✅ ❌ 信标、数据采集但不建立连接
不可连接广播 ❌ ❌ 广播通知、单向数据推送
定向广播 ❌ ✅(仅对指定设备) 快速重连、低延迟配对

关键点:「可扫描」和「可连接」是正交属性。一个广播包可以同时被扫描和连接,也可以只被扫描不连接,或者干脆两者都关掉。

可连接广播(Connectable Advertising)

这是最常见的广播模式。设备发出广播包,告诉周围:「我在这里,快来连我。」

我在项目中遇到过一个问题:某个心率传感器一直发可连接广播,但手机就是扫不到。后来发现是广播间隔设得太短,导致射频模块过热,自动降频了。嗯,这里要注意——广播间隔不是越短越好。

可连接广播的典型流程:

  1. 外设发送广播包(包含设备地址、名称、服务 UUID)
  2. 主机(手机/网关)扫描到广播包
  3. 主机发送连接请求(CONNECT_REQ)
  4. 双方进入连接状态,后续走连接通信

个人习惯:做产品原型时,我一般先用可连接广播调试。等逻辑稳定了,再根据需求切换成其他类型。这样排查问题方便。

可扫描广播(Scannable Advertising)

这种广播允许别人扫描,但不允许连接。说白了就是:「你可以看我的数据,但别想连进来。」

可扫描广播通常配合 Scan Response(扫描响应) 使用。设备在广播包中放少量关键信息,如果主机发起扫描请求,设备再回复更详细的数据。

举个例子:

  • 广播包:设备名称 + 服务 UUID(31 字节以内)
  • 扫描响应:制造商自定义数据 + 完整设备信息(额外 31 字节)

我曾经用可扫描广播做室内定位信标。广播包只放 UUID 和电量,扫描响应里放坐标和楼层信息。这样普通扫描器只能看到 UUID,只有主动扫描的设备才能拿到完整数据——既省电又安全。

注意:可扫描广播不能同时是可连接广播。如果你需要两者兼得,请使用可连接广播(它本身就支持扫描响应)。

不可连接广播(Non-connectable Advertising)

这种模式最简单——只发不收。设备只管往外扔数据,不理会任何扫描请求或连接请求。

典型场景:

  • 苹果 iBeacon、Google Eddystone 等信标协议
  • 环境传感器周期性上报温度、湿度
  • 设备状态广播(如「门已开」「报警触发」)

不可连接广播的优点是功耗极低。因为设备不需要监听扫描请求,也不用等待连接,发完就睡。我记得有个项目做温湿度标签,用不可连接广播,一粒 CR2032 电池撑了两年多。

但缺点也很明显:数据是单向的,主机无法确认设备是否收到。说白了就是「发完即忘」。

定向广播(Directed Advertising)

定向广播是「点对点」的。设备只对某个特定设备广播,其他设备即使收到也会忽略。

这种模式主要用于快速重连。比如你的蓝牙耳机已经配对过手机,下次开机时,耳机直接发定向广播给手机:「我在这里,快来连我。」

定向广播有两种子类型:

  • 低占空比定向广播:间隔较长,省电,适合后台扫描
  • 高占空比定向广播:间隔极短(通常 3.75ms),快速建立连接,但功耗高

避坑指南:我曾经在耳机项目里用高占空比定向广播做重连,结果发现手机在锁屏状态下扫描窗口不够密,经常漏掉广播包。后来我加了一个「先发几次高占空比,没回应就切回可连接广播」的策略——问题解决了。

广播间隔与占空比

广播间隔,就是两次广播事件之间的时间。占空比,则是广播事件持续时间与间隔的比值。

这两个参数直接影响功耗和发现速度。

参数 范围 影响
广播间隔 20ms ~ 10.24s 间隔越短,发现越快,功耗越高
广播持续时间 约 0.5ms ~ 4ms(取决于数据量) 数据越多,持续时间越长
占空比 通常 0.1% ~ 5% 占空比越高,功耗越大

举个例子:广播间隔 100ms,每次广播持续 1ms,占空比就是 1%。如果间隔缩短到 20ms,占空比变成 5%,功耗直接翻 5 倍。

我个人习惯这样选:

  • 需要快速发现:间隔 20~50ms,占空比 2%~5%(如耳机配对)
  • 平衡功耗与发现:间隔 100~200ms,占空比 0.5%~1%(如智能家居传感器)
  • 极致省电:间隔 1~10s,占空比 0.01%~0.1%(如信标、标签)

小技巧:广播间隔不是固定值。BLE 规范允许在间隔上叠加 0~10ms 的随机延迟,避免多个设备同时广播造成碰撞。这个随机延迟是自动加的,你不需要手动配置。

四种广播类型的对比总结

我把四种广播类型放在一张表里,方便你对照选型:

特性 可连接 可扫描 不可连接 定向
功耗 中 中低 低 高(高占空比)/ 低(低占空比)
发现速度 快 中 中 极快(高占空比)
数据量 31B + 扫描响应 31B 31B + 扫描响应 31B 31B(无扫描响应) 仅设备地址(6B)
典型应用 传感器、外设 信标、数据采集 单向通知 快速重连

广播模式与类型的关系图

下面这张图展示了四种广播类型与扫描、连接的关系:

BLE 广播类型与模式关系图 BLE 广播 可连接广播 可扫描 ✅ 可连接 ✅ 可扫描广播 可扫描 ✅ 可连接 ❌ 不可连接广播 可扫描 ❌ 可连接 ❌ 定向广播 仅对指定设备 广播间隔与占空比 广播间隔:20ms ~ 10.24s,决定发现速度和功耗 占空比 = 广播持续时间 / 广播间隔,通常 0.1% ~ 5% 间隔越短 → 发现越快 → 功耗越高;间隔越长 → 发现越慢 → 功耗越低 传感器 / 外设 可连接广播 信标 / 数据采集 可扫描广播 单向通知 不可连接广播 快速重连 定向广播

实际项目中的选型建议

说了这么多,到底怎么选?我根据经验给你几个参考:

  • 做可穿戴设备:用可连接广播,间隔 50~100ms。既要能被手机发现,又要省电。
  • 做信标:用不可连接广播,间隔 500ms~1s。不需要连接,只发数据就行。
  • 做数据采集网关:用可扫描广播。网关扫描设备,设备回复扫描响应,不建立连接,省资源。
  • 做耳机/音箱重连:先用高占空比定向广播(3.75ms 间隔)尝试快速重连,失败后切回可连接广播。

重要提醒:广播类型和间隔的选择,必须在产品设计阶段就定下来。我见过一个项目,开发时用可连接广播,量产前想改成不可连接——结果发现协议栈配置、功耗模型、测试用例全都要改,差点延期。所以,一开始就想清楚。

好了,广播类型和模式就讲到这里。记住一句话:广播不是「越强越好」,而是「刚刚好」。选对类型,配好间隔,你的 BLE 产品才能既省电又稳定。