LV04-天猫蓝牙Mesh项目-02-进阶开发-02-蓝牙架构介绍

本文主要是天猫蓝牙Mesh项目——进阶开发 蓝牙架构介绍 的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。

点击查看使用工具及版本
Windows版本 windows11
Ubuntu版本 Ubuntu22.04的64位版本
VMware® Workstation 16 Pro 16.2.3 build-19376536
终端软件 MobaXterm(Professional Edition v23.0 Build 5042 (license))
点击查看本文参考资料
分类 网址 说明
官方网站 阿里云 阿里云官网主页
阿里生活物联平台 生活物联网平台(飞燕平台)主页
AliGenie 天猫精灵开放平台AliGenie主页
阿里物联网平台 阿里物联网平台主页
Bluetooth 技术网站 蓝牙协议规范什么的可以来这里找
Telink Telink | Chips for a Smarter IoT (telink-semi.com)
Telink中文官网
开发手册 AliOS Things开发指南 AliOS Things开发指南,这里是最新版本,可以直接从官网找到
AliOS Things开发指南 AliOS Things应用开发指南,这里应该是3.3版本的完整开发文档
AliOS Things开发指南(3.0) AliOS Things应用开发指南,这里应该是3.0版本的完整开发文档
生活物联网平台开发文档 生活物联网平台(飞燕平台)开发文档
《设备端开发指南》
Wi-Fi IoT品类定义与功能开发 天猫精灵IoT开放平台——Wi-Fi IoT品类定义与功能开发
硬件平台 mk3080 WiFi开发板 WiFi开发板使用指南-阿里云开发者社区
esp8266开发板 一个教程:ESP8266-NodeMCU开发板详解-太极创客 (taichi-maker.com)
TLSR8258 Datasheet Datasheet for Telink BLE + IEEE802.15.4 MultiStandard Wireless SoC TLSR8258
参考资料 AliOS Things 3.0 应用开发指南 这个只是一篇参考文章,里面是一些环境搭建相关的,可以参考
IP知识百科 - 华为 (huawei.com) IP的一些相关知识点
点击查看相关文件下载
分类 网址 说明
蓝牙规范相关文档 Core Specification 5.2 核心规格 5.2,该规范定义了创建可互操作的Bluetooth 设备所需的技术。
《Core_v5.2.pdf》
Mesh Model(v1.1) 本Bluetooth 规范定义了模型(以及它们所需的状态和消息),这些模型用于在mesh 网络中的节点上执行基本功能,超出了Bluetooth Mesh 配置文件 规范中定义的基础模型。
本规范包括定义跨设备类型标准功能的通用模型,以及支持关键mesh 场景的模型,如照明控制、传感器、时间和场景。
《MshMDL_v1.1.pdf》
Mesh Profile(v1.0.1) 该Bluetooth 规范定义了基本要求,以实现可互操作的mesh 网络解决方案,用于Bluetooth 低能量无线技术。
《MshPRFv1.0.1.pdf》
Mesh Device Properties 本规范包含Bluetooth Mesh 配置文件 和Bluetooth Mesh 模型规范所要求的设备属性的定义。
但是跟之前的有些区别,我主要看的之前的版本:《MMeshDeviceProperties_v1.2.pdf》
GATT Specification Supplement GATT Specification Supplement | Bluetooth® Technology Website。
好像可以在线看:《GATT Specification Supplement》
Assigned Numbers GATT的一些类型定义可以在这里找。
AliOS Things alios-things/AliOS-Things Gitee上的AliOSThings SDK源码仓库
alibaba/AliOS-Things GitHub上的AliOSThings SDK源码仓库
天猫精灵蓝牙Mesh协议栈 alibaba-archive/genie-bt-mesh-stack GitHub上的天猫精灵蓝牙Mesh协议栈源码仓库。
之前是在alibaba/genie-bt-mesh-stack这个仓库。
写笔记的时候最新提交为faf523618a6a2560090fc423222b9db80984bb7a
蓝牙Mesh设备开发指南 阿里云生活服务平台开发手册——蓝牙设备开发一节中的内容

这一LV的笔记起始跟前面有所重叠,互相补充吧算是。

一、蓝牙开发解决方案

常见蓝牙开发解决方案

蓝牙开发的解决方案可以分为上图中的三种。

我们使用的泰凌微8258就属于上图中的单芯片解决方案,一块芯片中集成了蓝牙控制器和蓝牙主机,图中的外设就是I2C、SPI、SDIO等。

第二种蓝牙主机与控制器分开的,就是蓝牙的协议栈运行在MCU中,MCU通过UART、USB、SDIO等接口与蓝牙控制器进行通信,控制数据的传输。

第三种就是MCU+单芯片的解决方案,就像ESP32,它就是这种类型的,里面包含了蓝牙控制器和蓝牙主机,我们通过MCU,使用一些自定义的命令对蓝牙进行控制,比如AT指令等。

二、蓝牙整体框架介绍

蓝牙协议栈整体结构

蓝牙整体框架如上图所示,在之前其实已经有所了解了,图中的HCI中封装了很多的命令和事件,通过UART、USB、SDIO等硬件通信协议实现蓝牙主机和控制器的交互。

三、BLE控制器

1. 物理层

1.1 调制原理

BLE蓝牙物理层-高斯频移键控

1.2 无线射频信道

BLE蓝牙无线射频信道

1.3 射频公差

调制比特0和1表示

1.4 传输距离的相关参数

发射功率、接收灵敏度、路径损耗、天线增益、接收信号强度(RSSI)。

链路预算

1.4.1 发射功率

蓝牙发射功率

这里来学一点知识,说到dB,最常见的就是3 dB啦。3 dB在功率图或误码率图中经常出现。其实,没什么神秘的,下降3 dB就是指功率下降一半,3 dB点指的就是半功率点。+3 dB表示增大为两倍,-3 dB表示下降为1/2。这是怎么来的呢?我们一起看下dB的计算公式:

img

dB表示功率P1相对于参考功率P0的大小关系。如果P1是P0的2倍,那么:

img

如果P1是P0的一半,那么:

img

所以,当功率增大为10倍,用多少dB表示呢?

image-20240102224953686

所以,口诀由此而来:

img

dB是个相对值,它的使命就是把一个很大或者很小的数,用一个简短的形式表达出来。

img

这可以极大的方便我们计算和描述。尤其是绘制表格的时候。那dBm呢?dBm、dBw就是把dB公式中的参考功率P0分别换成1 mW、1 W:

img

1 mW、1 W都是确定的值,因此dBm、dBw都可以表示功率的绝对值。所以按此计算44 dBm等于多少W?

image-20240102225311222

这里我们需要注意,等式右侧除了30 dBm,其余的拆分项都要用dB表示。也就是说,用一个dBx减另一个dBx时,得到的结果用dB表示。

1.4.2 路径损耗(path loss)与距离公式

$$
path loss = 40+25*lg(d)
$$

路径损耗与距离关系

例如,我们现在两个蓝牙设备相距100m,那么路径损耗就是
$$
pathloss=40+25lg(100)=40+252=90dB
$$
假设我们的发射功率为+20dBm,经过损耗之后,就只剩下 -70dBm ,我们的接收灵敏度就最少要设置为-70dBm,但是实际要设计10%-20%的余量,一般会设置为 -80dBm或者 -90dBm。

1.4.3 不同材料的衰减值

不同材料的衰减值

例如,我们发射功率为+10dBm,功率为10mW,穿过一个木门,衰减3dB,功率就只剩下5mW,当时当我们想要获得一个+dBm的蓝牙信号,那么它穿过木门之前就应该是+13dBm,也就是1x10x2mW=20mW,功率直接变为原来的2倍。

2. 链路层

2.1 链路层状态机

image-20240102223336249

2.2 链路层比特流处理

BLE蓝牙控制器-链路层-比特流处理

2.3 比特流编码格式与速率

《Core_v5.2.pdf》的Vol 6, Part B ,2 AIR INTERFACE PACKETS 一节有下面这些的说明:

LE 1/2M PHY数据包格式

image-20240102234251310

LE Coded PHY数据包格式

image-20240102234524697

我们看下面总结的:

错误纠正码格式

LE Coded PHY数据包格式中的CI表示编码格式,即Coding Indicator 。它们都是啥意思,在《Core_v5.2.pdf》的Vol 1, Part A ,1.2 OVERVIEW OF BLUETOOTH LOW ENERGY OPERATION 中有这么一段话来解释:

This may use either of two coding schemes: S=2, where 2 symbols represent 1 bit therefore supporting a bit rate of 500 kb/s, and S=8, where 8 symbols represent 1 bit therefore supporting a bit rate of 125 kb/s.

翻译一下就是这可以使用两种编码方案中的一种:S=2,其中2个符号代表1位,因此支持500 kb/S的比特率。S=8,其中8个符号代表1位,因此支持125 kb/S的比特率。

拿访问地址来说,它是4字节,一共是32bit,对于1M的速率来说,每bit传输时间应该是1us,这里应该是32us,但是这里固定S=8,所以值256us。

2.4 前导码作用

BLE蓝牙链路层-报文结构-前导码详解