Dual-mode-Bluetooth-User-Manual
开箱检测
请详细阅读完“开箱检测”后,在进行通电测试,以免损坏模块。
Dual-mode Bluetooth是一个简单易用的蓝牙串口透传模块,使用时客户不需要了解烦杂的蓝牙协议,只需要当成一个全双工的串口使用即可。
由于该Dual-mode Bluetooth是TTL电平,在与PC机通信时需要使用RS232转UART模块或USB转UART模块。这里推荐用XBee USB Adapter搭配连接PC机进行测试。
XBee USB Adapter是一个USB转UART模块,同时带有XBee接口、按键和LED,并将所有的引脚以标准的2.54mm间距引出,搭配Dual-mode Bluetooth使用时,只需将Dual-mode Bluetooth接入到XBee(注意不要接反),在通过micro USB线将Xbee USB Adapter与PC机的USB接口相连即可。
硬件连接如下图所示:
当然,你也可以使用普通的USB转UART模块进行测试,如FT232 USB UART Board (micro),由于Dual-mode Bluetooth的引脚间距是2.0mm,所有还需要在配合2.0转2.54的杜邦线进行测试。
硬件连接如下图所示:
连接完成,检查无误,即可接入PC机。如果原本你未安装过相应的驱动,则还需要安装相应的USB转UART驱动。选择以下驱动中适合你的1个即可(如果你使用的是其它USB转UART模块,这一步只需要安装相应的驱动即可):
打开设备管理器,查看对应的COM。
手机扫描下面二维码下载相应的APP。其中iOS使用蓝牙BLE与模块进行通信,需要使用iphone4S及以上版本。Android使用蓝牙EDR与模块进行通信。
启动APP,点击“扫描”(注意:手机需要打开蓝牙功能),大约几秒后,正常在列表中将显示相应的蓝牙设备。如果使用iOS,选择“Waveshare_BLE”设备,如果使用Android,选择“Wavehsare_ERD”设备。进到下一个页面后选择“串口调试模式”。
注意:Android手机如果支持蓝牙BLE,将扫描两个设备,注意需要选择MAC地址为00:0E:0E的设备
此时,只要通过PC机的串口调试助手发送数据给Dual-mode Bluetooth,手机就能收到相应的数据。同时串口助手也将显示手机发送的数据。
注意:Dual-mode Bluetooth出厂配置为波特率115200,校验位:N,数据位8位,停止位1位。虽然Dual-mode Bluetooth可以通过AT指令设置波特率等参数(见下方),但作为从机与手机通信时,不推荐修改,否则将可能导致APP无法与Dual-mode Bluetooth通信。
如下图:
Dual-mode Bluetooth相关功能
常用系统AT指令
打开串口调试助手,默认如下图配置(如果修改过模块串口配置的,则按自定义的进行配置),发送大写AT(AT字符后没有\r\n等任何符号,有的串口助手有“发送新行”的复选款,请勿√选 ),若返回OK,说明硬件连接正常,模块工作正常。
在正常模式下,未建立连接或断开链接时能正常通过AT指令配置Dual-mode Bluetooth(如果处于连接状态,需要断开蓝牙链接才可正常使用AT指令)。
- 测试或断开连接指令
指令 | 应答 | 参数 |
---|---|---|
AT | OK\ER\断开连接 | 无 |
模块处理正常待机状态时,会返回:"OK"。
模块处理错误状态时,会返回:"ER",说明蓝牙芯片工作不正常,可能需要重启或重置一些参数。
在模块建立蓝牙连接时,通过模块串口发送:"AT",可断开蓝牙连接。
- 测试或断开连接指令
指令 | 应答 | 参数 |
---|---|---|
AT+RESET | OK+RESET | 无 |
该指令执行后,模块将延时500ms后重启,整个重启过程大约需要3秒。
- 查询模块EDR模式MAC地址
指令 | 应答 | 参数 |
---|---|---|
AT+ADDE? | OK+Get:MAC地址 | 无 |
- 查询模块BLE模式MAC地址
指令 | 应答 | 参数 |
---|---|---|
AT+ADDB? | OK+Get:MAC地址 | 无 |
- 查询EDR成功连接过的远程主机地址
指令 | 应答 | 参数 |
---|---|---|
AT+RADE? | OK+Get:MAC 地址 | 无 |
- 查询BLE成功连接过的远程主机地址
指令 | 应答 | 参数 |
---|---|---|
AT+RADB? | OK+Get:MAC 地址 | 无 |
- 清除最后成功连接边的地址信息
指令 | 应答 | 参数 |
---|---|---|
AT+CLEAE | OK+CLEAE | 清除EDR连接信息 |
AT+CLEAB | OK+CLEAB | 清除BLE连接信息 |
- 查询\设置模块初始化通知
指令 | 应答 | 参数 |
---|---|---|
查询:AT+INIT? | OK+Get:[P1] | P1:0或1(默认:0)
|
设置:AT+INIT[P1] | OK+Set:[P1] |
如果打开初始化通知,则模块初始化完成后会通过串口输出“OK+INIT”。
注:该指令执行后,必须重新上电,新设置才能生效。
- 查询\设置模块EDR工作模式
指令 | 应答 | 参数 |
---|---|---|
查询:AT+IMME? | OK+Get:[P1] | P1:0或1(默认:0)
|
设置:AT+IMME[P1] | OK+Set:[P1] |
注:该指令执行后,必须重新上电,新设置才能生效。
- 查询\设置模块BLE工作模式
指令 | 应答 | 参数 |
---|---|---|
查询:AT+IMMB? | OK+Get:[P1] | P1:0或1(默认:0)
|
设置:AT+IMMB[P1] | OK+Set:[P1] |
注:该指令执行后,必须重新上电,新设置才能生效。
- 设置EDR模式开始工作指令
指令 | 应答 | 参数 |
---|---|---|
AT+STARE | OK+STARE | 无 |
- 设置EDR模式停止工作指令
指令 | 应答 | 参数 |
---|---|---|
AT+STOPE | OK+STOPE | 无 |
- 设置BLE模式开始工作指令
指令 | 应答 | 参数 |
---|---|---|
AT+STARB | OK+STARB | 无 |
- 设置BLE模式停止工作指令
指令 | 应答 | 参数 |
---|---|---|
AT+STOPB | OK+STOPB | 无 |
若设置了AT+IMME1,则模块需要接收到AT+STARE,EDR模式才能正常工作。如果接收到AT+STOPE,则EDR模式会停止工作。
若设置了AT+IMMB1,则模块需要接收到AT+STARB,BLE模式才能正常工作。如果接收到AT+STOPB,则BLE模式会停止工作。
设置广播名称
- 查询\设置EDR设备名称
指令 | 应答 | 参数 |
---|---|---|
查询:AT+NAME? | OK+Get:[P1] | P1:设备名称
|
设置:AT+NAME[P1] | OK+Set:[P1] |
- 查询\设置EDR设备名称
指令 | 应答 | 参数 |
---|---|---|
查询:AT+NAMB? | OK+Get:[P1] | P1:设备名称
|
设置:AT+NAMB[P1] | OK+Set:[P1] |
例:
所发送指令 | 应答 | 备注 |
---|---|---|
AT | OK | 测试命令,判断当前是否可以使用AT指令进行设置 |
AT+NAMB? | OK+Get:当前BLE设备名称 | 查询BLE设备名称 |
AT+NAMBtestBLE | OK+Set:testBLE | 设备BLE设备名称为"testBLE" |
AT+NAME? | OK+Get:当前EDR设备名称 | 查询EDR设备名称 |
AT+NAMEtestEDR | OK+Set:testEDR | 设备BLE设备名称为"testEDR" |
AT+RESET | OK+RESET | 复位模块或重新给模块上电 |
按顺序执行上表AT命令后,在模块重启后,通过手机APP重新扫描,正常可以看到设备名称已经修改。
配置iBeacon
iBeacon默认UUID为:74288BDA-B644-4520-8F0C-720EAF059935,且主模式下不发送iBeacon广播包
- 查询\设置iBeacon开关
指令 | 应答 | 参数 |
---|---|---|
查询:AT+IBEA? | OK+Get:[P1] | P1:0或1(默认:0)
|
设置:AT+IBEA[P1] | OK+Set:[P1] |
该指令执行后,必须重新上电,新设置才能生效
- 查询\设置iBeacon UUID值
指令 | 应答 | 参数 |
---|---|---|
查询:AT+IBE0? | OK+Get:[P1] | P1:00000001~FFFFFFFE
|
设置:AT+IBE0[P1] | OK+Set:[P1] |
iBeacon UUID:74288BDA-B644-4520-8F0C-720EAF059935
该指令用于修改UUID中红字部分
- 查询\设置iBeacon UUID值
指令 | 应答 | 参数 |
---|---|---|
查询:AT+IBE1? | OK+Get:[P1] | P1:00000001~FFFFFFFE
|
设置:AT+IBE1[P1] | OK+Set:[P1] |
iBeacon UUID:74288BDA-B644-4520-8F0C-720EAF059935
该指令用于修改UUID中绿字部分
- 查询\设置iBeacon UUID值
指令 | 应答 | 参数 |
---|---|---|
查询:AT+IBE2? | OK+Get:[P1] | P1:00000001~FFFFFFFE
|
设置:AT+IBE2[P1] | OK+Set:[P1] |
iBeacon UUID:74288BDA-B644-4520-8F0C-720EAF059935
该指令用于修改UUID中蓝字部分
- 查询\设置iBeacon UUID值
指令 | 应答 | 参数 |
---|---|---|
查询:AT+IBE3? | OK+Get:[P1] | P1:00000001~FFFFFFFE
|
设置:AT+IBE3[P1] | OK+Set:[P1] |
iBeacon UUID:74288BDA-B644-4520-8F0C-720EAF059935
该指令用于修改UUID中紫字部分
- 查询\设置iBeacon Marjor值
指令 | 应答 | 参数 |
---|---|---|
查询:AT+MAJO? | OK+Get:[P1] | P1:0001~FFFE
|
设置:AT+MAJO[P1] | OK+Set:[P1] |
- 查询\设置iBeacon Minor值
指令 | 应答 | 参数 |
---|---|---|
查询:AT+MINO? | OK+Get:[P1] | P1:0001~FFFE
|
设置:AT+MINO[P1] | OK+Set:[P1] |
例:
1.在进行iBeacon配置时,需要先准备手机端的测试软件,以下以iOS系统系统测试为例,Android类似
在App Store里中搜索Locate,并安装。如下图:
2.打开Locate并配置访问权限(注:没有配置访问权限将无法使用)
3.配置好手机端后,则可以开始配置设备端,通过串口发送以下指令:
所发送指令 | 应答 | 备注 |
---|---|---|
AT | OK | 测试命令,判断当前是否可以使用AT指令进行设置 |
AT+IBEA1 | OK+Set:1 | 打开iBeacon |
AT+MAJO1234 | OK+Set:1234 | 配置iBeacon Marjor |
AT+MINO4567 | OK+Set:4567 | 配置iBeacon MINO |
AT+RESET | OK+RESET | 复位模块或重新给模块上电 |
复位后正常可以搜索到如下图:
注:16进制的1234和4567分别等于10进制的4660和17767。
其中74288BDA-B644-4520-8F0C-720EAF059935为默认UUID,如果需要修改,可以通过以下命令:
1.修改红色部分:AT+IBE001234567
2.修改绿色部分:AT+IBE18901ABCD
3.修改蓝色部分:AT+IBE2EFEF0123
4.修改紫色部分:AT+IBE3456789AB
5.重新上电或执行"AT+RESET"指令
此时将按新的UUID进行广播,注意在Locate里需要设置自定义的UUID,才能在Locate中查看,设置如下图:
显示结果如下:
设置三通模式
三通模式需要AT+ATOB与AT+DUAL配合使用,在模块两个模式(EDR,BLE)都建立蓝牙连接的情况下,打开三通模式,则A设备发送给模块的数据会被同时转发到B设备;B设备发送给模块的数据会被同时转发给A设备。
- 查询\设置模块三通模式
指令 | 应答 | 参数 |
---|---|---|
查询:AT+ATOB? | OK+ Get:[P1] | P1:0或1(默认:0)
|
设置:AT+ATOB[P1] | OK+ Set:[P1] |
- 设置模块连接模式
指令 | 应答 | 参数 |
---|---|---|
查询:AT+DUAL? | OK+Get:[P1] | P1:0或1(默认:1)
|
设置:AT+DUAL[P1] | OK+Set:[P1] |
例:
所发送指令 | 应答 | 备注 |
---|---|---|
AT | OK | 测试命令,判断当前是否可以使用AT指令进行设置 |
AT+DUAL0 | OK+Set:0 | 双模待机同时收发 |
AT+ATOB1 | OK+Set:1 | 打开三通模式 |
AT+RESET | OK+RESET | 复位模块或重新给模块上电 |
IO控制
- 查询\设置PIO1输出状态
指令 | 应答 | 参数 |
---|---|---|
查询:AT+PIO1? | OK+Get:[P1] | P1:0或1(默认:0)
|
设置:AT+PIO1[P1] | OK+Set:[P1] |
- 查询\设置PIO状态
指令 | 应答 | 参数 |
---|---|---|
查询:AT+PIO[P1]? | OK+Get:[P2] | P1:2\3\4\5\8\9\A\B
P2:0,1,?
|
设置:AT+PIO[P1][P2] | OK+Set:[P2] |
例:
如果只查询一个PIO的输出状态请用"AT+PIO2?"或"AT+PIO3?"
设置PIO2串口输出状态:"AT+PIO2X",X值为0或1,代表低或高电平
以发送"AT+PIO21"为例,如果返回"OK+Set:1"说明PIO2电平已经输出高,若是返回"OK+Set:0"说明当前状态是输出低电平。
如果你使用XBee USB Adapter进行测试,那么有以下连接关系:
Dual-mode Bluetooth | XBee USB Adapter |
---|---|
LED(PIO1) | LED1 |
PIO5 | LED2 |
对应该的IO如下图:
设置串口相关参数
在重申一次,虽然Dual-mode Bluetooth允许用户修改串口相关参数,但并不推荐客户随意修改(默认设置是最常用的)。
- 查询\设置模块波特率
指令 | 应答 | 参数 |
---|---|---|
查询:AT+BAUD? | OK+Get:[P1] | P1:1~7(默认:6)
|
设置:AT+BAUD[P1] | OK+Set:[P1] |
例子如下,设置波特率为9600:
发送:AT+BAUD2
返回:OK+Set:2
注:该指令设置波特率的指令后,须重新上电,新设置的参数才能生效。
- 查询\设置串口校验
指令 | 应答 | 参数 |
---|---|---|
查询:AT+PARI? | OK+Get:[P1] | P1:0~2(默认:0)
|
设置:AT+PARI[P1] | OK+Set:[P1] |
注:该指令执行后,必须重新上电,新设置才能生效
- 查询\设置停止位
指令 | 应答 | 参数 |
---|---|---|
查询:AT+STOP? | OK+Get:[P1] | P1:0或1(默认:0)
|
设置:AT+STOP[P1] | OK+Set:[P1] |
注:该指令执行后,必须重新上电,新设置才能生效
- 查询\设置硬件流
指令 | 应答 | 参数 |
---|---|---|
查询:AT+FLOW? | OK+Get:[P1] | P1:0或1(默认:0)
|
设置:AT+FLOW[P1] | OK+Set:[P1] |
注:该指令执行后,必须重新上电,新设置才能生效
主从模式
主从模式是指两个Dual-mode Bluetooth之前进行全双工的通信,类似于串口延长线的功能。
测试时,需要有2个Dual-mode Bluetooth,其中一个测试为主模式,另一个保持从模式不变,关闭周围其他蓝牙设备,主模式的Dual-mode Bluetooth会自动搜索并链接到从模式的Dual-mode Bluetooth。一般更推荐使用"AT+ROLE1"。
指令 | 应答 | 参数 |
---|---|---|
查询:AT+ROLE? | OK+Get:[P1] | P1:0或1(默认:0)
|
设置:AT+ROLE[P1] | OK+Set:[P1] |
注:该指令执行后,必须重新上电,新设置才能生效
指令 | 应答 | 参数 |
---|---|---|
查询:AT+ROLB? | OK+Get:[P1] | P1:0或1(默认:0)
|
设置:AT+ROLB[P1] | OK+Set:[P1] |
注:该指令执行后,必须重新上电,新设置才能生效
"AT+ROLE1"和"AT+ROLB1"不能同时使用,即同一时刻,只支持BLE做主设备或SPP做主设备。不能同时支持。
其它AT指令
- 设置模块工作模式
指令 | 应答 | 参数 |
---|---|---|
查询:AT+MODE? | OK+Get:[P1] | P1:0或1(Default:0)
|
设置:AT+MODE[P1] | OK+Set:[P1] |
用于切换透传和远控模式。
远控模式指:可以通过设备发送AT指令去查询\设置蓝牙模块。
例:
所发送指令 | 应答 | 备注 |
---|---|---|
AT | OK | 测试命令,判断当前是否可以使用AT指令进行设置 |
AT+MODE1 | OK+Set:1 | 设置透传+远控模式 |
之后通过手机APP发送AT指令"AT+PIO51"或"AT+PIO50"即可控制XBee USB Adapter板子上LED2的亮灭。
- 设置是否通知上位机连接状态
指令 | 应答 | 参数 |
---|---|---|
查询:AT+NOTI? | OK+Get:[P1] | P1:0或1(默认:0)
|
设置:AT+NOTI[P1] | OK+Set:[P1] |
注:设置AT+NOTI1之后,模块与设备成功连接或断开连接时,会通过串口发送状态提醒信息,格式如下:
OK+CONE-----EDR成功连接
OK+LSTE-----EDR断开连接
OK+CONB-----BLE成功连接
OK+LSTB-----BLE断开连接
OK+LSTA-----双模异常断开,模块自动重置
- 设置通知上位机连接状态的提示类型
指令 | 应答 | 参数 |
---|---|---|
查询:AT+NOTP? | OK+Get:[P1] | P1:0或1(默认:0)
|
设置:AT+NOTP[P1] | OK+Set:[P1] |
注:此功能基于"AT+NOTI1"指令,用来设置连接断开提示信息内容。
如果设置不包含地址,提示同"AT+NOTI1"指令中的提示,如果设置了包含地址,则提示信息如下:
OK+CONE:001122334455-----EDR成功连接,包含远端地址
OK+LSTE:001122334455-----EDR断开连接,包含远端地址
OK+CONB:001122334455-----BLE成功连接,包含远端地址
OK+LSTB:001122334455-----BLE断开连接,包含远端地址
- 查询\设置是否在Android下使用BLE模式
指令 | 应答 | 参数 |
---|---|---|
查询:AT+ONEM? | OK+Get:[P1] | P1:0或1(默认:0)
|
设置:AT+ONEM[P1] | OK+Set:[P1] |
注1:该指令执行后,必须重新上电,新设置才能生效
注2:执行AT+ONEM1之后,android下能搜索到BLE模式,但是将不能使用BLE模式,只能使用SPP模式。 00:0E:0B开头的BLE地址将被隐去。
- 查询\设置EDR模式待机参数
指令 | 应答 | 参数 |
---|---|---|
查询:AT+SCAN? | OK+Get:[P1] | P1:0或1(默认:0)
|
设置:AT+SCAN[P1] | OK+Set:[P1] |
注:该指令执行后,必须重新上电,新设置才能生效
- 查询\设置EDR配对密码
指令 | 应答 | 参数 |
---|---|---|
查询:AT+PINE? | OK+Get:[P1] | P1:8位以内的数字字符
|
设置:AT+PINE[P1] | OK+Set:[P1] |
例子如下:
发送:AT+PINE008888
返回:OK+Set:008888
此时配对密码改为008888,模块在出厂时的EDR默认配对密码是"1234"。
- 查询\设置BLE配对密码
指令 | 应答 | 参数 |
---|---|---|
查询:AT+PINB? | OK+Get:[P1] | P1:6位以内的数字字符
|
设置:AT+PINB[P1] | OK+Set:[P1] |
例子如下:
发送:AT+PINB008888
返回:OK+Set:008888
此时配对密码改为008888,模块在出厂时的BLE默认配对密码是"000000"。
- 重置模块
指令 | 应答 | 参数 |
---|---|---|
AT+RENEW | OK+RENEW | 无 |
执行后模块将延时500ms后重启,所有设置均会被重置,该命令慎用。
例:
所发送指令 | 应答 | 备注 |
---|---|---|
AT | OK | 测试命令,判断当前是否可以使用AT指令进行设置 |
AT+RENEW | OK+RENEW | 重置模块 |
AT+NAMBWaveshareBLE | OK+Set:testBLE | 设备BLE设备名称为"WaveshareBLE" |
AT+NAMEWaveshare_EDR | OK+Set:testEDR | 设备BLE设备名称为"WaveshareEDR" |
AT+RESET | OK+RESET | 复位模块或重新给模块上电 |
APP对接
APP通信协议
我们默认提供的演示APP一共提供了3个模式,串口调试在上面已介绍,这里主要说遥控模式和外设控制的通讯协议,用户只需按我们提供的格式发送数据,就可以与APP进行通信。
概述
我们使用的通信协议是标准的JSON格式(一种轻量级的数据交换格式),并且为了方便解析,我们使用最简单的键值对形式,如下:
{"key":"Value"}
使用最简单的键值对形式以下特点:
- 信息保存在键值对中
- 键值对分别包含在双引号中
- 键值对使用冒号分隔
- 花括号作为数据帧的开始和结束
通过这些特点,就可以很简单的进行数据的打包和解析了。详细可参考我们提供的底板程序和APP源码。