蓝牙基础知识

1,881 阅读5分钟

前言

笔者最近接触了蓝牙的项目,在本文中笔者将会记录下蓝牙的基础知识。

蓝牙概念及简介

首先我们看下蓝牙和低功耗蓝牙的概念。

蓝牙(Bluetooth® ):是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换(使用2.4~2.485GHz的ISM波段的UHF无线电波)。 引自360百科 蓝牙

蓝牙低功耗Bluetooth Low Energy,或称Bluetooth LEBLE,旧商标Bluetooth Smart[1])也称蓝牙低能耗低功耗蓝牙,是蓝牙技术联盟设计和销售的一种个人局域网技术,旨在用于医疗保健、运动健身、信标[2]、安防、家庭娱乐等领域的新兴应用。[3]相较经典蓝牙,低功耗蓝牙旨在保持同等通信范围的同时显著降低功耗和成本。

引自维基百科 蓝牙低功耗

蓝牙目前最新版本是5.2版本,由蓝牙技术联盟在2020年1月发布。蓝牙有1.x、2.x、3.x、4.x、5.x等多个版本。低功耗蓝牙模式是在蓝牙4.0版本的时候推出的。从1.0版本到5.2版本的经典蓝牙,最大传输速度在723.1Kbit/s到48Mbit/s之间,传输距离在10米到300米。低功耗蓝牙主要的应用场景是省电。从4.0版本到5.2版本的低功耗蓝牙的传输速度的上限为2Mbit/s,传输距离大于100米。

在我们日常生活中,最常用到蓝牙的可能是蓝牙耳机了。除此之外可能还用蓝牙技术给手机传送文件,可能还使用过蓝牙音箱、蓝牙门锁等。

蓝牙架构简介

蓝牙使用架构

CBTechnologyFramework

对于iOS开发者来说,使用蓝牙相关功能时需要使用引入 CoreBluetooth framework。Core Blue framework 提供了 iOS和 mac 应用和设备交互的类,

这些类配备了蓝牙低功耗技术。比如说我们的 App 可以发现低功耗设备并且和低功耗设备交互,比如心率检测和温度监测仪。macOS10.9及iOS6之后的设备可以和外围低功耗外围设备进行交互。蓝牙低功耗外设可以给mac和iOS设备提供数据。

蓝牙低功耗无线技术基于蓝牙4.0规格,蓝牙4.0定义了一些列的协议用于低功耗设备间交互。Core Bluetooth framework 是蓝牙低功耗协议栈的抽象。它隐藏了低层级的规格细节。这方便我们可以更容易开发和蓝牙低功耗设备交互的App。

中心设备和外围设备

中心设备和外围设备是Core Bluetooth 的关键角色。

peripherals 外围设备简称外设、central 中心设备

A peripheral typically has data that is needed by other devices.

外设通常是提供数据的设备

外设通常有提供给其他设备的数据。

A central typically uses the information served up by peripherals to accomplish some particular task.

中心设备通常是使用外设提供的信息以完成特定任务。比如配有蓝牙低功耗技术的说一个温度计可能提供室内温度给App,然后App便能够友好地显示出来室内温度。

Central and peripheral devices

这里中心设备像是一个客户端,用来向服务端请求数据。

外围设备就像是一个服务端,用来向客户端响应数据。

GATT

GATT协议提供了大量用于客户端的命令以发现有关服务器的信息。这包括:

  • 发现所有主要服务的UUID
  • 使用指定UUID查找一个服务

引自维基百科 蓝牙低功耗

ATT

服务、特征和描述符被统称为属性(attributes),并以UUID标识。实现者可能会为所用的专有格式挑选一个随机或伪随机UUID,但蓝牙技术联盟已预留一系列UUID(范围xxxxxxxx-0000-1000-8000-00805F9B34FB)[39])供标准属性使用。为提高效率,协议中的标识符以16位或32位值表示,而非完整UUID所需的128位。

引自维基百科 蓝牙低功耗

L2CAP

逻辑链路控制与适配协议(L2CAP)常用来建立两个使用不同高级协议的设备之间的多路逻辑连接传输。提供无线数据包的分割和重新组装。

引自维基百科 蓝牙低功耗

蓝牙开发流程

简单来说我们日常开发中的流程如下:

  1. 创建蓝牙中心管理者;
  2. 扫描发现外围设备;
  3. 连接设备;
  4. 发现服务,发现特征值;
  5. 给指定外设添加监听
  6. 给已连接设备发送数据
  7. 外设给中心设备通知数据时,监听过指定外设特征值的方法回调。

外设可以向空气中广播数据,中心设备扫描附近的外设;

当中心设备通过外设广播的数据,找到了特定的外设后;

中心设备就会请求连接外设;然后开始探索外设的数据;

外设负责用合适地方式给中心设备以响应。

Advertising and discovery

上图中外设就在广播数据,中心设备就用于分析外设广播的数据,以确定是否是自己想要连接的设备。如果是的话,就可以展示到自己可连接的列表中。

A peripheral's service and characteristics

上图中的心率检测仪是一个外设,心率外设有心率服务,心率服务有相应的特征。我们的蓝牙中心管理者可以通过相应API去发现指定服务的外设,可以查询指定服务、指定特征的外设,以获取到指定的外设实例,并且对相应外设做监听或其他服务。

参考学习网址

Core Bluetooth Programming Guide
蓝牙
蓝牙低功耗