BLE蓝牙设备开发

news/2024/10/20 20:51:32/

(ps. 根据网上的知识进行的学习总结)

1、蓝牙模块概述

1.1 蓝牙模块

蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术,能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。利用“蓝牙”技术,能够有效地简化移动通信终端设备之间的通信,也能够成功地简化设备与因特网Internet之间的通信,从而数据传输变得更加迅速高效,为无线通信拓宽道路。蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段。其数据速率为1Mbps。采用时分双工传输方案实现全双工传输。

蓝牙分为三种:Bluetooth Smart Ready、Bluetooth Smart(Smart是低功耗蓝牙的标识)以及标准 Bluetooth。基本上来说,Bluetooth Smart Ready适用于任何双模蓝牙4.0的电子产品;Bluetooth Smart是应用在心率监视器或计步器等使用扭扣式电池并传输单一的装置;Bluetooth Smart Ready的相容性最高,可与Bluetooth Smart及标准蓝牙相通,标准蓝牙则无法与Bluetooth Smart相通。

蓝牙的系统构成如图1.1所示,其中线射频单元(Radio)负责数据和语音的发送和接收,特点是短距离、低功耗。蓝牙天线一般体积小、重量轻,属于微带天线;基带或链路控制单元(Link Controller)进行射频信号与数字或语音信号的相互转化,实现基带协议和其它的底层连接规程;链路管理单元(Link Manager)负责管理蓝牙设备之间的通信,实现链路的建立、验证、链路配置等操作;图中的紫色部分为蓝牙软件协议。
图1.1 蓝牙系统构成
图1.1 蓝牙系统构成

BLE是Bluetooth Low Energy的缩写,又叫蓝牙4.0,区别于蓝牙3.0和之前的技术,主要用于实现移动智能终端与周边配件之间的持续连接,是功耗极低的短距离无线通信技术,并且有效传输距离被提升到了100米以上,同时只需要一颗纽扣电池就可以工作数年之久。BLE设备分单模和双模两种,双模简称BR,单模简称BLE或者LE,双模兼容传统蓝牙,可以和传统蓝牙通信,也可以和BLE通信,常用在手机上,单模只能和BR和单模的设备通信,不能和传统蓝牙通信,由于功耗低,待机长,所以常用在手环的智能设备上。

Beacon是基于BLE技术实现的物理设备,能够使用BLE技术向周围发送自己“特有的ID”,接收到该ID的应用软件会根据接收到的ID和信号源产生互动。不同功率Beacon设备的信号范围在10m~100m不等,当智能平板或其他设备进入信号范围后,能够与Beacon设备进行交互通信。

1.2 蓝牙广播包

蓝牙模块发送数据、被其他蓝牙设备发现都依赖于广播包,接下来对BLE报文进行介绍。

BLE报文的结构如图1.2所示,由图中的几个域构成,对于多字节的域,在传输时遵循字节序和比特序:(1)字节序:大多数多字节域是从低字节开始传输的;(2)比特序:各个字节传输时,每个字节都是从低位开始。
图1.2 BLE报文结构
在这里插入图片描述

图1.2 BLE报文结构

(1)前导:8bit的交替序列,为01010101或10101010,接收机可以根据前导的无线信号强度来配置自动增益控制,确定“0”、“1”比特所使用的频率。

(2)接入地址:
接入地址包括广播接入地址和数据接入地址。广播接入地址固定为0x8E89BED6;数据接入地址是一个随机值,不同的连接有不同的值。数据接入地址有以下几个原则: 数据接入地址不能超过6个连续的0或1;数据接入地址的值不能与广播接入地址相同;数据接入地址的4个字节的值必须互补相同;数据接入地址不能有超24次的比特翻转;数据接入地址的最后6个比特需要至少两次的比特翻转。符合上面条件的有效随机数据接入地址大概有231个。

(3)PDU(协议数据单元)
PDU的报头包含4bit广播报文类型、2bit保留位、1bit发送地址类型和1bit接收地址类型。

广播报文类型共有7种:ADV_IND:通用广播指示;ADV_DIRECT_IND:定向连接指示;ADV_NONCONN_IND:不可连接指示;ADV_SCAN_IND:可扫描指示;SCAN_REQ:主动扫描请求;SCAN_RSP:主动扫描响应;CONNECT_REQ:连接请求。

发送地址类型和接收地址类型指示了设备使用公共地址(Public Address)还是随机地址(Random Address)。公共地址和随机地址的长度为6个字节,BLE设备至少要拥有这两种地址类型中的一种,也可以同时拥有两种地址类型。
PDU长度包括6bit净荷长度和2bit保留位。对于广播报文,长度域包含6个比特,有效值的范围是“6 ~ 37”;对于数据报文,长度域包含5个比特,有效值的范围是“0 ~ 31”。广播报文除了最多31个字节的数据之外,还要包含6个字节的广播设备地址,报文长度最多为37个字节,因此有效值的范围是“6 ~ 37”。

PDU的数据字段结构如图1.3所示,由有效数据部分和无效数据部分组成。
图1.3 广播和扫描响应的数据格式
图1.3 广播和扫描响应的数据格式

数据报文的有效数据部分包含N个AD Structure,每个AD Structure由Length,AD Type和AD Data组成。AD Type的类型定义在SDK的hci_stru.h中,如下图所示:
图1.4 AD Type类型定义
图1.4 AD Type类型定义

BLE采用的是24位CRC校验。CRC对报头、长度和数据进行计算。24位CRC的生成多项式如下:
校验

2、BLE协议栈分层

2.1 协议栈分层介绍

BLE协议栈中的重点则是与具体蓝牙应用相关的GAP和GATT层。
如图3.1为协议栈的分层示意图,其中Physical Layer为物理层,“通信介质”的定义是由物理层负责;Link Layer:负责在这些物理介质上收发数据,与此同时,控制物理介质收发相关的参数,可在两个设备之间建立用于点对点通信的Logical Channel;HCI用于定义Host和Controller之间的通信协议。

在Host层中,L2CAP负责将Logical Channel分为一个个的L2CAP Channel,以便提供应用程序级别的通道复用;
ATT能够将温度、电量等数据以“Attribute”的形式抽象出来,提供方法供远端设备读取、修改这些属性的值;
GAP定义了蓝牙设备如何发现和建立与其他设备的安全或不安全的连接,其中具体包括:设备发现,创建连接,终止连接,安全结构的初始化和设备连接参数配置等;
GATT是一个在蓝牙连接之上的发送和接收数据的通用规范。
图3.1 BLE协议栈分层示意图
图2.1 BLE协议栈分层示意图

2.2 GATT层

GATT层可以说是一个profile framework,包含多种服务,其中profile的结构如图所示,其内部定义了蓝牙设备需要提供的服务,每个Service包含一个或者多个Characteristic(特征),Characteristic则是GATT profile中最基本的数据单位,由一个Properties、一个Value、一个或者多个Descriptor组成。Properties定义了characteristic的Value如何被使用,以及Descriptor如何被访问,Characteristic Value是特征的实际值,Characteristic Descriptor则保存了一些和Characteristic Value相关的信息。
在这里插入图片描述

3 蓝牙协议栈开发

实际上BLE蓝牙设备的开发也就是对BLE协议栈的开发。
我们需要在GAP层定义蓝牙设备发出的广播包信息、广播频率、超时时间、发射功率、蓝牙MAC地址、设备SN码等信息,在GATT层配置服务的UUID、不同服务的数据收发profile规范配置。
下面这张图就是对某一个蓝牙设备定义的不同蓝牙服务,可以进行数据的上行和下行,采用128位UUID。
在这里插入图片描述

4 参考学习网站

蓝牙网

Beacon浅析

[蓝牙] 1、蓝牙核心技术了解(蓝牙协议、架构、硬件和软件笔记)

简文介绍蓝牙Beacon和蓝牙网关的区别及工作原理

蓝牙beacon入门教程

蓝牙3-GATT

蓝牙信标beacon是怎么实现商场室内定位及优惠推送

浅谈蓝牙低功耗(BLE)的几种常见的应用场景及架构(科普类干货)

Android BLE学习笔记

The 16-bit UUID Numbers

低功耗蓝牙BLE之广播

BLE(5)—— 广播态数据包组成(Advertising Packets PDUs)

蓝牙4.0BLE抓包(二) – 广播包解析

独立按键消抖与松手检测

一文读懂蓝牙低功耗BLE的应用市场

深入浅出低功耗蓝牙(BLE)协议栈


http://www.ppmy.cn/news/461312.html

相关文章

微信小程序使用蓝牙通信协议连接硬件整理总结(初始化蓝牙、搜索设备、展示设备)

前言 最近我们上线了个小程序的项目,全国独家的~主要就是检测人身体的一些基本生命体征的,比如检测心电图、心率、血氧饱和度、血糖、尿酸等等,因为产品是我们自主研发的,硬件也是我们自己造的,所以软件也是由我们整个…

蓝牙Bluetooth模块介绍

1,蓝牙模块——基础知识介绍 https://blog.csdn.net/wwt18811707971/article/details/77833602 2,常见蓝牙模块介绍和AT指令 https://blog.csdn.net/qlexcel/article/details/103815926 3,app怎么传信息给蓝牙模块_如何使用蓝牙模块&…

Android - 蓝牙开发

文章目录 科普SIG类型制式选择逻辑链路控制适配协议 (L2CAP)L2CAP的功能 蓝牙框架和 RFCOMM 协议蓝牙安全白名单机制 编程蓝牙权限Classic BluetoothBluetooth Low Energy术语角色 & 职能查找 BLE 设备连接设备上的 GATT 服务器绑定服务蓝牙设置连接到设备连接到 GATT 服务…

手把手教你智能硬件开发(四) 蓝牙传输

第4节 蓝牙传输 智能硬件基本上都需要和手机相连,然后让手机控制这些硬件的工作。相连的方式不外乎以下三种, 数据线有线连接,通过一根数据线把智能硬件和手机连接起来。采用这种方式,需要一个特殊的带USB HOST功能的扩展板&…

KT6368A国产蓝牙BLE芯片驱动程序硬件注意事项

目录 1.1 简介 KT6368A芯片是一款支持蓝牙双模的纯数据芯片,蓝牙5.1版本。芯片的亮点在超小尺寸,超级价格。以及简单明了的透传和串口AT控制功能。大大降低了嵌入蓝牙在其它产品的开发难度和成本 1.2 硬件说明 1.3 芯片功耗初步说明 1.4 芯片的简单…

Android硬件通信之 蓝牙通信

一,简介 1.1 现在的手机设备基本上都支持蓝牙模块,蓝牙与蓝牙之前可以相互通信,所以只要物联网机器上配有蓝牙模块,就可以用手机蓝牙连接机器蓝牙,从而和机器通信 1.2 蓝牙按协议常见可以分为经典蓝牙和低功耗蓝牙&a…

电赛小车常用硬件解析(蓝牙遥控,循迹)

智能小车硬件解析 (蓝牙遥控、循迹)智能小车硬件解析 智能小车硬件解析前言一、单片机1.什么是单片机2.STM32F103C8T63.小车项目总览4.器材清单 二、电机1.直流减速电机(1)驱动方法(2)电机参数 2.带编码器的…

BlueTooth: 蓝牙介绍

蓝牙简介: “蓝牙”是一种大容量近距离无线数字通信技术标准,其目标是实现最高数据传输速率1Mbps、最大传输距离为10厘米~10米,通过增加发射功率可达到100米。 蓝牙技术是爱立信、IBM等5家公司在1998年联合推出的一项无线网络技术…