[TOC]
一、背景
1.1、蓝牙概念
蓝牙是一种短距离的无线通信技术,工作在2.4GHZ频段,使用IEEE802.15协议。分为经典蓝牙(BR/EDR/AMP)、低功耗蓝牙(BLE)两种技术标准。
经典蓝牙最早1999年推出的蓝牙1.0版本,到目前最新的蓝牙5.1。通信速度从最早的1.0版本的723.1kbits/s,到5.1版本的48Mbits/s。主要特点如下:
- 通信速率高;
- 支持音频传输协议;
- 功耗高。
低功耗蓝牙(从蓝牙4.0开始支持),旨在保持同等通信范围的同时显著降低功耗和成本,场景广泛,主要特点如下:
- 低功耗,使用纽扣电池就可运行数月至数年;
- 小体积、低成本;
- 与现有的大部分手机、平板电脑和计算机兼容。
1.2、蓝牙使用场景
蓝牙的两种协议标准各有不同使用场景,合宙Cat1目前只支持了BLE数传应用,这种应用是对LTE长距离通信的一种补充,具体如下:
应用场景 | 通信方式 | 是否支持 | 协议标准 |
---|---|---|---|
数传应用 穿戴设备 医疗设备 智能家居设备 |
一对一 | 已支持 | 低功耗蓝牙 BLE |
位置服务应用 信标服务 室内定位 |
一对多 | 开发中 | 低功耗蓝牙 BLE |
音频应用 无线耳机 无线音箱 车载娱乐 |
一对一 | 开发中 | 经典蓝牙(BR/EDR) |
数据同步 电话本同步 短信同步 文件传输 |
一对一 | 开发中 | 经典蓝牙(BR/EDR) |
下图是对这些分类的具体例子:
二、技术参数
2.1、硬件特性
- 硬件接口
模块的蓝牙功能需要占用串口2,天线和WiFi公用,所以在使用蓝牙功能后,串口2和WiFi功能将无法使用。
射频性能
功耗数据
2.2、软件特性
蓝牙协议版本4.2,支持双模。软件主要功能是数据透传。蓝牙协议提供基本的无线通信接口和对端进行连接,连接后可以进行数据传输,具体传输内容可以通过AT指令或二次开发接口进行设置。
三、功能使用
蓝牙工作模式分为两种:主模式和从模式,主模式作为连接的发起方,从模式作为连接的接收方。模块支持的功能如下:
功能 | 协议标准 |
---|---|
双向数据透传(主模式) | 低功耗蓝牙 BLE |
双向数据透传(从模式) | 低功耗蓝牙 BLE |
广播单向数传(主模式) | 低功耗蓝牙 BLE |
SPP数传* | 经典蓝牙(BR/EDR) |
*表示正在开发中
3.1、环境准备
- 支持蓝牙功能的模块
Air720UH-NFM
Air720UG-NAM
Air720UG-NFM
Air724UG-NFM
Air724UG-NA
Air722UG-NFM
Air820UG-NFM - 支持蓝牙功能的固件
固件 | 版本 | 下载地址 |
---|---|---|
AT | >= V301825 | 暂未对外发布 |
Lua | core >= V3024 | 代码包下载地址 |
CSDK | core >=V301831 | 代码包下载地址 |
- 手机(蓝牙APP(以下以nRF Master Control Panel为例))或者其他带蓝牙功能的设备
3.2、 双向数据透传(主模式):
该模式下,模块作为主设备,根据从设备的MAC地址进行连接,连接成功后进行数据收发。
图3.2-1 模块作为主设备,连接蓝牙打印机
3.2.1 主模式Lua接口
接口 | 功能 |
---|---|
btcore.scan | 开启/关闭扫描 |
btcore.connect | 连接从设备 |
btcore.findservice | 发现服务 |
btcore.findcharacteristic | 发现服务内的特征 |
btcore.opennotification | 开启/关闭通知 |
btcore.send | 发送数据给从设备 |
btcore.recv | 接收从设备发来的数据 |
1、接口详细介绍,参考API手册
2、接口demo参考:openLuat/Luat_Lua_Air724U/demo/bluetooth/master.lua
3.2.2 主模式AT指令
接口 | 功能 |
---|---|
AT+BTCOMM=ENABLE | 开启/关闭蓝牙 |
AT+BLESCAN=ENABLE | 扫描周围BLE设备 |
AT+BLECOMM=CONNECT | 连接BLE设备 |
AT+BLECOMM=FINDSERVICE | 发现服务 |
AT+BLECOMM= FINDCHARACTERISTIC | 发现服务内的特征 |
AT+BLECOMM= NOTIFICATION | 开启/关闭通知 |
AT+BTCOMM=SENDDATA | 发送数据给从设备 |
+BLEIND=DATA | 接收从设备发来的数据 |
3.3、 双向数据透传(从模式):
该模式下,主设备(例如手机)可以通过搜索来发现模块,并建立连接,模块默认提供了一种数据透传服务,包含了两种特征值,分别是模块给主设备发送数据、主设备给模块发送数据。
图3.3-1 手机连接模块
3.3.1、从模式Lua接口
接口 | 功能 |
---|---|
btcore.advertising | 开启/关闭广播 |
btcore.setname | 设置蓝牙名称 |
btcore.setadvdata | 设置广播包数据 |
btcore.setscanrspdata | 设置响应包数据 |
btcore.addservice | 添加服务 |
btcore.addcharacteristic | 添加特征 |
btcore.adddescriptor | 添加描述 |
btcore.send | 发送数据给主设备 |
btcore.recv | 接收主设备发来的数据 |
1、接口详细介绍,参考API手册
2、接口demo参考:openLuat/Luat_Lua_Air724U/demo/bluetooth/slave.lua
3.3.2、从模式AT指令
接口 | 功能 |
---|---|
AT+BTCOMM=ENABLE | 开启/关闭蓝牙 |
AT+BLECOMM=SETNAME | 设置广播名称 |
AT+BLEADV=ADVDATA | 设置广播包数据 |
AT+BLEADV=SCANRSPDATA | 设置响应包数据 |
AT+BLEADV=ENABLE | 打开/关闭广播 |
AT+BTCOMM=SENDDATA | 发送数据给主设备 |
+BLEIND=DATA | 接收主设备发来的数据 |
3.4、BLE广播模式:
该模式下,可以实现一对多进行广播,应用于极小数据量,单向数据传输的场景。模块本身只作为发射端,不作为接收端。例如:抄表、ibeacon等应用可以用该模式进行。
3.4.1、广播模式Lua接口
接口 | 功能 |
---|---|
btcore.advertising | 开启/关闭广播 |
btcore.setname | 设置蓝牙名称 |
btcore.setadvdata | 设置广播包数据 |
btcore.setscanrspdata | 设置响应包数据 |
btcore.addservice | 添加服务 |
btcore.addcharacteristic | 添加特征 |
btcore.adddescriptor | 添加描述 |
1、接口详细介绍,参考API手册
2、接口demo参考:openLuat/Luat_Lua_Air724U/demo/bluetooth/slave.lua
3.4.2、广播模式AT命令
接口 | 功能 |
---|---|
AT+BTCOMM=ENABLE | 开启/关闭蓝牙 |
AT+BLECOMM=SETNAME | 设置广播名称 |
AT+BLEADV=ADVDATA | 设置广播包数据 |
AT+BLEADV=SCANRSPDATA | 设置响应包数据 |
AT+BLEADV=ENABLE | 打开/关闭广播 |