(二十九)深入理解蓝牙BLE之“5.1版本新特性”

回顾5.0新特性:

1.增加2Mbps LE PHY:但是只能用于连接。

2.增加LE Long range,S2(500kbps),S8(125kbps):可以实现更远的传输距离。

3.增加High duty cycle non-connectable ADV:最小广播间隔从100ms减小到20ms,能够让对端设备更快的扫描到。

4.扩展广播:增加了辅助信道来发送大payload的广播数据。

5.LE Channel Selection Algorithm #2:跳频算法只有12个不同的跳频序列,新的跳频算法2更随机。

6.Higher output power:将最大的发射功率,从4.0/4.1/4.2中的10mW,增大到100mW。

蓝牙5.1新特性:

1.AoA和AoD定位技术:

AOA(Angle Of Arrival):到达角测量。

AOD(Angle Of Departure):发射角测量。

新增AOA和AOD技术原理来确定设备方向,Direction Finding,寻向功能,spec中定义的主要是寻向,并不是定位。

多个可以寻向功能的接收端设备,把接收到的方向数据放在一起计算,就可以计算出位置信息,根据RSSI也可以计算出来设备的位置信息,但是没有根据方向角度计算的精度高。

根据rssi定位:

根据AoA角度定位:

原理介绍:

BLE设备可通过一根天线发射包含测向信息的数据包(CTE信息)使其方向可被对等设备获取。

对等设备含有一组射频开关和天线阵列,在接收含有测向信息的数据包时切换天线并采集IQ(I表示In-phase,即同相;Q表示Quardrature,即正交)信号样本。IQ信号样本用于计算天线阵列中不同天线上接收到的无线电信号的相位差,并最终基于相位差及天线阵列中天线间距信息估算出到达角(AoA)。

整个过程可以抽象描述为:

发射端(数据包中增加CTE信息)->接收端锚点(多天线)->多天线根据IQ信号样本,计算出相位差->最终基于相位差及天线阵列中天线间距信息,估算出到达角(AoA)->计算发射端的方向信息(单个锚点无法定位出来位置信息,需要多个锚点,放置在不同的位置,一起定位到位置信息)。

多个锚点一起工作,就可以计算出来位置信息了。

原理部分,本文不做过多介绍,请参考如下内容:

https://zhuanlan.zhihu.com/p/561469508

https://zhuanlan.zhihu.com/p/363599546

https://zhuanlan.zhihu.com/p/542856272

HCI接口新增定义:

从HCI接口来看,AOA和AOD定位技术,新增加了如下几个相关的HCI Command和Event。

HCI command:

HCI event:

其中CTE相关的HCI Command,主要是设置参数,使能发送,都是配置发送端的CTE是如何发送的,这些command类似与ble的adv。LE Set Connectionless IQ Sampling Enable Command,是使能IQ采样的命令,enable之后,controller会上报LE Connectionless IQ Report Event和LE Connection IQ Report Event给host端,该Event里面包含了天线信息和每个天线的IQ采样数据。

代码实现:

从上面的内容,可以得出一个知识点,就是SIG组织,只定义了Controller需要上报的天线的IQ采样信息,但是如何根据采样信息计算出来设备的角度,是没有定义的,需要Host端,或者应用层自行实现。查看了zephyr的最新LTS版本,发现zephyr的host端,也是将IQ数据吐给了APP业务层,由业务自行处理,并没有计算到达角。

demo:zephyr-zephyr-v2.7.0\samples\bluetooth\direction_finding_connectionless_rx。

缺点:

对硬件要求高,天线阵列,射频等要求高;

精度不够,实测没有那么高的精度;

2.Advertising Channel Index:

Randomized Advertising Channel Indexing,允许广播事件以任意顺序在3个或者其中的几个primary channel上递增,之前的版本只允许在3个primary channel上顺序递增。

5.0版本:

37,38,39顺序发送:

5.1版本:

通过对比可以发现,先发送在38,后发送在37和39,次数是随机的,或者说乱序的,这样子可以提高接收端的成功率。

3.GATT Caching:

每当client端设备连接时,它都会执行“服务发现”以查看服务器设备支持的功能,这个过程会消耗一定的时间和功耗。蓝牙5.1增加GATT Caching功能后,在server端没有任何更改的情况下,客户端可以跳过服务发现流程,这意味着连接速度会更快,并且消耗的能耗更少。

这个特性之前的spec版本就是存在的,但是5.1开始定义的更健全了。

Sevice Changed indication是之前就定义好的,5.1新增了Database Hash characteristic的新的方式,和Database Out Of Sync这种error code的新方式。

4.Periodic Advertising Sync Transfer:

增加将扫描到的周期广播同步信息,通过ACL连接发送给另外一个设备。

比如一个手机通过BLE连接着手环的同时,也通过周期广播,同步着另外一个设备广播的数据,这时候可以通过LL_PERIODIC_SYNC_IND PDU数据包,发送给手环,手环设备也可以去同步监听这个设备的周期广播了。

LL_PERIODIC_SYNC_IND PDU是,一种LL Control PDU,简称LLCP,类似的还有LL_CONNECTION_UPDATE_IND,LL_CHANNEL_MAP_IND,LL_FEATURE_REQ,LL_FEATURE_RSP等。

https://zhuanlan.zhihu.com/p/531581527

https://www.cnblogs.com/simpleGao/p/17635243.html

5.Synchronization State:

虽然周期广播在5.0版本中就已经定义,但是在5.0版本中,链路层并没有为了这个特性,单独定义出来一个状态机。在5.1版本的协议中,单独定义出来一个Synchronization State来处理周期广播的业务。

5.0版本:

链路层状态机:

5.1版本:

链路层状态机:

Synchronization state:

链路层在由主机指示,并且获得定期广告同步信息时,应进入Synchronization state状态。该信息可以从AUX_ADV_IND PDU的SyncInfo字段。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/609451.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

轮式机器人

迄今为止,轮子一般是移动机器人学和人造交通车辆中最流行的运动机构。它可达到很高的效率, 如图所示, 而且用比较简单的机械就可实现它的制作。 另外,在轮式机器人设计中,平衡通常不是一个研究问题。 因为在所有时间里,轮式机器人一般都被设计成在任何时间里所有轮子均与地接…

「短链接教程」如何使用自己的域名生成短链接

在当今数字化时代,短链接的应用越来越广泛。它们不仅能让链接更简洁美观,还便于分享和传播。 但很多时候想用自己的域名生成短链接?搭建短链接平台又比较麻烦,所以,这里以C1N短网址(c1n.cn)为例,介绍下如何…

MySQL——利用变量进行查询操作

新建链接,自带world数据库,里面自带city表格。 DQL # MySQL利用变量进行查询操作 set cityNameHaarlemmermeer; select * from city where NamecityName;# 多个结果查询 set cityName1Haarlemmermeer; set cityName2Breda; set cityName3Willemstad; s…

重生奇迹mu烈火剑带什么技能

在重生奇迹mu游戏中,35级是每个职业的分水岭,只要到了35级,三职业都可以学习自己的高级技能,道士可以召唤自己的大狗,法师拥有冰咆哮,战士就是咱们今天要说的烈火剑法,这三种技能都需要玩家自己…

Numpy求最大、最小值、求累乘、累和

Numpy求最大、最小值 代码举例: ​ 输出结果为: ​ 在这个例子中,我们首先导入了NumPy库,然后创建了一个3x3的矩阵A。接着,我们使用np.max()函数来求矩阵A的最大值,并将结果存储在变量max_value中&#xff…

树莓派搭建wordpress,上传主题时显示wordpress上传的文件大小超过 php.ini 文件中定义的 upload_max_filesize 值

问题:wordpress上传的文件大小超过 php.ini 文件中定义的 upload_max_filesize 值 解决方案:进入树莓派shell界面 输入指令查找php.ini文件 find / -name ‘php.ini’ 修改php.ini文件 sudo vim /etc/php/8.1/cli/php.ini 找到 upload max filesize…

异步时序电路的分析方法

异步时序电路的分析方法 在异步时序电路中,只有部分触发器由时钟脉冲 CP触发,其它触发器由电路内部信号触发。分析异步时序电路时需写出时钟方程,并特别注意各触发器的时钟条件在何时满足,其状态方程才能使用 Tips:在…

OpenHarmony 实战开发——3.1 Release + Linux 原厂内核Launcher起不来问题分析报告

1、关键字 Launcher 无法启动;原厂内核;Access Token ID; 2、问题描述 芯片:rk3566;rk3399 内核版本:Linux 4.19,是 RK 芯片原厂发布的 rk356x 4.19 稳定版内核 OH 版本:OpenHa…

5G NR 吞吐量计算 and 4G LTE 吞吐量计算

5G NR Throughput References • 3GPP TS 38.306 V15.2.0 (2018-06) ➤J : number of aggregated component carriers in a band or band combination ➤Rmax : 948/1024 • For the j-th CC, Vlayers(j) is the maximum number of layers ➤Qm(j) : Maximum modulation orde…

2024数维杯B题全保姆教程 生物质和煤共热解问题的研究

B题 生物质和煤共热解问题的研究 (1)基于附件一,请分析正己烷不溶物(INS)对热解产率(主要 考虑焦油产率、水产率、焦渣产率)是否产生显著影响?并利用图像 加以解释。 根据我视频的分析,这里采用…

阅读送书抽奖?玩转抽奖游戏,js-tool-big-box工具库新上抽奖功能

先讨论一个问题,你做软件工作是为了什么?从高中选专业,就喜欢上了软件开发?还是当初毕业不知道干啥,不喜欢自己的专业,投入软件开发的怀抱?还是干着干着别的,突然觉得互联网行业真不…

Springboot+Vue项目-基于Java+MySQL的毕业就业信息管理系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…

什么是趋势交易?澳福无偿分享

盈利的本质就是能低买高卖,那么怎么能找到交易中的高点和低点呢?其实很简单,只需要运用趋势交易就能很快的找到交易中的高点和低点。那么什么是趋势交易呢?澳福外汇今天详解! 趋势交易有3种趋势,如果其包含…

对话NVIDIA英伟达:AI已照进现实 | 最新快讯

文 | MetaPost NVIDIA 创始人兼首席执行官黄仁勋在 GTC 2024 主题演讲上表示:下一波 AI 浪潮将是 AI 对物理世界的学习。 当下,全球范围内价值超过50万亿美金的行业正在竞相实现数字化,数字孪生技术正在赋能千行百业。NVIDIA Omniverse 中国…

“感恩遇到你,郭护士!”佛山市一医院 护士回家途中救了位老奶奶

“感恩遇见你,我感谢郭护士关爱长者、热心助人的高尚行为……”看着信件上感谢的话语,郭琳玲的内心感动不已。而这一封亲笔手写的感谢信,是来自一位将近八十岁的老奶奶。 郭琳玲是佛山市第一人民医院创伤重症功能神经外科的一名护士。4月30日…

【快讯】山东省第四批软件产业高质量发展重点项目开始申报

为加快落实《山东省高端软件“铸魂”工程实施方案(2023-2025)》,提高软件产业规模能级,提升关键软件技术创新和供给能力,塑强数字经济发展核心竞争力,确定开展第四批软件产业高质量发展重点项目申报工作&am…

深入探讨利用大型语言模型的力量的策略 (LLMs)

Note: 提示词工程是一门融合了艺术和科学的学科——它既是对技术的理解,也是对创造力和战略思维的理解。 本文为对LLMS策略分享内容学习后的整理,尝试抛开网上广泛讨论和记录的传统提示词工程技术,展示通过实验学到的新见解,以及…

树和二叉树的定义和基本术语

文章目录 前言一、树的定义二、树的基本术语三、二叉树的定义总结 前言 T_T此专栏用于记录数据结构及算法的(痛苦)学习历程,便于日后复习(这种事情不要啊)。所用教材为《数据结构 C语言版 第2版》严蔚敏。 一、树的定义…

React:Router-2. createBrowserRouter函数式

参考文档:ReactRouter官网 前边的文章 BrowserRouter组件式路由 提供了组件式路由的方式,在react-router6.4.0及以上版本,提供了 createBrowserRouter 函数式路由创建方式。 一、创建路由 1. 新建router.js文件,使用createBrow…

线程-进程-多线程 概述简介

01 线程简介 任务, 进程, 线程, 多线程 多任务 什么是多任务? 生活中的例子 第一个例子: 这张图片, 一个人边吃饭边玩手机, 同时做了两件任务,大家不要去当这样的低头族. 第二个例子: 第二张图, 开车的时候能打电话, 能打点滴 第三个例子: 第三个图, 说明了我们可以边…