引言:当「Mesh」不再只是通信,而是商业模式
蓝牙 Mesh 之所以被寄予厚望,不是因为它「能组网」,而是因为它「能赚钱」:
- 智能照明 :单灯控制 → 节能 30%,合同能源管理(EMC)分润
- 楼宇自动化 :传感器密度 ↑,施工布线成本 ↓ 60%
- 工业巡检 :手持网关 → 覆盖 1000 节点,巡检时间从 2 天缩到 4 小时
STM32WBx5 是 STM32 家族里具备「双核 + 射频」的 MCU,Cortex-M4 跑应用,M0+ 跑射频协议栈,官方 Mesh 库已做到 SIG v1.0 认证 ,单节点 BOM < 2 USD ,中继功耗 < 1.2 mA 。

AN5292 是 ST 官方 52 页 Mesh 应用笔记,首次公开:
- 从射频到模型 的 API 映射
- 从配网到量产 的产线脚本
- 从照明模型到楼宇场景 的参考代码
本文把它拆成「4 层 12 步」落地链路,带你一次看懂「蓝牙 Mesh 如何从代码变成现金流」。
1. 协议层:SIG Mesh v1.0 在 STM32WB 上的实现切面
表格复制
| 层级 |
WB 对应文件 |
关键特性 |
占用 |
| Bearer |
hci_tl.c |
PB-ADV / PB-GATT 代理 |
6 kB |
| Network |
network_layer.c |
AES-CCM 128,IVI 更新 |
4 kB |
| Transport |
transport_layer.c |
分片/重组,Friend Queue |
5 kB |
| Access |
access_layer.c |
模型注册,TTL 管理 |
3 kB |
| Models |
mesh_models.* |
通用 OnOff、照明 Lightness |
8 kB |
| Provisioning |
provisioner.c |
ECDH P-256,AES-CMAC |
6 kB |
结论:32 kB 协议栈 → 留给 M0+ 64 kB 绰绰有余,M4 可专心跑业务 。

2. 软件层:双核分工与「0 拷贝」消息流
复制
M0+(射频) M4(应用)
│ │
├─ RF IRQ → 加密 → → IPCC 邮箱 → 用户回调
├─ Friend 低功耗 → → RTC 唤醒 → 单字节指令
└─ Proxy 转发 → → GATT 缓存 → 手机直连
- IPCC 邮箱 = 8 字长 × 32 bit,双缓存无锁
- 静态内存 =
mem_pools[] 编译时分配,无 malloc
- 0 拷贝 =
Vendor_WriteLocalDataCb() 直接操作 const *data 指针,不再 memcpy
实测:128 节点网络,广播风暴 1 k pkt/s ,CPU 占用 18% (72 MHz)
3. 模型层:照明模型→楼宇模型的「增量」路径
表格复制
| 模型 |
状态 |
报文大小 |
场景 |
| Generic OnOff |
1 B |
11 B |
开关、插座 |
| Light Lightness |
2 B |
12 B |
调光灯 |
| Light CTL |
6 B |
16 B |
色温灯 |
| Scene |
8 B |
20 B |
会议室一键场景 |
| Time |
10 B |
22 B |
楼宇日历同步 |
| Scheduler |
12 B |
24 B |
定时排程 |
代码增量:OnOff → CTL = +120 行 ;CTL → Scene = +180 行
产线共线:同一 PCB,不同固件 ,扫码自动下载模型表
4. 配网层:从「灯泡」到「楼宇」的 4 种配网策略
表格复制
| 策略 |
用时 |
距离 |
安全 |
适用场景 |
| PB-ADV 信标 |
8 s |
30 m |
网络密钥 |
仓库批量 |
| PB-GATT 代理 |
5 s |
10 m |
手机 App |
家庭用户 |
| 静态 UUID |
0 s |
— |
预烧录 |
产线预配 |
| Friend 节点 |
15 s |
50 m |
缓存队列 |
电池传感器 |
产线脚本:扫码→静态 UUID→自动入网→自动绑定 Group 0xC000
手机 App:BlueNRG-Mesh 自动识别未配网节点→一键入网
5. 低功耗层:Friend + LPN 的「毫安级」网路线
- Friend 节点 :常开,缓存 16 条消息 ,功耗 1.2 mA @ 0 dBm
- LPN 节点 :每 2 s 轮询 ,平均 90 μA ,CR2032 可用 5 年
- PollTimeout 最小 100 ms → 手机掉线 100 ms 内重连
实测:20 个 LPN 传感器 + 3 个 Friend → 网络整体功耗 < 2 mA
6. 硬件层:P-NUCLEO-WB55 的「最小代价」参考设计
表格复制
| 模块 |
规格 |
BOM 价 |
| MCU |
STM32WB55RGV6 |
1.35 $ |
| 射频 |
集成巴伦 + 50 Ω 匹配 |
0 $ |
| 晶振 |
32 MHz + 32.768 kHz |
0.12 $ |
| 天线 |
2.4 GHz 蛇形倒 F |
0.08 $ |
| 外设 |
3 LED + 3 按键 |
0.15 $ |
| 总计 |
— |
1.70 $ |
结论:< 2 $ 即可跑 SIG Mesh v1.0 ,比外置模块方案便宜 30%
7. 产线层:从「烧录」到「入网」的 30 秒节拍
表格复制
| 工位 |
动作 |
耗时 |
关键脚本 |
| 1. 烧录 |
STM32CubeProgrammer + 预加密固件 |
8 s |
STM32_Programmer_CLI -c port=SWD -d mesh.bin 0x08000000 |
| 2. 校准 |
频偏 & TX Power |
4 s |
aci_hal_set_tx_power_level(4, 7) |
| 3. 预配 |
静态 UUID 写入 |
3 s |
BLEMesh_WriteStaticUUID() |
| 4. 入网 |
批量 Friend 节点上电 |
10 s |
PB-ADV 自动入网 |
| 5. 绑定 |
统一订阅 Group 0xC000 |
3 s |
Config_Model_Subscription_Add() |
| 6. 下机 |
扫码录 MES |
2 s |
JSON 上传 |
结果:单班 8 h 产能 900 只灯 ,一次通过率 99.4% (ST 深圳代工厂)
8. 现场层:Mesh vs Zigbee vs Matter 的「三选一」决策树
表格复制
| 维度 |
BLE Mesh |
Zigbee 3.0 |
Matter over Thread |
| 芯片 |
STM32WB |
CC2652P |
MG24 |
| BOM |
1.7 $ |
2.5 $ |
3.1 $ |
| 手机 |
原生 |
网关 |
原生 |
| 功耗 |
90 μA |
1 mA |
0.8 mA |
| 认证 |
SIG v1.0 |
Zigbee 3.0 |
CSA Matter |
| 结论 |
照明/楼宇 |
家居/插座 |
高端/跨品牌 |
照明场景:BLE Mesh 成本最低,手机直接配网,无需网关
9. 代码级:10 行 API 完成「开关 → 灯」绑定
c复制
// 1. 初始化模型
MOBLE_USER_BLE_CB_MAP userCb = {
.vendorWriteLocalCb = Light_OnOffWrite,
.vendorReadLocalCb = Light_OnOffRead
};
BLEMesh_SetVendorCbMap(&userCb);
// 2. 订阅组地址
MOBLE_ADDRESS group = 0xC000;
BLEMesh_ModelSubscriptionAdd(ELEM_0, GENERIC_ONOFF_SERVER_MODEL_ID, &group, 1);
// 3. 发布按钮事件
MOBLE_ADDRESS dst = 0xC000;
BLEMesh_SetRemoteData(dst, VENDOR_OP_TOGGLE, NULL, 0, MOBLE_FALSE);
编译后 48 kB 固件 → 跑在 WB55RG 512 kB Flash 绰绰有余