ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

蓝牙简介

2021-05-13 18:03:41  阅读:1054  来源: 互联网

标签:UUID service 简介 蓝牙 characteristic BLE 设备


转载自网上大佬的文档,具体链接不详

蓝牙

蓝牙分为传统蓝牙和BLE蓝牙两种连接方式。对于苹果的iOS系统来讲传统蓝牙需要经过苹果的安全认证,因此都是走BLE蓝牙通道通道进行通信。

BLE是Bluetooth Low Energy的缩写,又叫蓝牙4.0,区别于蓝牙3.0和之前的技术。

l  蓝牙双模简称BR(统蓝牙和BLE蓝牙两种都有),商标为Bluetooth Smart Ready;

l  单模简称BLE或者LE,商标为Bluetooth Smart

Android是在4.3后才支持BLE,这说明不是所有蓝牙手机都支持BLE,而且支持BLE的蓝牙手机一般是双模的。双模兼容传统蓝牙,可以和传统蓝牙通信,也可以和BLE通信,常用在手机上,Android4.3和IOS4.0之后版本都支持BR,也就是双模设备。

蓝牙传输的最大数据包MTU在不同手机和设备上也是不同,一般是通过设备和手机之间进行通信约定的。

iOS可以通过maximumWriteValueLengthForType获得设备的最大数据包(iOS9以后);

https://developer.apple.com/documentation/corebluetooth/cbperipheral/1620312-maximumwritevaluelengthfortype?language=objc

Android则是在API 21(Android 5.1)有一个 BluetoothGatt 新增一个requestMtu()的方法来调整MTU。

https://developer.android.com/reference/android/bluetooth/BluetoothGatt

可以通过“nRFConnect-4.6.1.apk”的第三方应用,可以查看支持的MTU大小,如下图:

 

 

 

MTU大小调整

1.3.1 传统蓝牙

传统蓝牙3.0根据802.11适配层协议应用了Wi-Fi技术,极大提高了传输速度。蓝牙3.0的数据传输率提高到了大约24Mbps

1、传统蓝牙采用的是SPP(Serial Port Profile)协议进行数据传输。

2、SPP的UUID:00001101-0000-1000-8000-00805F9B34FB

3、手机一般以客户端的角色主动连接SPP协议设备

1.3.2 BLE蓝牙

BLE蓝牙的最大特点就是低功耗,而低速率和简单的交互协议是降低功耗的重要组成部分,因此它的的传输速率只有2Mbps。

BLE关键术语和概念的摘要:

一个ble蓝牙设备有多个包括多个Profile。

一个Profile中有多个服务Service(通过服务的uuid找到对应的Service)。

一个Service中有多个特征Characteristic(通过特征的uuid找到对应的Characteristic)

一个Characteristic中包括一个value和多个Descriptor(通过Descriptor的uuid找到对应的Descriptor)

其次,要知道一些名词:

1、profileprofile

可以理解为一种规范,一个标准的通信协议,它存在于从机中。

蓝牙组织规定了一些标准的profile,例如 HID OVER GATT,防丢器,心率计等。

每个profile中会包含多个service,每个service代表从机的一种能力。

2、service

可以理解为一个服务,在ble从机中,通过有多个服务,例如电量信息服务、系统信息服务等,每个service中又包含多个characteristic特征值。

每个具体的characteristic特征值才是ble通信的主题。比如当前的电量是80%,所以会通过电量的characteristic特征值存在从机的profile里,这样主机就可以通过这个characteristic来读取80%这个数据

3、characteristic

特征值,ble主从机的通信均是通过characteristic来实现,可以理解为一个标签,通过这个标签可以获取或者写入想要的内容。

官方特征值定义:

https://www.bluetooth.com/specifications/gatt/characteristics/

4、UUIDUUID

统一识别码,我们刚才提到的service和characteristic,都需要一个唯一的uuid来标识UUID的格式:00001101-0000-1000-8000-00805F9B34FB

综上,每个从机都会有一个叫做profile的东西存在,不管是上面的自定义的simpleprofile,还是标准的防丢器profile,他们都是由一些列service组成,然后每个service又包含了多个characteristic,主机和从机之间的通信,均是通过characteristic来实现。

 

  

BLE协议栈架构图

其中有一个UUID非常特殊,它被蓝牙联盟采用为官方UUID,这个UUID如下所示:

 

蓝牙联盟将自己定义的attribute或者数据只用16bit UUID来表示上图xxxx位置,其实它也是128bit。

例如设备的UUID扫描结果如下图所示:

 

 

UUID实例

l  第1个UUID 0x2A05标识:

Service Changed      org.bluetooth.characteristic.gatt.service_changed       0x2A05

l  第2个UUID 0x2A00标识:

Device Name            org.bluetooth.characteristic.gap.device_name              0x2A00    

 

Device Name长度可以到248字节,但一般不会需要那么长的名字,一般会建议最长到达40字节就好了。

l  第3个UUID 0x2A01标识:

Appearance     org.bluetooth.characteristic.gap.appearance        0x2A01

 

Appearance即表明这是个什么设备,如鼠标?键盘?等等

l  第4个UUID 0x2AA6标识:

Central Address Resolution     org.bluetooth.characteristic.gap.central_address_resolution      0x2AA6

 

BT 4.2添加的新特性。因为在BT 4.2中,为了提高BT的安全性(原来SMP的方式是可以破解的),加入了Random Address的内容。这里的Central Address Resolution就是用来表明暴露GAP Service的这个Central设备,是否支持Resolvable Private Address(RPA)的。

Peripheral设备通过读对方Central设备的GAP Service的Central Address Resolution,就能知道其是否支持RPA了,如果其支持,那Peripheral就可以在自己的Directed Advertisement中使用RPA了。如果不支持,那还是只能使用public地址了。

关于蓝牙的public地址,private地址,请参考:

https://blog.csdn.net/suxiang198/article/details/47730649

l  第5-6个UUID 0xFFF1和0xFFF2标识分别是读取和写入;

l  第7-8个UUID标识也是读取和写入;

l  第9-11个UUID标识是支持微信的接口;

 

一般读,写和通知的UUID 就是 characteristic UUID

另外注意,连接设备前,请先关闭扫描蓝牙,否则连接成功后,再次扫描会发生阻塞,扫描不到设备。

标签:UUID,service,简介,蓝牙,characteristic,BLE,设备
来源: https://www.cnblogs.com/huawublog/p/14765581.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有