蓝牙模块普通数据收发AT指令|学习笔记

简介: 快速学习蓝牙模块普通数据收发AT指令

开发者学堂课程【嵌入式之RFID开发与应用2020版蓝牙模块普通数据收发AT指令】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/665/detail/11168


蓝牙模块普通数据收发AT指令

 

本节内容学习AT指令,AT指令的操作方式相当于把底层协议栈隐藏,即不需要关注底层的实现,只需要关注它的使用即可。

 

一、AT指令说明

1.注意事项

1AT指令是ASCII码字符串,并区分大小写只要有串口调制助手就可以实现指令末尾必须有\r表示结束发送数据勾选enter就表示带\r。

image.png

2AT指定只能在非透传模式下有效与手机连接后进入透传模式,发送模块任何数据都是透传数据。比如发送AT+VER时,它会以字符串发送,这时就不是一个指令,所以不能在联网时发送,联网时发送必须将引脚PWRC和底板的PWRC拉成低电平才会把透传数据变成指令。

image.png

3如果有对模块参数进行修改,软复位后才生效。对名称,地址修改后一定要执行指令AT+RESET。进行软复位后才能保存,并且永久生效。

4APP UUID列表

UUID在网络安全中经常使用,指唯一识别码,因为在网络安全,通信安全中,它是由计算机中断,时间,cpu的频率等综合因素生成的随机数字,数字几乎不会重复。对于蓝牙而言,UUID是一种服务,也就是说我们的蓝牙支持很多功能,最常见的是读,写,控制,每一种功能都称作一种服务,甚至在安卓开发下的蓝牙开发中,底下会有UUID的服务特征值的表格,使用服务需要具体查询数值。

➢服务UUID: FFEO

➢特征UUID: FFE1 (非MESH透传,只与连接设备通信)

➢特征UUID: FFE2 (功能设置、MESH下操作LED/I0/PWM)

➢透传模式只提供特征UUID服务,但可以通过拉低PWRC

进行AT指令的发送。

2.指令说明

1蓝牙查询版本,输入AT+VER回车即可

image.png

除了版本,还可以查询MAC地址,可以直接点击指令旁边的enter查询,MAC地址通常不能修改,出厂时固定的。MAC地址是区分设备的唯一标识,名称不能区分设备,比如10个蓝牙,名字改成一样,当手机发送信标接收蓝牙时,名字一样但MAC地址不一样,所以可以连接设备。

2软复位,指令为AT+RESET,一般进行修改后就需要软复位。

3设置/查询蓝牙名称,指令为AT+NAME,名字可以修改,可以通过在指令后面添加名字进行修改如AT+NAMEtest,修改网络地址也是直接在后面添加,返回ok即表示修改成功,修改成功后再执行指令就是新的名称。这里需改成AT+NAMEqfedo,因为后续需要组网,组网需要保证每个模块同一个网络名称。如果需要修改永久生效,则一定要执行AT+RESET。

image.png

4设置/查询设备类型,指令为AT+CLSS<Param>和AT+CLSS。一般默认是A0,工作在透传模式

5设置-断开连接,指令为AT+DISC,如果和手机建立了连接,那可以主动断开,但主动断开的前提是模块的PWRC引脚需要处于低电平,否则指令无意义。手机连接的意思是手机可以搜索到qfedo蓝牙设备并且点击连接,这时蓝牙和手机就处于连接状态。

6设置/查询-组网ID,指令为AT+NETID(Param)和AT+NETID,这里的查询结果是112233445566,一共12个字节,这12个字节可以任意修改。如果蓝牙支持mesh功能,就是NETID不相同没有办法加入同一个网络中,如果相同就已经加入了同一个网络中,表示任何设备就可以进行通信。

7设置/查询-组网短地址,指令为AT+MADDR(param)和AT+MADDR,短地址是指我们完成组网需要名称相同,网络ID相同但是短地址不能相同,短地址是设备的编号,编号如果和别的设备相同,发送数据时的重要地址就是短地址,设备地址如果相同,发送的数据就会被10个设备收到。这种数据的收发称为主播,但支持了主播后续麻烦,因为后续需要和10个设备其中一个通信,就需要单播,但这时已经不支持单播了,主播和单播不同时存在。

3.串口MESH无线控制指令

1串口MESH数据发射(一对多、多对一、多对多)

指令

目标短路地址

数据

AAFB

2byte

10Byte

例子1:向所有模块发送广播数据: 12233445566发送指令格式: AAFBFFFF1 12233445566

例子2:向短地址为02模块发送112233数据发送指令格式: AAFB0002112233

每次收发数据指令都已AAFB开始,AAFB指普通数据。

如果是透传模式下,直接发送的任何字符串都是ASCII码。但如果需要联网进行点对点通信或广播通信,就不能直接发送ASCII码,必须发十六进制,且十六进制带有格式,格式为以AAFB开头并且添加两个字节的短地址,之前学习地址是一个字节且最多连接255个设备,但这里有两个字节,可能是需要预留一个字节。高字节永远是00,低字节是00-ff,ff是广播地址。发送字节的长度不超过10个。

接下来打开两台设备:30和31

查看设备的名称是否都是quedo,网络地址是不是1-6,31设备短地址是37,30设备短地址是36

image.png

如果要给这两台设备发送数据,就需要输入AAFB0037/36+十六进制数据如果一定要发字符,就需要找到字符对应的十六进制,1对应字符31,2对应32,A对应41,等等。如图,给31设备发送AAFB003132333435,31设备接收到的是12345。12345以十六进制显示是3132333435,前面还有三个字节AA,35,05,35代表发送端地址,AA代表接收普通数据,05表示发送数据长度。

image.png

如果需要两台设备都可以接收,就需要使用广播,就需要高字节和低字节全部改为FFF。

image.png

说明:发送广播时,目标短路地址为FFFF,发送单播时,短地址高字节必须为00,例如0002,表示向02设备发送数据。

2串口MESH数据接收

指令

目标短路地址

数据长度

数据

AA

1Byte

1Byte

10Byte

BB

1Byte

1Byte

10Byte

以上表格为MESH数据透传、与功能控制接收数据格式

指令AA表示此数据包为透传数据(普通数据),目标短路地址和数据长度都是一个字节,数据长度最多为10个字节。

指令BB表示此数据包为功能数据(PIM、键值、LED)等

例子1:串口接收到AA02050102030405表示接收到02短地址模块发来的5个字节数据,数据内容是0102030405。

例子2:串口接收到BB2903E7F101表示收到的不是串口数据,而是控制命令,数据是短地址为29的设备发出,数据长度为3字节,E7F101 命令为设置0OUT1引脚输出高电平。

不管数据是发送还是接收,通常情况下需要结合mcu来控制,只有mcu才能组包,组包才能收发。

相关文章
|
14天前
|
物联网 C#
【C#】简单的蓝牙通讯功能实现
【C#】简单的蓝牙通讯功能实现
13 0
|
5月前
|
监控 物联网 Linux
python测试串口最大通信速率
【4月更文挑战第5天】
138 3
4G、Wifi、蓝牙所谓的AT指令模式和数据透传模式到底是什么意思?
4G、Wifi、蓝牙所谓的AT指令模式和数据透传模式到底是什么意思?
494 0
|
物联网
zigbee DL-20无线串口收发模块使用(双车通讯,电赛模块推荐)
zigbee DL-20无线串口收发模块使用(双车通讯,电赛模块推荐)
451 0
|
小程序 前端开发 API
小程序学习笔记--连接蓝牙
小程序学习笔记--连接蓝牙
235 0
Adurion两个HCO5蓝牙模块之间互相通信
Adurion两个HCO5蓝牙模块之间互相通信
122 0
|
移动开发
QT串口助手(实现数据的收发功能)
QT串口助手(实现数据的收发功能)
529 0
|
小程序 API Android开发
微信小程序使用蓝牙通信协议连接硬件整理总结(蓝牙连接、获取设备UUID、开水器notify及关闭蓝牙)
微信小程序使用蓝牙通信协议连接硬件整理总结(蓝牙连接、获取设备UUID、开水器notify及关闭蓝牙)
3509 0
微信小程序使用蓝牙通信协议连接硬件整理总结(蓝牙连接、获取设备UUID、开水器notify及关闭蓝牙)
|
小程序 物联网 API
微信小程序使用蓝牙通信协议连接硬件整理总结(初始化蓝牙、搜索设备、展示设备)
微信小程序使用蓝牙通信协议连接硬件整理总结(初始化蓝牙、搜索设备、展示设备)
1414 0
微信小程序使用蓝牙通信协议连接硬件整理总结(初始化蓝牙、搜索设备、展示设备)
|
物联网 开发者
蓝牙模块控制功能数据AT指令|学习笔记
快速学习蓝牙模块控制功能数据AT指令
559 0
蓝牙模块控制功能数据AT指令|学习笔记