ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

基于 ESP32 的 BLE Mesh 有向转发实战:多跳路由、节点密度与信道占用优化

基于 ESP32 的 BLE Mesh 有向转发实战:多跳路由、节点密度与信道占用优化

基于 ESP32 的 BLE Mesh 有向转发实战:多跳路由、节点密度与信道占用优化

文章目录

    • 基于 ESP32 的 BLE Mesh 有向转发实战:多跳路由、节点密度与信道占用优化
    • 一、二十个节点之后,Mesh 开始不听话了
    • 二、系统总体架构
    • 三、硬件选型与接线
      • 3.1 器件选型表
      • 3.2 接线总览
      • 3.3 引脚与接口接线表
      • 3.4 安装位置与信道规划
    • 四、软件流程设计
      • 4.1 转发判定:DF 与托管泛洪的差异
      • 4.2 路由表结构与老化策略
      • 4.3 路由建立与收敛流程
      • 4.4 低功耗节点与 Friend 特性
    • 五、完整代码实现
      • 5.1 工程结构
      • 5.2 数据结构
      • 5.3 路由表管理与老化
      • 5.4 转发判定核心逻辑
      • 5.5 路由请求与应答
      • 5.6 Friend 节点配置
      • 5.7 主循环与周期任务
    • 六、关键参数与容量规划
    • 七、部署与联调步骤
    • 八、常见问题排查
    • 九、总结与扩展

一、二十个节点之后,Mesh 开始不听话了

上一篇文章《基于 ESP32 的 BLE Mesh 组网智能家居实战》讲的是怎么把一个三室两厅的网络搭起来,当时那套方案跑得很顺,直到第二年客户又找上门。

这次是个叠拼别墅,三层,带一个下沉庭院和两个采光很差的卫生间。业主在智能家居上砸了不少钱:全屋 46 个灯控节点、12 个开关面板、8 个温湿度传感器、4 个窗帘电机,加上 6 个中继。设备装完那天一切正常。

问题出现在第三周。

最典型的现象是"三楼卧室的灯偶尔不响应"。不是不亮,是延迟——从按下开关到灯亮,有时候要 3 秒以上,有时候按了根本没反应,得再按一次。我们最初怀疑是干扰,查了 Wi-Fi 频段、查了供电稳定性、查了节点信号强度,都没问题。

真正的原因是在一次夜里的排查中浮出来的。那天我们把中继节点逐个断电测试,发现了一个让人后背发凉的事实:只要 6 个中继节点里有 4 个在同一个区域上线,这个区域内的节点互相通信就开始丢包。

原因不难理解,但接受起来很难。BLE Mesh 默认用的是托管泛洪(managed flooding):一条报文发出来,范围内所有中继节点都会检查"这条消息我见过吗",没见过就转发一遍。于是每发一条消息,网络里就要有 N-1 次重传。

我们的网络当时是这样的:

区域节点数说明
一楼客厅
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进