【杂谈】-蓝牙低功耗数据传输模式比较

news2025/1/11 6:21:15

蓝牙低功耗数据传输模式比较

文章目录

  • 蓝牙低功耗数据传输模式比较
    • 1、无连接数据传输
    • 2、无连接数据传输的优点
      • 3、无连接数据传输的局限性
    • 3、面向连接的数据传输
    • 4、面向连接模式的优点
    • 5、面向连接模式的局限性
    • 6、家庭自动化项目的性能观察

物联网(IoT)设备可能比智能手机更常见,而且其中许多设备都运行蓝牙低功耗(BLE)技术。本文将介绍并比较低功耗蓝牙(BLE)的传统数据广播(Advertising)、扩展数据广播和面向连接的数据传输模式。在本文中,我们将熟悉 BLE 的各种数据传输方法,并加深对其性能水平的理解。

1、无连接数据传输

无连接数据传输,也称为广播,是指针对广大受众而不是特定接收者或一组接收者的数据传输,这就像附近任何人都可以听到的公共广播,而不是私人对话。 这些类型的传输的特点是能够同时到达多个接收器,通常称为多播传输。

BLE 提供两种主要的无连接数据传输机制:

  • 传统数据广播(Legacy advertising)

    • 一次最多可以广播31字节的数据。
    • 通过增加31字节的扫描响应包,可以稍微增加数据容量。
    • 顾名思义,传统数据广播是两种模式中较旧的一种。
  • 扩展数据广播(Extended advertising)

    • 将广播数据限制从 31 字节增加到 254 字节。
    • 对于更大量的数据需求,它支持最多可处理 1650 字节数据的广播链。这种扩展的容量允许广播更丰富的信息,从而有利于信标部署等应用程序和增强基于位置的服务。

2、无连接数据传输的优点

无连接数据传输模式具有以下优点:

  • 多播传输。 这使得一对多通信成为可能,其中单个设备可以同时向多个接收者广播信息。 它在需要同时更新各种设备的应用程序中特别有用,例如零售广播信息中的信标。

  • 高效率。 无需建立和维护单独的连接,无连接模式通常在速度和资源利用率方面都更加高效。 由于不涉及握手或连接维护,因此可以更快地使用更少的资源发送数据,从而实现更平稳的操作并可能降低功耗。

    3、无连接数据传输的局限性

现在我们已经了解了广播的优点,现在是时候检查其缺点以及如何减轻它们了:

  • 安全问题
    • 缺点:无连接传输传统上缺乏链路层加密。 广播数据以明文形式发送,任何有权访问的人都可以读取。
    • 缓解措施:蓝牙 LE 5.4 引入了加密广播,可增强安全性并允许使用 BLE 音频等特定配置文件进行安全广播。
  • 缺乏传输控制
    • 缺点:在无连接数据传输中,广播器和观察者设备不协商传输参数,例如信道、定时或序列。 广播端在主要频道上重复传输,要求观察者设备连续扫描这些频道(37、38、39)。 这个过程,尤其是传统广播,会很快耗尽扫描仪的电池。
    • 缓解措施:通过扩展广播,此问题不会那么严重。
  • 功耗和设计考虑因素
    • 缺点:广播和扫描间隔(即设备在再次广播或扫描之前休眠的时间段)会显着影响功耗。 设置这些值时必须小心。
      缓解措施:设计人员通常采用不对称方法:电池受限的设备广播频率较低,而电池容量较大的设备扫描频率较高。 这种设计选择既保证了用户的便利性,又不会过度消耗电池资源。
  • 通道拥塞
    • 缺点:在传统广播中,数据直接在主要广播通道上发送。 如果每个广播事件最多发送 3 次广播数据包,则可能会发生拥塞,尤其是对于较长的数据包。 这在密集的物联网环境中是有问题的。
    • 缓解措施:扩展广播通过仅在主要通道上传输标头,并在 37 个辅助通道之一上发送实际数据来缓解这一问题。

3、面向连接的数据传输

在无连接通信中,设备将消息发送到露天,希望它们能够被预期的接收者接收到。 面向连接的数据传输代表了 BLE 设备更结构化的通信方式。 图 1 直观地展示了这一过程。

在这里插入图片描述

图1. 面向连接的数据传输过程。

在面向连接模式下,数据传输分为四个步骤:

    1. 设备发现。 外围设备通过定期广播可连接的广播数据包来启动该过程。 这些数据包携带关键信息,例如设备名称、提供的服务以及外设无线电支持的蓝牙类型。 这些信息有助于中央设备在扫描过程中快速识别和评估外围设备。
    1. 建立连接。 当 Central 发现它想要连接的 Peripheral 时,它会发送连接请求。 该请求包括连接参数,例如连接间隔(数据传输事件之间的时间)、从机延迟(外设可以跳过的连接事件数)和监控超时(如果没有通信,连接将被丢弃的时间) 。 然后外设可以接受或拒绝该请求。 如果接受,则使用协商的参数建立连接。
    1. 数据传输。 连接后,设备可以通过已建立的链路发送数据。 与无连接模式中的随机信道使用不同,面向连接模式使用指定信道来提高可靠性和效率。
    1. 确认和控制。 当数据传输时,每个数据包都会被接收器确认。 如果数据包未能到达目的地,发送者就会知道要重新发送它。 此外,可以在设备之间交换控制消息以管理连接参数,确保链路保持稳定和有效。

该模式下传输的数据包的所有连接参数如图2所示:

在这里插入图片描述

图 2. 面向连接的数据传输模式中数据包的传输和确认。 图片来自[MDPI](https://www.mdpi.com/1424-8220/17/12/2898)

4、面向连接模式的优点

面向连接模式的优点如下:

  • 可靠性。 每一条发送的数据都会被确认。 如果数据包未通过,则会再次发送,以确保完整的数据从一个设备发送到另一台设备。
  • 高带宽。 专用数据通道增加了可用带宽,从而提高了数据吞吐量。
  • 增强安全性。 该模式支持链路层加密,确保数据在传输过程中保密。
  • 分割和重组。 在传输过程中,数据被分割(或“分段”)成更小的块进行传输。 收到后,这些部件会重新连接在一起(或“重新组装”)。 这确保了即使是大量应用程序数据也能高效传输。

5、面向连接模式的局限性

  • 开销。 面向连接的模式涉及一系列握手和确认。 这可能会带来开销,从而降低非常小的数据传输效率。
  • 功耗较高。 持续的确认系统和连接维护可能会导致功耗增加。
  • 可扩展性问题。 管理多个同时连接可能变得具有挑战性,特别是在密集连接的环境中。

6、家庭自动化项目的性能观察

蓝牙 5 的发布为物联网工程师带来了新功能,包括上面讨论的扩展广播模式。 但最新的一定是最好的吗?

Piergiuseppe Di Marco 领导的研究团队测试了新旧 BLE 数据传输模式,看看哪些功能在不同场景下效果最好。

在这里插入图片描述

图 3. 模拟 BLE 智能家居。 图片来自[IEEE](https://ieeexplore.ieee.org/abstract/document/7992938)

模拟场景

研究人员模拟了一个典型的单户智能家居,尺寸为 12 m x 10 m,配备了 77 个物联网设备,包括窗户传感器、电灯开关和灯泡。 此设置的核心是网关设备,它始终保持活动状态以管理数据流。 与此同时,电池供电的传感器大多处于休眠状态,仅在传输或接收数据时激活。

该研究还考虑了现实世界的问题,例如不同的信号接收:在模拟中,每面墙壁使信号强度降低 6 dB,每米信号衰减 0.5 dB。

性能指标

研究团队使用以下指标评估每种数据传输模式:

  • 服务率:给定时间范围内数据传输的成功率或可靠性。 该指标告诉您成功传送到预期目的地的数据百分比。 它是交通损失率的补充,它告诉您沿途损失的百分比。
  • 数据包延迟:也称为延迟,衡量数据从源设备传输到目标设备所需的时间。 对于需要实时或近实时数据传输的应用程序,最小化延迟对于确保流畅的用户体验至关重要。
  • 电池寿命:使用特定数据传输模式时,设备在单次电池充电的情况下可以运行的持续时间。 对于物联网设备来说,其中许多都是由电池供电并部署在偏远或难以到达的区域,因此最大限度地延长电池寿命至关重要。 更长的电池寿命意味着更少的维护频率和更可靠的长期运行。

结果简而言之

  • 服务比率:扩展广播在较长的有效负载中表现良好,但在较短的有效负载中表现不佳。 传统广播(旧方法)仍然是短时间突发数据的最佳选择。 面向连接的模式比使用小数据包的扩展广播表现更好,但在处理大流量时表现不佳。
  • 数据包延迟:在这里,传统广播是明星:它的延迟最短,尤其是对于短数据包。 总的来说,延伸广播的表现较差。 面向连接的模式是所有模式中最慢的,难以应对重新传输和超时问题。
  • 电池寿命:如果您希望电池持久耐用,并在所有情况下都优于其他电池,那么延长广播时间证明了自己的最佳选择。 传统广播效果很好,但仅限于短数据包,而面向连接的模式效率最低。

哪种模式最好?

最终,选择数据传输模式就是使用正确的工具来完成工作。 面向连接的模式是可靠的,并且扩展的广播提供了出色的电池寿命和对更长有效负载的适应性,但是,如上所述,在某些情况下,传统广播仍然优于较新的替代方案。 每种模式都有自己的优点和缺点,物联网工程师应该根据每个项目做出决定。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Spring Cloud】黑马头条 用户服务创建、登录功能实现

点击去看上一篇 一、创建用户 model 1.创建用户数据库库 leadnews_user 核心表 ap_user 建库建表语句 这里一定要使用 navicat,执行SQL 文件,以防止 cmd 中的编码问题 先将 SQL 语句,保存在电脑中,再使用 navicat 打开 CREATE…

指针——C语言初阶

一.指针基本概念&#xff1a; 指针是内存中一个最小单元的编号&#xff0c;也就是地址平时口语中说的指针&#xff0c;通常指的是指针变量&#xff0c;是用来存放地址的变量 #include<stdio.h> int main() {int a 0;//a是整型变量&#xff0c;占用四个字节的内存空间&a…

大型语言模型中的幻觉研究综述:原理、分类、挑战和未决问题11.15+11.16+11.17

大型语言模型中的幻觉研究综述&#xff1a;原理、分类、挑战和未决问题11.15 摘要1 引言2 定义2.1 LLM2.3 大语言模型中的幻觉 3 幻觉的原因3.1 数据的幻觉3.1.1 有缺陷的数据源3.1.2 较差的数据利用率3.1.3 摘要 3.2 来自训练的幻觉3.2.1训练前的幻觉3.2.2来自对齐的幻觉3.2.3…

同时显示上下两层凸包特征的可视化程序

数据类型 std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> hulls_k_upper std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> hulls_k_lower std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> hulls_underk_upper std::vector<…

群晖7.2安装Jellyfin+alist+CloudDriver搭建无盘影院中心

群晖7.2安装JellyfinalistCloudDriver搭建无盘影音中心。 实现思路如下&#xff1a; Jellyfin&#xff1a;提供个人影院功能。 alist&#xff08;xiaoya&#xff09;&#xff1a;给影院提供海量影音资源。 CloudDriver2&#xff1a;alist的资源为网络资源&#xff0c;通过C…

搭建yum源并定时同步

一 、安装yum源 1-准备yum目录 cd /data/www/html createrepo -v ./目录 2-安装服务 yum -y install httpd 3-配置服务 /etc/httpd/conf/httpd.conf 4.配置/etc/yum.repo.d/local.rpeo 二、定时更新yum源 #1. 同步整个源到指定目录 [rootV10SP1-1 pac]# reposync -p /root/…

C语言--写一个函数返回bool值,来判断给定的字符串A和B(假设都是小写字母),是否是B中的字符都存在于A中,如果是返回true,否则返回false

一.题目描述 写一个函数返回bool值&#xff0c;来判断给定的字符串A和B&#xff08;假设都是小写字母&#xff09;&#xff0c;是否是B中的字符都存在于A中&#xff0c;如果是返回true&#xff0c;否则返回false。例如&#xff1a; 字符串A&#xff1a;abcde 字符串B&#xff…

长短期记忆(LSTM)与RNN的比较:突破性的序列训练技术

长短期记忆&#xff08;Long short-term memory, LSTM&#xff09;是一种特殊的RNN&#xff0c;主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说&#xff0c;就是相比普通的RNN&#xff0c;LSTM能够在更长的序列中有更好的表现。 Why LSTM提出的动机是为了解…

windows使用lcx端口转发登陆远程主机

1.编译lcx源码: GitHub - UndefinedIdentifier/LCX: 自修改免杀lcx端口转发工具 2.在win7上安装vs2010并编译生成lcx.exe 3.在要被控制主机上运行: lcx -slave 192.168.31.248 51 192.168.31.211 3389 192.168.31.248为远程主控制主机,51为远程主机端口 192.168.31.211为被…

ZYNQ7000---FLASH读写

提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Flash是什么&#xff1f;二、Flash的分类1、内部结构&#xff08;接口&#xff09;区分&#xff1a;2、外部接口区分&#xff1a;SPIQPSI Flash: QSPI 控制…

Leetcode刷题详解——猜数字大小 II

1. 题目链接&#xff1a;375. 猜数字大小 II 2. 题目描述&#xff1a; 我们正在玩一个猜数游戏&#xff0c;游戏规则如下&#xff1a; 我从 1 到 n 之间选择一个数字。你来猜我选了哪个数字。如果你猜到正确的数字&#xff0c;就会 赢得游戏 。如果你猜错了&#xff0c;那么我…

分发糖果(贪心算法)

题目描述 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&#xff0c;给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果&#xff0c;计算并返回…

操作系统:输入输出管理(二)磁盘调度算法

一战成硕 5.3 磁盘固态硬盘5.3.1 磁盘5.3.2 磁盘的管理5.3.3 磁盘调度算法 5.3 磁盘固态硬盘 5.3.1 磁盘 磁盘是表面涂有磁性物质的物理盘片&#xff0c;通过一个称为磁头的导体线圈从磁盘存取数据。在读写操作中&#xff0c;磁头固定&#xff0c;磁盘在下面高速旋转。磁盘盘…

Linux安装DMETL5与卸载

Linux安装DMETL5与卸载 环境介绍1 DM8数据库配置1.1 DM8数据库安装1.2 初始化达梦数据库1.3 创建DMETL使用的数据库用户 2 配置DMETL52.1 解压DMETL5安装包2.2 安装调度器2.3 安装执行器2.4 安装管理器2.5 启动dmetl5 调度器2.6 启动dmetl5 执行器2.7 启动dmetl5 管理器2.8 查看…

LangGPT作者教你编写高质量提示词

CoT和ToT能够提升表现&#xff0c;但是会使得模型的使用变复杂。在对话的场景下容易消耗人的耐心&#xff1b;实际应用的场景下&#xff0c;比较消耗人的token。 还有一点需要说明的是&#xff0c;我们在写自己的prompt的时候&#xff0c;不应该盲目地追求和堆砌提示词技巧&am…

Unity 预制体放在场景中可见,通过代码复制出来不可见的处理

首先我制作了一个预制体&#xff0c;在场景中是可见的&#xff0c;如下图 无论是Scene视图&#xff0c;还是Game视图都正常。 我把预制体放到Resources里面&#xff0c;然后我通过如下代码复制到同个父物体下。 GameObject obj1 Instantiate(Resources.Load("Butcon&quo…

Django+vue前后端分离实战--vue后台管理系统--vue环境安装项目创建

Djangovue前后端分离实战--vue后台管理系统 安装nodejsvue clivue-cli创建项目 安装nodejsvue cli 1、下载nodejs并安装 https://nodejs.org/dist/v20.9.0/node-v20.9.0-x64.msi 2、修改npm 默认仓库地址&#xff0c;要修改成taobao的镜像npm 仓库地址 cmd下命令&#xff1a…

sql注入 [极客大挑战 2019]LoveSQL 1

打开题目 几次尝试&#xff0c;发现输1 1"&#xff0c;页面都会回显NO,Wrong username password&#xff01;&#xff01;&#xff01; 只有输入1&#xff0c;页面报错&#xff0c;说明是单引号的字符型注入 那我们万能密码试试能不能登录 1 or 11 # 成功登录 得到账号…

【Redis】springboot整合redis(模拟短信注册)

要保证redis的服务器处于打开状态 上一篇&#xff1a; 基于session的模拟短信注册 https://blog.csdn.net/m0_67930426/article/details/134420531 整个流程是&#xff0c;前端点击获取验证码这个按钮&#xff0c;后端拿到这个请求&#xff0c;通过RandomUtil 工具类的方法生…

微服务实战系列之Token

前言 什么是“Token”&#xff1f; 它是服务端生成的一串字符串&#xff0c;以作客户端进行请求的一个令牌&#xff0c;当第一次登录后&#xff0c;服务器生成一个Token便返回给客户端&#xff1b;以后客户端只携带此Token请求数据即可。 简言之&#xff0c;Token其实就是用户身…