基于低能耗蓝牙的半双工语音通信
低能耗蓝牙被业界广泛认为是实现物联网(IoT)应用愿景的关键技术。事实上,极低的功耗使其成为电池供电的物联网产品最理想的无线通信解决方案,尽管目前低能耗蓝牙技术规范还是局限于几种特定应用,但是,创新的解决方案可促使这项技术拓展到不同的应用领域,例如,多媒体流。按照这个发展方向,本文介绍一个叫做 BlueVoice的低能耗蓝牙设备语音流应用。 本文从支持语音流服务所需的扩展服务集开始介绍BlueVoice应用,然后在实际硬件设备上评估BlueVoice的性能。在所选的硬件平台上,BlueVoice应用完全支持语音流服务,同时避免能源浪费。
I. 前言 经历过去几十年的快速增长,互联网几乎渗透到人类社会日常生活的方方面面。未来互联网将扩展到万物互联,数十亿甚至数百亿个有唯一身份的“物品”通过无线通信与人类和周围环境交互,执行高级任务。在这一构想中,“物品”可能是传感器、致动器、家电、玩具,总之,可以是任何能够被识别的虚拟或实体物品,这种互联网演进构想被称为物联网(IoT)。 物联网概念是通过标准协议解决方案(即互联网协议)和无线通信接口,把所有产品设备连接在一起,组成一个全球网络。实现万物互联,虽然可以使用现有的大量的射频通信技术,但是当物联网产品是部署在现场的自主型电池供电装置时,低功耗无线通信技术才会是最适合的通信解决方案。在这个方面,低能耗蓝牙 (Bluetooth LE) 技术被视为最有效的物联网通信解决方案,同时正在融入互联网世界。 在今天的物联网应用中,低能耗蓝牙解决方案主要用于生命参数监视用途。除传统的监视服务外,近几年业界开始探索基于其它技术的先进应用。本文以在低能耗蓝牙设备上支持语音流服务的BlueVoice应用为例,探讨如何解决这些技术限制问题。我们先了解一下低能耗蓝牙技术,然后详细介绍支持该新应用概念所需的扩展服务集,再介绍应用设计,最后在STM32 Nucleo L476板上测试实际性能。 II. 低能耗蓝牙技术概述 BLE低能耗蓝牙规范于2010年写入蓝牙4.0核心规范,尽管与基本蓝牙相似,但是低能耗蓝牙规范主要是为超低功耗应用设计开发。通过低能耗蓝牙技术连接电池供电设备的潜在应用非常少,医疗、健身和智慧家居是其中仅有的几例。
图1. 低能耗蓝牙协议栈 如图1所示,低能耗蓝牙协议栈总体结构主要由两个部分组成:控制器和主机。应用软件使用协议栈主机层的协议提供的服务。主机层分为五层:逻辑链路控制和适配协议(L2CAP)、属性协议(ATT)、通用属性配置文件(GATT)、安全管理协议(SM)、通用访问配置文件(GAP)。控制器部分只有两层:物理层(PHY)和链路层(LL)。如图1所示,主机-控制器(HCI)接口是控制器与主机的通信通道。 物理层负责比特调制,通过无线通道收发数据。最高数据速率是1 Mb/s,典型通信距离是几十米。 链路层规定两个设备之间双向通信的功能。低能耗蓝牙节点有两个角色:主设备和从设备。通常是主设备(例如,笔记本电脑、智能手机)搜索从设备(例如,体感设备);必要时,从设备向主设备发送数据。从设备通常处于睡眠状态,并在固定间隔内唤醒,以便被主设备搜到。 在链路层之上,逻辑链路控制和适配协议(L2CAP)有两个主要功能。该协议的主要作用是提供多路传输功能,按照标准低能耗蓝牙分组数据格式,封装转换顶层多协议数据。安全管理协议(SM)和通用访问配置文件(GAP)分别提供数据安全和服务管理功能。详细的说,安全管理协议定义密钥的生成方式,以及如何在两个设备(主从设备)之间交换密钥,建立安全加密通信通道,而通用访问配置文件则规定两个设备如何在底层交互操作 属性协议(ATT)和通用属性配置文件是开发新应用时需要重点考虑的两个协议组件。属性协议是一个无状态的客户机/服务器协议:不考虑设备的底层角色是主设备还是从设备,每个设备都可以设为服务器、客户机或是客户机兼服务器。客户机请求服务器数据发送数据,服务器向客户机发送数据,数据以属性的形式保存在服务器内,每个属性都含有GATT管理的数据,而且该数据被分配一个通用唯一标识符(UUID)。通过一个L2CAP专用通道,属性协议在服务器属性与客户机之间建立一条通信通道。通用属性配置文件(GATT)在属性协议层添加一个数据抽象模型,负责搜索属性协议保存的数据,在两个设备之间交换特征。每个低能耗蓝牙设备都有一套可能属性(存储服务)和特征(与存储服务相关的属性)。如果在低能耗蓝牙栈上建立一个新应用,则必须定义属性和特征。某一特定应用的特征、属性和底层规范合称配置文件,标准配置文件可保证不同品牌的产品能够互联互通。
|