XBee3是Digi新一代无线模块产品的总称,和之前的XBee有一个重要的区别,就是它是自带低功耗蓝牙BLE支持和MicroPython平台的无线模块产品。我们称它为双模多协议,双模指的是,它同时支持蓝牙和另一种无线协议(zigbee或digimesh等);而多协议指的是这个系列的模块,可以带不同的协议,实现蓝牙ZigBee双模,或蓝牙Digimesh双模,蓝牙LTE双模、蓝牙Lora双模等等。
可以看出,XBee3的蓝牙是标配,而另一种无线协议,取决于硬件版本,同一个2.4G的模块可以刷ZigBee,Digimesh或802.15.4协议,来实现对不同协议的支持。
由于有了蓝牙,这也意味着除了XBee本身的无线协议外,蓝牙将会是一个额外的无线通道。这里的蓝牙不仅仅可以用来配置模块,它本身也可以作为一个数据通道,实现和手机,平板的蓝牙相互交换数据。同样地,手机或平板可以将相关指令通过蓝牙发给XBee模块,通过模块上的MicroPython程序进行处理,或者是模块收到蓝牙传来的命令后,通过串口交由单片机去执行相应的处理等。
XBee3蓝牙的配置
XBee3模块中虽然集成有蓝牙功能,但默认蓝牙并没开启,可以通过AT命令或是XCTU工具软件来打开蓝牙功能。相关AT指令如下:
-
BT蓝牙启用开关
BT=1时启用蓝牙,如果在XCTU上操作,会提示您设置配对密码,出于安全考虑,蓝牙并不明文存储和传递密码,而是采用特定的方式生成随机盐值(Salt),并据此生成对应秘钥(verifier),参考SRP协议中的说明。
-
$S ,$V, $W, $X, $Y 蓝牙密码相关参数
在蓝牙的SRP协议中,它并不直接存储明文密码,而是根据“盐”值生成的秘钥。这里的盐值实际上相当于一个随机数,它对应有唯一的密钥。在XCTU操作开启蓝牙时,可通过Configure按钮来输入明文密码。如果希望在单片机上操作蓝启用蓝牙,就要用到上面这些参数。$S是指Salt,其余四个组成Verifier。在单片机上执行模块蓝牙初始化时,可在开启BT后写入这些参数。
如果您在连有XBee模块开发板的电脑上,在Console窗口中先打开串口,然后执行蓝牙的开启和配置密码的过程,就能找到上面所说的XCTU是如何开启蓝牙和写入密钥的相关AT指令。如果嵌入产品的模块不先配置好密码,也可以参考XCTU上设置密码后的盐值和密钥来通过单片机程序统一设置蓝牙密码,
XBee3蓝牙相关的API帧
和XBee的802.15.4/ZigBee/DigiMesh的无线数据收发帧不同,蓝牙有自己的API帧。在蓝牙协议中,通讯需要在安全的SRP连接中进行,Digi提供XBee BLE API,作为一个GATT服务器可以接受来自客户端(手机,平板等)的连接请求。这些客户端设备需要使用SRP来认证和开启蓝牙安全传输,相关的BLE API帧(0x2C,0xAC)是在蓝牙协议中使用。在手机或平板端,Digi提供了XBee Mobile SDK大大简化通讯过程的开发,请参考本文后面章节。
对于XBee模块本身,数据要从串口出来,相关的API帧只有0x2D和0xAD。这两个帧即用户数据转播的请求帧和接收帧。也就是当要把其它接口的数据转到蓝牙通道时,用0x2D发送请求帧。通过蓝牙收到该用户数据转播帧的一方,则在串口(或其它接口)中输出对应的0xAD接收帧。
请参考官网的详细说明:
测试方法和例程
使用XBee Mobile,提取码mwus中的 userdata relay console 待续…
手机或平板APP开发
XBee mobile SDK :