avatar

松果工作室

欢迎光临

  • 首页
  • freeRTOS
  • LVGL
  • ESP
  • 开发手册
  • 快速笔记
  • 个人收藏
  • 时事记录
  • 考察日志
  • 工具
Home BLE mesh
文章

BLE mesh

Posted 2023-11-12 Updated 2023-11- 12
By YCP
13~16 min read

GAP && GATT

  • GAP
    设备发现、连接和身份验证等。
  • GATT
    设备间数据传输和解释。

历史

  • Bluetooth SIG 组织于 2017 年发布蓝牙 Mesh 标准。

BLE Mesh 建立于物理层与链路层之上

  • [2402~2480Mhz;工作模式:Advertising && Connection][1]
    BLE : 广播间隔 = 20ms; 扫描窗口 = 30ms,扫描间隔 = 40ms
    BLE Mesh : 广播间隔 = 随机一小段时间;扫描窗口 = 扫描间隔 = 40ms

发布订阅消息系统

  • 传统 Mesh : 灯需记住开关,开关需记住灯,灵活性差
  • 解决办法 : 引入组,构成发布订阅消息系统;灯换了只需在组那边改订阅者者即可,类似 MQTT

优化泛洪通信

  • 设备缓存关键信息,以确定是否收到过此消息避免二次转发
  • TTL最大转发数

Mesh 节点特性 : 中继(Relay) 代理(Proxy) 好友(Friend) 低功耗(Low Power)

  • 中继 : 通过Mesh广播承载层( Bearer :将 BLE 数据抽象供上层使用;目前定义了广播承载和 GATT 承载,对应 BLE 的 Advertising 和 Connection )接收和转发Mesh消息的能力,以实现更大的网络
  • 代理 : 为了兼容不支持蓝牙Mesh的BLE设备如手机平板等,采用 BLE GATT Bearer 的方式在数据信道和 BLE 设备通信,通过广播转发
  • 好友 && 低功耗 : 使能低功耗特性的设备睡眠时间较长,期间无法接受消息;使能好友特性的设备为其缓存消息。低功耗设备醒来后查询好友消息
  • 一个节点可以使能多个特性,如图中 S 既是中继又是代理

加入 Mesh

  • 配网者认证设备创建网络密钥,使其成为未配置的节点
  • 配网者绑定应用层网络层密钥,设置模型的发布/订阅
  • 成为节点

一个节点包括多个元素(Elements)

  • 每个元素分配一个单播地址(Unicast Address:0x0001~0x7FFF)
  • 元素订阅组播地址(发布订阅消息系统,Group Address:0xC000~0xFEFF),即可收到发布者发布的消息

模型(Models) = 状态(states) + 消息(Messages) + 行为(Behavior)

  • 模型(Models) : 定义基本功能的最小单位;如,设备开关,灯泡亮度
  • 状态(States) : 如灯泡中开关/亮度的状态值,不同状态可绑定(Bound State,如灯泡亮度非0为开,为0则关)
  • 消息(Messages) : [SET(设置) + GET(请求) + STATUS(发送)]状态值(States)
  • 行为(Behavior) : 模型在接收到消息后的行为;
    如,灯收到设置ON/OFF状态值(SET States),ON/OFF状态值就要变成设置状态值消息的给定值;
    如,灯收到请求状态值(GET States),那就把状态值通过 STATUS 传给询问方

BLE Mesh消息通讯基于服务器/客户端架构

  • 服务器 : 对外提供状态访问接口
  • 客户端 : 访问服务器状态

服务器模型 客户端模型 控制模型##

  • 服务器模型 : 定义了状态,绑定状态和消息的集合
    如,灯包括通用开关服务器模型(Generic OnOffServer),灯亮度服务器模型(Light Lightness Server)
  • 客户端模型 : 定义了一群消息用于改变服务器状态,客户端模型不含有状态
  • 控制模型 : 包括以上两种模型
  • 具体实例如下图
    灯设备节点包含一个元素,元素中包含通用开关服务器模型和灯亮度服务器模型,两者相互绑定;开关模型不含有状态,灯与开关通过消息获知设置服务器元素状态

BLE Mesh的协议栈是层级结构

  • BLE 层 : Advertising && Connection 两种数据传输格式
  • 承载层(Bearer Layer) :将 BLE 数据抽象供上层使用,目前定义了广播承载和 GATT 承载,对应 BLE 的 Advertising 和 Connection
  • 网络层(Network Layer) : 基于地址的消息传输,实现代理中继等特性以及加密行为
  • 底层传输层(Lower Transport Layer) : 数据分段以及重组
  • 上层传输层(Upper Transport Layer) : 应用层数据加密解密认证,传输节点间传输控制消息,包括朋友特性的应用实现
  • 揭露层(Access Layer) : 定义应用数据格式,定义并控制数据在上层传输层加解密过程,确保从下层接收到的数据是准确的并传输到更高层
  • 基础模型层(Foundation Model Layer) : 定义了状态 消息 模型 等实现 Mesh 网络的配置
  • 模型层(Model Layer) : 标准化用户应用场景的实例,如灯模型,传感器模型等

安全机制

  • Mesh Security is Mandatory
  • Adding device uses 256-bit elliptic curves and 00B authentication
  • All mesh messages are encrypted and authenticated
  • Network, application and device security are addressed independently
  • Replay attacks are prevented by mandating fresh sequence number
  • Security keys can be changed via a Key Retresh procedure
坑和笔记
ESP
License:  CC BY 4.0
Share

Further Reading

Dec 23, 2024

其他笔记

EC800K AT连接移远云 配置过程 # 配置产品信息(初次连接需配置) AT+QIOTCFG="productinfo","pxxxxt","cDVTxxxxxxxxWGVB" # 连接开发者中心 AT+QIOTREG=1 # 查询当前连接状态(+QIOTSTATE: 8为正常) AT+QI

Jun 21, 2024

环形滤波算法

#include <stdio.h> #include <stdlib.h> #define BUFFER_SIZE 10 // 缓冲区大小 #define THRESHOLD 180

Jun 17, 2024

STM32 ADC采集的三种方式

采样周期 单个采集模式 ADC_Settings: 程序使用 uint16_t ADC_Read(

OLDER

玩客云配置

NEWER

WCH 工具链

Recently Updated

  • ESP32(十) BLE OTA
  • ESP32(九) BLE GATTS
  • LVGL(四) 动画
  • LVGL(三) 对象中创建对象
  • LVGL(二) 定时回调

Trending Tags

LVGL WCH Linux Elec freeRTOS STM ESP Flutter Others SwiftUI

Contents

©2025 松果工作室. Some rights reserved.

Using the Halo theme Chirpy