一、蓝牙常识点

1、常见英文缩写

缩写 英文全称 释义
BLE Bluetooth Low Energy

低功耗蓝牙

BR Basic Rate

基本速率,一般说的经典蓝牙就是指BR/EDR

EDR Enhanced Data Rate

增强速率,BR的增强版,一般说的经典蓝牙就是指BR/EDR

Bluetooth SIG Bluetooth Special Interest Group

蓝牙技术联盟

HCI Host Controller Interface

主机控制器接口

GATT Generic Attribute Profile

通用属性配置文件

GAP Generic Access Profile

通用访问配置文件

HFP Hands-free Profile

蓝牙电话配置文件

A2DP Advanced Audio Distribution Profile

高级音频分发协议

PBAP Phone Book Access Profile

手机电话本访问协议

MAP Message Access Profile

短信访问协议

2、经典蓝牙

经典蓝牙包含了蓝牙的3个大的阶段:BR、EDR、BT3.0,当说到这3个名词的时候,实际上就是在说经典蓝牙。

BR:蓝牙BR是蓝牙技术的第一个开发版本,在2.4GHz ISM频段内进行数据传输。特点:低成本、低功耗,但数据传输速度相对较慢。

EDR:蓝牙EDR是蓝牙BR的增强版本。特点:数据传输速度比蓝牙BR快两到三倍。

3、BLE

BLE出现在蓝牙4.0。

(1)BLE协议栈

常见的协议栈有德州仪器 TI 的 ble-stack 和 Nordic 的 SoftDevice:

TI的CC26系列芯片协议栈结构图

Nordic的nRF52系列芯片的协议栈结构图

    协议栈结构包含三个部分:Application、Host、Controller。
    HCI:Host Controller Interface,主机控制器接口,位于Host和Controller层中间,在分析蓝牙通信时经常需要分析HCI日志。

(2)信道

BLE一共有40个信道,频段范围从2402~2480MHZ,其中37、38、39是蓝牙广播信道,剩余的37个是数据信道,37(2402MHZ)、38(2426MHZ)、39(2480MHZ)并不是相邻的信道,这样做是为了避免广播扫描中相邻信道相互干扰。

信道及对应频率:

(3)GATT

Client:客户端可以发送请求给GATT服务端,客户端可以读(Read)/写(Write)服务端的属性(Attributes ),通过属性可以通信数据。

Server:服务端是用来存储属性(Attributes )的,每当客户端发送请求时,服务端会相应这些请求。

  • 一个示例如下:手环采集了心跳信息,希望计算机读取该信息。手环充当服务端并提供信息。手机充当客户端,读取该信息。
  • 在一般的主从机通信时,主机可以通过读写从机的属性,实现接收和发送数据给从机,从机可以通过发送通知的方式实现与主机的通信。因此,一般从机是作为GATT的服务端,主机作为GATT的客户端。

(4)BLE角色

  • 主机(Master/Central):主机可以发起对从机的扫描连接。例如手机,通常作为BLE的主机设备从机 (Peripheral)。
  • 从机(Peripheral):从机只能广播并等待主机的连接。例如智能手环,是作为BLE的从机设备。

蓝牙协议栈没有限制设备的角色范围,同一个BLE设备,可以作为主机,也可以作为从机,我们称之为主从一体,主从一体的好处是,每个BLE设备都是对等的,可以发起连接,也可以被别人连接,更加实用。

(5)BLE工作流程

  • 1)广播:广播是指从机每经过一个时间间隔发送一次广播数据包,这个时间间隔称为广播间隔,这个广播动作叫做广播事件,只有当从机处于广播状态时,主机才能发现该从机。

2)扫描:扫描是主机监听从机广播数据包和发送扫描请求的过程,主机通过扫描,可以获取到从机的广播包以及扫描回应数据包,主机可以对已扫描到的从机设备发起连接请求,从而连接从机设备并通信。

3)连接

    4)通信(Profile配置文件):

    • 一般将从机具有的数据或者属性特征称之为Profile
    • 从机中添加Profile配置文件(定义和存储Profile),作为GATT的Server端;主机作为GATT的Client端。
    • Profile包含一个或者多个Service,每个Service又包含一个或者多个Characteristic(特征值)。主机可以发现和获取从机的Service和Characteristic,然后与之通信。Characteristic是主从通信的最小单元。每个Characteristic都有自己的 Property(属性),属性的取值有:可读 Read,可写 Write 以及Notify(通知)。通知表示从机可以主动向主机发送通知数据,这便是主从机之间两个典型的通信方式。

    • 主机可主动向从机Write写入或Read读取数据,从机可主动向主机Notify通知数据

5)断开

4、蓝牙单模与双模

单模蓝牙:即只支持BLE的蓝牙设备

双模蓝牙:既支持BLE也兼容经典蓝牙的设备

(1)BLE

  • 特点:低功耗,快连接,小数据,传速慢(最高为1 Mbps),通信范围短。
  • 使用设备:遥控、钥匙、键盘、手环、心率计等小数据行业设备。
  • (2)经典蓝牙

    • 特点:大数据,高速率(最高可达2-3 Mbps),通信范围广(可达100米)。
    • 使用设备:汽车、音响、耳机等需要传输音视频数据的设备。

(3)经典蓝牙与BLE的对比:

5、常见的Profile

(1)PBAP:手机电话本访问协议,可以同步手机这些具有电话本功能设备上的通讯录和通话记录等信息。

4种信息来源:

  • 手机中的通讯录
  • 手机中的通话记录
  • SIM卡中的通讯录
  • SIM卡中的通话记录

2种角色:

  • PSE:Phone Book Server Equipment,拥有电话本源数据的设备,作为服务端,如手机
  • PCE:Phone Book Client Equipment,向PSE端请求电话本信息的设备,作为客户端,比如车载蓝牙

(2)A2DP:高级音频分配协议。传输于蓝牙ACL链路上的高质量音频,即为蓝牙音乐的媒体音频。平常使用的蓝牙耳机、蓝牙音响播放出来的音乐就是走的A2DP协议。

两种角色:

  • SRC:Source,数字音频流的源,负责将源数据发送到SNK端。
  • SNK:Sink,数字音频流的接收器,负责接收SRC发过来的源数据。

示例:蓝牙耳机连接手机蓝牙听音乐,那蓝牙耳机就是SNK,手机蓝牙就是SRC。

(3)HFP:蓝牙耳机连接手机蓝牙听音乐,那蓝牙耳机就是SNK,手机蓝牙就是SRC。

定义了两种角色:

  • AG:Audio Gateway,音频网关。其作用是用于输入和输出,典型设备是手机。
  • HF:Hands-Free unit,免提设备。作为音频网关的远程音频输入和输出机制的设备,同时还具有远程控制AG端的能力。

示例:蓝牙耳机/车载蓝牙连接手机进行通话,此时蓝牙耳机/车载蓝牙就是HF,手机端就是AG。

二、WiFi常识点

1、WiFi

Wireless Fidelity,意为无线保真,它与蓝牙技术类似,属于短距离的无线技术,使用的是2.4GHz附近的频段

2、AP/STA(热点)

(1)常见缩写及含义

缩写 英文全称 释义

AP

Access Point

无线接入点,即平时所说的热点

STA

Station

任何一个接入无线AP的设备都可以称为一个站点

SSID

Service Set Identifier

AP的服务集标识符,即我们常说的WiFi名称

RSSI

Received Signal Strength Indication

接收的站点的信号强度指示

BSSID

Basic Service Set Identifier

基本服务集标识符,即设备的MAC地址

ESSID

Extended Service Set Identifier

含义同SSID,就是AP/路由器名称。如果多个AP/路由器都叫同一个名字,就称为ESSID

(2)角色

AP:无线接入点,是一个无线网络的创建者,是网络的中心节点,比如无线路由器就是一个AP。

STA:站点,每一个连接到无线网络中的终端都称为一个站点,比如连接到无线路由器的智能手机、电脑等。

在一个局域网中,有些设备只做AP,有些只做STA,有些既充当AP又充当STA

(3)双频

2.4G:2.4GHz频段的工作范围覆盖2.4-2.4835GHz,共划分了13个信道,每个信道频宽为20MHz。特点:频率低、波长长、穿透力强、传播距离远。由于其普及度高,应用广泛,2.4GHz频段在拥挤的无线环境中容易受到其他同频设备的干扰,如家用蓝牙设备、ZigBee协议的智能家居产品等,从而影响网络速度和稳定性。

5G:5GHz频段的工作范围覆盖5.170-5.850GHz,同样划分了13个信道,但其中部分信道(如38、46、151、159)频宽为40MHz,其余为20MHz。特点:相较于2.4GHz频段,5GHz频段频率更高、波长更短(约0.052m),在无线传输上具有显著优势。其频带宽,能够处理更大的数据量,数据传输速度快,信号稳定性强,不易受到外界干扰。然而,5GHz频段的穿透能力较弱,信号在穿越障碍物时衰减较大,覆盖范围相对较小。

根据公式v=hλ,v(电磁波传播速度)是定值,h(频率)越大,λ(波长)就越小。λ越大跨越障碍物的能力就越强,反之就越弱,所以在两者对比时,可以通过这个公式来做参考。

3、WLAN直连

(1)称呼:平时也称为WiFi直连、WiFi Direct、WiFi P2P(Peer-To-Peer)、WLAN Direct

(2)定义:WLAN 直连,最初称为Wi-Fi P2P(Peer-To-Peer),是Wi-Fi协议簇中的一个,使设备之间能够以点对点的方式轻松连接,而不再需要像点对端那样有一个中介性质的无线接入点(Access Point,如路由器等)。

(3)使用场景:其使用范围从网页浏览到文件传输,以及同时与多个设备进行通信,能够充分发挥Wi-Fi的速度优势。文件传输需要借助第三方软件来实现,如没有第三方软件会出现可以连接配对成功,但没有传输界面的情况。

(4)传输性能:在传输速度与传输距离方面比蓝牙有大幅度提升,最大传输距离可达 200 米,最大传输速度为250Mbps(近乎是蓝牙的100倍),使用2.4GHz与5GHz频段。它支持一对一,以及一对多模式。

(5)P2P架构(角色):

P2P Device:它是P2P架构中角色的实体,读者可把它当做一个Wi-Fi设备。在组建P2P Group(即P2P Network)之前,智能终端都是一个一个的P2P Device。

P2P Group Owner(GO):P2P网络建立时会产生一个Group,GO可以理解为服务端。一个Group中有且只有一个Device扮演GO角色,而其他Device来扮演GC的角色。一个GO可以支持1个或多个(即图中的1:n)GC连接。举例:建立连接传输文件的双方,发送方为GO,接收方为GC。

P2P Group Client(GC):GC可以理解为Group中的客户端。举例:建立连接传输文件的双方,发送方为GO,接收方为GC。

Legacy Client:由于GO的功能类似于AP,所以周围那些不支持P2P功能的WIFI STA也能发现并关联到GO。这些WIFI STA被称之为Legacy Clients。

 

P2P Group示意图:

(6)WLAN直连与热点共存问题

技术层面:从技术角度来看,WLAN直连和热点都使用Wi-Fi技术,但它们工作的模式和目的不同。因此,在理论上,它们可以在同一设备上共存。

设备实现:然而,是否能在同一设备上同时启用Wi-Fi Direct和热点,还取决于设备的硬件(比如芯片)和软件实现。一些设备可能支持这种共存,而另一些则可能不支持。

操作系统版本:Android操作系统的不同版本可能对这两种功能的支持有所不同。因此,设备的操作系统版本也可能影响Wi-Fi Direct和热点的共存能力。

【朝花夕拾】蓝牙&WiFi常识篇的更多相关文章

  1. 【朝花夕拾】Android性能篇之(六)Android进程管理机制

    前言        Android系统与其他操作系统有个很不一样的地方,就是其他操作系统尽可能移除不再活动的进程,从而尽可能保证多的内存空间,而Android系统却是反其道而行之,尽可能保留进程.An ...

  2. 安卓布局修改基础常识篇之TextView属性

    [天使]安卓布局修改基础常识篇之TextView属性 在修改布局xml文件时需要熟练掌握一些属性,以下是TextView也就是文本的属性:android:autoLink 是否自动链接网址或邮箱地址: ...

  3. 【朝花夕拾】Android性能篇之(五)Android虚拟机

    前言 Android虚拟机的使用,使得android应用和Linux内核分离,这样做使得android系统更稳定可靠,比如程序中即使包含恶意代码,也不会直接影响系统文件:也提高了跨平台兼容性.在And ...

  4. 【朝花夕拾】Android性能篇之(一)序言及JVM

    序言        笔者从事Anroid开发有些年头了,深知掌握Anroid性能优化方面的知识的必要性,这是一个程序员必须修炼的内功.在面试中,它是面试官的挚爱,在工作中,它是代码质量的拦路虎,其重要 ...

  5. 【朝花夕拾】Android性能篇之(三)Java内存回收

    在上一篇日志([朝花夕拾]Android性能篇之(二)Java内存分配)中有讲到,JVM内存由程序计数器.虚拟机栈.本地方法栈.GC堆,方法区五个部分组成.其中GC堆是一块多线程的共享区域,它存在的作 ...

  6. 【朝花夕拾】Android性能篇之(七)Android跨进程通信篇

    前言 只要是面试高级工程师岗位,Android跨进程通信就是最受面试官青睐的知识点之一.Android系统的运行由大量相互独立的进程相互协助来完成的,所以Android进程间通信问题,是做好Andro ...

  7. [iOS笔试600题]二、常识篇(共有72题)

    [B]1.NSObject是一个根类,几乎所有的类都是从它派生而来.但是根类并不拥有真它类都有的alloc和init方法?[判断题] A. 正确 B. 错误 [A]2. UIResponder可以让继 ...

  8. 1-STM32物联网开发WIFI+GPRS(Wi-Fi入门篇)_简介

    这期的教程为公开教程将用这块开发板学习WIFI(SDK) 实现哪些功能呢!无非就是那写网络功能...但是涉及的挺多 最近一直在忙方案篇的内容,所以公开版的例程耽误了,现在开始补上 我准备改变一下提供资 ...

  9. ESP32-DOWDQ6蓝牙&Wifi 两个可单独控制的 CPU 内核

    乐鑫(Espressif Systems)研发设计IoT业内集成度最高.性能最稳定.功耗最低的无线系统级芯片. ESP32-D0WDQ6集成无线2.4 GHz Wi-Fi和蓝牙双模的单芯片方案,具有两 ...

  10. NB-IoT/LoRa/eMTC和蓝牙/WiFi的关系是互补还是替代?

    近年来,相继出现了许多物联网技术.WiFi.蓝牙.NB-IoT.LoRa.eMTC和其他技术为IoT实践提供了一流的技术支持通讯端口.拥有这么多技术,能够互相替代吗?还是能起到互补的作用?为低功耗广域 ...

随机推荐

  1. JAVA与.NET DES加密解密

    项目需要在两个系统间采用DES加密,一个系统为JAVA开发的,另外一个.Net开发的 在网上找了很多写法但加密出的数据两个系统都无法匹配, 在做了小修改以后终于可以用了,已经测试过 JAVA版本 im ...

  2. 一文搞定WeakHashMap

    写在前面 在缓存场景下,由于内存是有限的,不能缓存所有对象,因此就需要一定的删除机制,淘汰掉一些对象.这个时候可能很快就想到了各种Cache数据过期策略,目前也有一些优秀的包提供了功能丰富的Cache ...

  3. 将ASD光谱仪的.asd文件转为文本文件

      本文介绍基于ViewSpec Pro软件,将ASD地物光谱仪获取到的.asd格式文件,批量转换为通用的.txt文本格式文件的方法.   ASD光谱仪是英国Malvern Panalytical公司 ...

  4. balance_dirty_pages_ratelimited分析

    balance_dirty_pages_ratelimited分析 nr_dirtied_pause:当前task的脏页门限: dirty_exceeded:全局的脏页数超过门限或者该bdi的脏页数超 ...

  5. MIL-STD-1553B总线通信模块(1553B板卡)

    MIL-STD-1553B总线通信模块(1553B板卡)产品具有以下特点: 1.产品覆盖多种接口CPCI/PXI/PCI/PC104/PC104+/USB等,满足用户不同平台的使用要求: 2.自主知识 ...

  6. KubeSphere 多行日志采集方案深度探索 

    作者:大飞哥,视源电子运维工程师,KubeSphere 用户委员会广州站站长 采集落盘日志 日志采集,通常使用 EFK 架构,即 ElasticSearch,Filebeat,Kibana,这是在主机 ...

  7. Unreal RecastNavigation 开源项目详解

    0 前言 Recastnavigation是一个游戏AI导航库,像Unity,UE引擎中都集成了这个开源项目, HALO中使用的也是这个开源库.导航最重要的就是为NPC寻路,以及其他的寻路需求. 需要 ...

  8. vue3 + typescript + element-plus 大文件上传

    大文件上传 思路:前端获取 file 文件对象使用 slice 方法截取切片,然后异步上传切片,再合并 技术栈 TypeScript Vue3 Element-plus Nodejs 客户端实现 创建 ...

  9. Java面试题及答案整理汇总(2024最新版)

    前言 辞退了老板,准备找下家,又要开始面试了,不得不准备准备八股文,还是很有必要针对性的刷一些题,很多朋友的实战能力很强,但是理论比较薄弱,要多准备准备理论知识,攻克面试官.这是我在全网寻找稍微比较完 ...

  10. 侯捷C++高级面向对象编程_下_课程笔记

    friend(友元):相同Class的各个objects互为friends(友元) class complex{ public: complex (double r = 0, double I = 0 ...