晟辉智能制造

蓝牙技术原理如何开发并应用于多场景?

蓝牙技术原理、开发与应用

摘要

蓝牙是一种无线技术标准,用于在短距离内交换数据,建立个人局域网,它自1994年由爱立信公司发明以来,已经发展成为一个庞大的技术家族,深刻地影响了消费电子、物联网、工业自动化等多个领域,本文将从蓝牙的核心原理出发,介绍其技术演进,探讨开发实践,并列举其广泛的应用。

蓝牙技术原理如何开发并应用于多场景?-图1
(图片来源网络,侵删)

第一部分:蓝牙技术原理

要理解蓝牙,首先要明白它如何工作,其原理可以概括为以下几个核心方面:

核心概念:Piconet(微微网)

蓝牙网络的基本单元是 Piconet(微微网),一个Piconet由一个 主设备 和最多7个 从设备 组成。

  • 主设备:负责发起连接、同步时钟、决定通信时隙,一个Piconet中只能有一个主设备。
  • 从设备:被主设备连接,只能与主设备通信,不能直接与其他从设备通信(除非进入Sniff模式等特殊状态)。
  • 点对点:最简单的Piconet,只包含一个主设备和一个从设备。
  • Scatternet(散射网):一个蓝牙设备可以同时作为多个Piconet的主设备或从设备,从而将这些Piconet连接起来,形成一个更大范围的Scatternet,但这在实现上较为复杂,实际应用较少。

工作频段与调制方式

  • 频段:蓝牙工作在 4 GHz ISM(工业、科学、医疗) 频段,这是一个全球通用的免费频段,但也意味着充满了Wi-Fi、微波炉等其他设备的干扰。
  • 调制方式:为了在嘈杂的2.4GHz环境中可靠通信,蓝牙采用了独特的 跳频扩频 技术。

关键技术:跳频扩频

这是蓝牙抗干扰能力的核心。

  • 原理:蓝牙设备不是固定在一个频率上通信,而是在79个指定的信道(每个信道间隔1MHz)上以极快的速度(1600次/秒)进行切换。
  • 过程
    1. 主设备和从设备在建立连接时,会约定一个“跳频序列”。
    2. 通信时,双方按照这个序列同步地切换到下一个信道。
    3. 即使某个信道被Wi-Fi或其他信号干扰,通信也只是短暂中断,下一个跳频周期会自动切换到干净的信道,从而保证了整体的通信稳定性。
  • GFSK:早期蓝牙版本(如BR)使用高斯频移键控进行调制,数据率为1Mbps或2Mbps。

通信方式:BR/EDR 与 BLE

蓝牙技术主要分为两大技术路线,这也是理解蓝牙原理的关键。

蓝牙技术原理如何开发并应用于多场景?-图2
(图片来源网络,侵删)
A. 蓝牙基本速率/增强数据率

这是传统蓝牙,我们常用于连接耳机、音箱、鼠标等。

  • 特点
    • 连接稳定:基于电路交换,连接一旦建立,延迟较低且稳定。
    • 高吞吐量:支持较高的数据传输速率(BR: 1-3 Mbps, EDR: 2-3 Mbps)。
    • 高功耗:为了维持稳定连接和传输数据,功耗相对较高。
  • 应用:音频传输(A2DP协议)、文件传输(OBEX协议)、人机交互设备(HID协议)。
B. 蓝牙低功耗

这是现代物联网的基石,是蓝牙技术的革命性演进。

  • 特点
    • 极低功耗:通过“连接-断开”的广播模式和不连续的接收/发送来省电,一个纽扣电池可以让BLE设备工作数月甚至数年。
    • 低速率:数据传输速率较低(理论最高约2 Mbps),但对于传感器数据等小包数据完全足够。
    • 快速连接:设备可以快速进入和离开连接状态,非常适合需要频繁唤醒的场景。
  • 核心概念
    • 广播:设备可以周期性地发送广播包,不建立连接,让周围设备知道自己的存在和提供的服务,这是BLE设备被发现的唯一方式。
    • GATT:通用属性协议,BLE设备间的所有通信都基于GATT,一个设备作为 GATT Server(数据提供方),另一个作为 GATT Client(数据读取方)。
    • 服务与特征:GATT Server的数据以“服务”和“特征”的形式组织。
      • 服务:相关特征的集合,电池服务”、“心率服务”。
      • 特征:一个数据项,包含一个值、描述符和属性(可读、可写、可通知等),心率值本身就是一个特征,可以被客户端读取或订阅。

协议栈

蓝牙的通信是一层协议的堆叠,每一层都有其特定功能。

  • L2CAP (逻辑链路控制和适配协议层):在底层链路之上,为上层协议提供数据分段和重组服务。
  • ATT (属性协议):BLE核心协议,定义了Client如何读写Server的属性(即服务和特征)。
  • GATT (通用属性协议):建立在ATT之上,定义了数据应如何组织成服务和特征,并定义了发现、读、写、通知等操作。
  • 应用层协议:在GATT之上,定义了具体的应用场景,如 HID(人机接口设备)、GAP(通用访问协议,负责设备发现、连接等)、A2DP(音频传输协议)等。

第二部分:蓝牙技术开发

开发蓝牙应用,无论是作为主设备还是从设备,都需要遵循其协议栈,下面以最主流的 BLE开发 为例进行说明。

蓝牙技术原理如何开发并应用于多场景?-图3
(图片来源网络,侵删)

开发环境与硬件

  • 硬件平台
    • 主设备:智能手机(iOS/Android)、电脑、开发板(如Raspberry Pi、ESP32)。
    • 从设备:各种微控制器,如 Nordic nRF52系列TI CC254x/CC2640ESP32,这些芯片都集成了BLE控制器和射频收发器。
  • 开发环境
    • 主端开发:使用原生语言。
      • Android: Java/Kotlin + Android Bluetooth API
      • iOS: Swift/Objective-C + Core Bluetooth Framework
    • 从端开发:使用C/C++在微控制器上开发,通常需要厂商提供的SDK。
      • Nordic: nRF Connect SDK / Zephyr RTOS
      • TI: SimpleLink CC13xx/CC26xx SDK
      • ESP-IDF: Espressif官方开发框架

BLE 开发核心流程(以从设备为例)

开发一个BLE从设备,主要工作就是定义和实现自己的 GATT服务

步骤1:定义服务和特征 这是开发的第一步,也是最重要的一步,你需要设计你的设备能提供什么数据。

  • 示例:制作一个温湿度传感器
    • 服务:环境感知服务
      • UUID: 0x181A (标准服务,或自定义一个UUID)
    • 特征1:温度
      • UUID: 0x2A6E (标准特征)
      • 属性:可读 + 可通知
      • 数据格式:一个16位整数,单位为0.1摄氏度 (25.5°C 存储为 255)
    • 特征2:湿度
      • UUID: 0x2A6F (标准特征)
      • 属性:可读 + 可写
      • 数据格式:一个16位整数,单位为0.1% (60.5% 存储为 605)

步骤2:实现固件逻辑 使用SDK提供的API,将上述定义实现到代码中。

  1. 初始化BLE栈:启动蓝牙,设置设备名称。
  2. 添加GATT服务:将你定义的服务和特征注册到BLE协议栈中。
  3. 实现回调函数:当主设备进行特定操作时,BLE栈会调用你的回调函数。
    • 读回调:当主设备读取温度特征时,此函数被调用,你需要返回当前的温度值。
    • 写回调:当主设备写入湿度特征时,此函数被调用,你可以处理写入的数据(设置一个目标湿度)。
    • 通知/指示回调:当主设备订阅了温度通知后,你需要主动调用发送通知的函数,将最新的温度数据推送给主设备。
  4. 处理广播:设置广播包的内容,至少包含设备名称,还可以包含一些服务UUID,方便主
分享:
扫描分享到社交APP
上一篇
下一篇