前言

蓝牙(Bluetooth)技术的普遍认知常局限于短距离、低速率和低功耗等传统特性。然而,随着技术标准的演进与工程实践的深化,现代蓝牙技术已在多个性能维度上取得重大突破,例如实现长达 7 公里 的远距离通信、支持 720p 高清视频流传输,并在特定高负载场景下展现出相应的功耗需求。

蓝牙技术的应用范畴也已远超个人音频设备。在小米“人车家全生态”战略中,小米澎湃智联(Xiaomi HyperConnect)将蓝牙技术定位为构建跨设备无缝协同体验的核心连接技术。该战略的实现,高度依赖于 openvela 开源物联网操作系统所提供的先进蓝牙技术栈与解决方案。

本文旨在系统性地介绍 openvela 的蓝牙技术体系。内容将涵盖:

  • 现代蓝牙技术的前沿特性。

  • openvela 蓝牙的软件架构设计。

  • 其在功能、性能与资源占用方面的核心优势。

  • 以及为开发者提供的便捷开发与测试工具链。

通过本文,读者将对 openvela 如何构建一个功能全面、性能卓越且体验优异的终端蓝牙解决方案获得深入理解。

一、蓝牙技术概述

蓝牙(Bluetooth)技术是一种工作在 2.4GHz 工业、科学和医用(ISM,Industrial Scientific Medicine)免授权频段的无线通信标准。该频段内存在多种无线系统,如 Wi-Fi、ZigBee 等,易产生同频干扰。为应对此挑战,蓝牙采用了跳频扩频(Frequency-Hopping Spread Spectrum, FHSS)技术,通过在多个信道间高速切换,主动规避被干扰的信道,从而保障通信链路的稳健性。

1、关键技术特性与性能指标

公众对于蓝牙技术的性能认知可能存在局限。以下将对蓝牙在通信距离、数据速率和功耗方面的实际能力进行阐述。

  • 蓝牙通信距离

    虽然日常情况下大家使用的蓝牙耳机一般都是随身佩戴,但是通过一定的功率设置,音频传输可以轻松到达 160 米,并且做到流畅播放。使用蓝牙的 Coded PHY,并对射频通过一定的优化,小米公司已经可以将开放环境中的蓝牙通信距离轻松做到 公里甚至更远。

  • 蓝牙通信速率

    相比于 Wi-Fi,蓝牙的速率是不算高的,但是可能跟大家认知不太一致的是,在对视频进行一定程度的压缩后,蓝牙可以传输 720p 分辨率的视频。而且目前在研的 HDT(Higher Data Throughput)技术方案,空中传输速率可以达到 7.5 Mbps,基本已经相当于 Wi-Fi MCS0 在 20MHz 带宽下的速率。

  • 蓝牙通信功耗

    蓝牙的功耗表现呈现场景依赖性。在短距离、低占空比的传感应用中,其功耗极低,足以支持设备依靠单颗纽扣电池工作数年。然而,在需要高发射功率以实现远距离通信,或需要高吞吐率进行持续数据传输的场景下,蓝牙系统的功耗亦会相应显著增加。

2、蓝牙协议体系架构

蓝牙跟 Wi-Fi 有一个很大的不同是:Wi-Fi 主要是对物理层和链路层进行规范定义(Wi-Fi Mesh,KVR 等除外);但蓝牙协议族,从物理层、链路层,到网络层、传输层,再到应用层都进行了非常详细的规范和定义。

蓝牙技术联盟(SIG)官方发布的规范文件(Specification)主要包含以下三类:

  • Protocol(一般译作“协议”):定义了数据传输和通信的底层规则,不仅包括 ATT,L2CAP 等蓝牙 SIG 自己定义的协议,还包括很多其它组织定义的协议,比如 RFCOMM 中引用的 ETSI TS 07.10。

  • Profile:很多人会翻译作“配置文件”,但其实它也是一种“协议”,但更多讲得是上述 Protocols 是如何在一起协作,并满足一定的应用场景需求的,所以理解并翻译为应用层协议应该是更通俗易懂并且更加准确的。

  • Service:如果单单翻译作“服务”,很容易让人与 SDP(Service Discovery Protocol,服务发现协议) 协议中的 Service(服务)产生混淆。其实它本质上也是一种“协议”,而且是一种应用层的 Protocol,但它更强调是作为 Server 端(尤其是 GATT Server)角色提供各种“服务”。所以理解并翻译为应用层服务端协议应该是更通俗易懂且准确的。

在上述规范中,核心规范(Core Specification)居于基础地位,它定义了蓝牙技术的两种主要工作模式:

  • 经典蓝牙(BR/EDR):蓝牙发布伊始就支持的工作模式。

  • 低功耗蓝牙(BLE):蓝牙 4.0 发布时新增的工作模式,并且还在不断完善。

因为工作机制大不相同,基本可以把他们理解为同一蓝牙框架下的两种协议(不同的调制方式、不同的编码等等)。前面介绍的蓝牙的几个认知误区就是跟这两种工作模式紧密相关的。需要注意,这里的低功耗蓝牙模式并不意味着低功耗、低码率、短距离,相反,它是可以做到高功率、高码率、长距离的。

3、标准化应用场景

基于上述协议体系,蓝牙技术联盟针对各类应用场景定义了详尽的规范(Specification),包括 Protocol、Profile 和 Service,以确保跨厂商设备的互联互通。主要应用场景包括:

  • 音频播放场景:

    • 经典蓝牙:A2DP/AVDTP、AVRCP/AVCTP

    • 低功耗蓝牙:CAP、BAP、ASCS、PACS、BASS、TMAP、VCP/VCS、MCP/MCS

  • 语音通话场景:

    • 经典蓝牙:HFP

    • 低功耗蓝牙:CAP、BAP、ASCS、PACS、TMAP、VCP/VCS、CCP/TBS

  • 数据传输场景,根据具体的数据业务又分了很多的子类:

    • 经典蓝牙:PAN

    • 低功耗蓝牙:IPSP

    • 电话本数据:PBAP

    • 短消息/邮件数据:MAP

    • 文件数据:OPP

    • 图像数据:BIP

    • TCP/IP 网络数据:

    • 串口数据:SPP

    • 拨号数据:DUN

    • 运动健康数据:主要包括低功耗蓝牙的 BPP/BPS、CPP/CPS、FMP/FMS、WSP/WSS 等。

    • 传感数据:主要包括低功耗蓝牙的 BSP/BSS、ESP/ESS。

  • 人机交互场景:

    • 经典蓝牙:HID

    • 低功耗蓝牙: HOGP

  • Mesh 组网场景:主要包括 MM、MP、MCDP 等。

  • 测距定位场景:主要包括低功耗蓝牙的 RaP/RaS 等。

4、标准化与实现模型

  • 标准化与认证:为保证全球范围内数十亿蓝牙设备间的互操作性,所有希望使用“蓝牙”商标的产品都必须通过蓝牙技术联盟(SIG)的强制性兼容性认证测试。遵循标准规范是降低兼容性风险、确保用户体验的根本途径。

  • 灵活的实现模型:蓝牙还允许开发者将蓝牙视作一种类似于 Wi-Fi 的物理层,通过将蓝牙集成到 TCP/IP 协议族,就可以复用所有现有的网络工具和应用(在这种用法下,网络应用仍旧依赖于TCP/IP,他们无法区分到底用的是 Wi-Fi,还是蓝牙)。在软件上,一般通过 Socket 来访问 TCP/IP 网络,也可以将蓝牙的SPP/RFCOMM、L2CAP 等通信能力集成进 Socket,让应用软件可以非常方便地将他们的现有的网络应用适配到蓝牙上(在这种用法下,应用需要使用基于蓝牙传输定义的 Socket 来进行数据传输,而不再是标准的 TCP/IP 网络传输层)。

二、openvela 蓝牙技术架构

openvela 蓝牙的整体软件架构遵循分层设计思想,自上而下可分为应用层、框架接口层和蓝牙服务层,各层之间通过标准接口进行通信,实现了高度的模块化和可扩展性。其详细架构如下图所示:

 

openvela 蓝牙架构图

openvela 蓝牙架构图

 

  1. openvela 蓝牙 Framework 为 Android Native、可穿戴、音箱和 IoT 等应用提供了统一的编程接口 API。

  2. 这些 API 提供的蓝牙能力包括开关、扫描、连接、配对等,均由一套完善的蓝牙服务组件来完成。

  3. 为了支持多种协议栈,蓝牙 Framework 定义了一套统一的协议栈适配层接口 SAL API,使各个三方协议栈,可以方便地接入 openvela。接入新的协议栈时,除了适配 SAL API,还需要针对 OS 内核 NuttX 的 POSIX API 来适配,从而使其可以更高效地运行在 NuttX 上。

蓝牙相关的代码仓库:

  • frameworks_bluetooth:该仓库旨在为应用程序开发者提供丰富的蓝牙应用编程接口,包括 API 接口层、各种 Service 服务组件层、SAL 协议栈适配层和 HAL 硬件适配层。此外,仓库还配备了 bttool 等工具,一方面可直接用于测试蓝牙功能;另一方面可用于蓝牙应用编程时相关 API 的 Sample 参考代码。
  • external_zblue:该仓库源自于 Zephyr 社区,但 openvela 对很多功能进行了补充和增强。
  • docs:该仓库提供更多关于蓝牙模块的技术文档。

三、openvela 蓝牙核心优势

openvela 蓝牙为所有智能设备提供一个功能丰富、性能优、稳定性高、兼容性强、功耗低、资源占用少的开源蓝牙端到端轻量解决方案,并期望能够成为终端用户体验最佳的蓝牙解决方案。

1、功能丰富

基础蓝牙能力

openvela 蓝牙目前支持多种开源和闭源协议栈,如 Zephyr、Bluez、Bluedroid、Barrot 等。其中小米对于 Zephyr 的蓝牙协议栈进行了大量的增强,不少代码正在回流 Zephyr 社区。下表高亮了 openvela 近期对 Zephyr 协议栈做出的主要增强(红色标记部分)。

 

openvela 对 Zephyr 蓝牙协议栈的主要增强

openvela 对 Zephyr 蓝牙协议栈的主要增强

 

跨设备互联互通

小米澎湃智联(Xiaomi HyperConnect)跨端智联技术,使得“人车家全生态”中各个设备可以实现实时动态组网,所有设备协同如一个整体,从而带来划时代互联体验。通过下面这个视频,大家可以对这些能力有一个初步的认识。大家也可以在小米官网(https://hyperos.mi.com/continuity)查询更多互联互通能力的详细介绍。

 

通过 openvela 蓝牙提供的多样化的通信能力,可以赋能可穿戴设备、语音音箱网关、智能家居等设备,从而支持多样化的互联互通场景。

 

无网通

在地下车库、荒野徒步、应急救援等场景下,往往没有蜂窝网也没有因特网,如何使得两个终端之间可以直接通信是不少用户期望实现的通信需求。基于蓝牙技术,可以轻松实现类似的无网通、对讲功能。

 

离网点对点通信

离网点对点通信

通过 openvela 蓝牙提供的 Long Range 能力,可以轻松使得语音通信距离达到 200m 以上。另外借助于射频能力的优化,甚至可以将通信距离提升到数公里

 

蓝牙车钥匙

虽然电子车钥匙已经非常方便了,但是随着手机、手表等终端上支持了车钥匙功能,大家已经基本不再习惯于去带车钥匙来使用车辆的解闭锁功能了。但是如果用户忘记带手机或者手机没电的情况下,如何能够使用手表进行近场解闭锁呢?这时候,蓝牙车钥匙功能应运而生。而且除了解闭锁功能,通过蓝牙车钥匙应用还可以近场控制车辆。

 

蓝牙车钥匙

蓝牙车钥匙

通过 openvela 蓝牙提供的连接和扫描能力,以及场景化的参数控制技术,在可穿戴设备上,不仅可以实现 100% 的解锁成功率,还可以将功耗降低 40%。

 

测距和定位

可以基于蓝牙的 RSSI 进行距离的估算,但如果想获得比较高的准确率,往往要借助于额外的 UWB 芯片进行高精度的距离测量。但这个方案具有较高的成本,而且功耗比较高。

 

基于蓝牙信道探测的高精度测距原理

基于蓝牙信道探测的高精度测距原理

 

蓝牙 6.0 版本,引入一种叫做 Channel Sounding 的新技术,专门用于测距。根据实际测量,基本可以达到 ±0.5m 的误差,而且具有较高的一致性。因此可以预见,未来这将是移动终端,尤其是对于功耗要求比较高的可穿戴、IoT设备,广泛使用的低成本测距和位置感知技术。

openvela 即将开放相关源码,欢迎广大的嵌入式开发者踊跃参与相关的开发和使用。

2、体验优异

性能高

很多开源的 RTOS,基本都不能完整支持经典蓝牙等数据传输功能。openvela 不仅支持了 SPP 等传输协议,还针对数据传输场景进行了多轮次的优化,目前通讯速率已经超过常见的 Android 手机设备。另外通过对 GATT 传输协议的优化,传输性能也远远超过了 iOS 平台。

 

openvela 蓝牙性能对比

openvela 蓝牙性能对比

功耗低

openvela 支持蓝牙 Offloading 架构,可以很便利地部署在异构多核心系统中。通过将强劲算力核心的蓝牙音频、数据传输等业务分载和流转到低功耗核心,可以极大降低相关功耗。另外,通过场景化的功率控制技术,可以进一步降低系统待机功耗。

目前该架构已成功运用在小米 AI 眼镜中,助力设备取得了良好的续航指标。

 

openvela 蓝牙 Offloading 架构

openvela 蓝牙 Offloading 架构

 

资源占用少

虽然为 Zephyr 扩展了多种能力,但是通过极致的内存控制,以及高度可裁剪的设计理念,在音频、电话场景下,openvela 蓝牙模块占用的系统内存均小于 300 kB。在最简模式下,内存只需要 20 kB 左右。无论是 RAM 还是 CodeSize,openvela 对于系统资源的占用均远远小于 Android,以及不少商业的 RTOS 嵌入式蓝牙解决方案。

 

openvela 蓝牙资源占用

openvela 蓝牙资源占用

 

3、开发方便

基于蓝牙物理连接的模拟器

openvela 为大家提供了一整套功能丰富、稳定的模拟器。在软件开发阶段,尤其还没有硬件时,就可以基于模拟器开始软件的开发工作。根据之前项目中的经验,基于模拟器开发的应用程序在模拟器上面看到的效果和在实际开发板上看到的效果差别是相当小的,在硬件平台上,基本可以直接正常运行,并直接联调通过,这大大缩短了整体项目的开发周期。

基于 openvela 模拟器,openvela 使能了蓝牙适配器,基于此可以开发蓝牙无线应用,非常方便。而且不同于 Android 只能模拟硬件行为,openvela 是基于真正的蓝牙无线连接的,可以方便的与手机等物理设备进行无线通信,实现真正意义上的所见即所得。

 

蓝牙模拟器

蓝牙模拟器

 

基于模拟器,openvela 还有丰富的调试手段,即使没有 Jtag/Trace32 等硬件仿真器,也可以方便地进行在线调试,还可以使用 openvela IDE 进行可视化应用开发,这对软件开发者非常友好。欢迎大家到 openvela 社区下载试用。

如果有其它有趣的开发、调试经验,也欢迎开发者们告诉我们,我们很乐意把他们集成到未来的版本中。

基于蓝牙物理连接的自动化测试

openvela 致力于构建一整套完善的自动化测试体系,不仅有丰富的测试用例,而且代码覆盖率高,目前还支持物理设备跨设备无线连接测试。这都有助于大家在项目开发过程中,及时发现兼容性问题、稳定性问题,并有效避免自己的提交引入 Regression 问题。

 

蓝牙自动化测试

蓝牙自动化测试

 

设备状态打点与大数据诊断分析

目前 openvela 支持将异常事件及一些关键信息打印到日志系统,在经过用户授权的情况下,将不包含用户隐私数据的调试信息上报到云端。

通过云端大数据分析,不仅可以优化测试模型、更准确的评估模块质量,更能过这种分析来挖掘出潜在问题,并将相应的优化改进集成进下一次版本迭代升级中。在用户还未感知到问题的情况下,就把潜在的问题修复掉,实现真正的防患于未然

 

蓝牙问题大数据诊断分析

蓝牙问题大数据诊断分析

 

后记

通过上面的介绍,相信大家对 openvela 蓝牙开源解决方案已经有了一个初步认识。后续,我们还准备了一系列蓝牙技术文档,来帮助大家进一步使用 openvela 蓝牙相关的能力。另外,我们在 openvela 城市沙龙活动中,还将会有更多以蓝牙为主题的技术分享,欢迎大家报名参与。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐