目录

一、什么是蓝牙模块

二、不同蓝牙模块的对比

三、使用AT指令对蓝牙模块进行配置

1.介绍AT指令

2.AT指令示例

3.HC-05蓝牙模块常用指令集

1)核心前提:进入AT模式

2)常用指令集

四、使用两个蓝牙模块互相通信

五、补充:发送AT指令后蓝牙模块未回复的检查方法


一、什么是蓝牙模块

蓝牙模块是一个集成了蓝牙通信功能的电子组件。它核心的功能是将设备“无线化”,让设备能够在不使用线缆的情况下,在短距离内与其他蓝牙设备进行数据交换。

可以把它想象成一个 “无线串口” 。在传统开发中,两个设备通过串口(TX/RX)引脚用导线连接传输数据;而使用了蓝牙模块后,设备通过串口与蓝牙模块连接,数据则通过蓝牙无线信号发送和接收,从而实现了“剪断电线”的效果。

如下图所示:蓝牙模块一端使用串口连接设备,通过另一端的射频电路将数据发送出去,由此实现了无线通信的功能

一个典型的蓝牙模块通常包含:

  • 蓝牙芯片:核心处理单元,负责蓝牙协议的运行和信号处理。

  • 射频电路:用于发送和接收无线信号。

  • 晶振:提供时钟信号。

  • 天线:可以是板载PCB天线、陶瓷天线或外接天线。

  • 接口电路:如UART、USB、I2C等,用于与主控制器(如单片机、Arduino、树莓派)连接。

二、不同蓝牙模块的对比

经典蓝牙和低功耗蓝牙之间不兼容,不能进行通信

特性维度 经典蓝牙 低功耗蓝牙 双模蓝牙
核心定位 持续、高速数据流 间歇、小数据块 全能兼容
技术代表 BR/EDR(基本速率/增强数据速率) BLE(Bluetooth Low Energy) 同时包含 BR/EDR 和 BLE 协议栈
主要协议版本 蓝牙 2.0/2.1/3.0 蓝牙 4.0/4.2/5.0/5.1/5.2/5.3+ 蓝牙 4.0 及以后的版本通常都支持
功耗水平 极低(仅为经典的1%至50%) 灵活可变
• 使用经典功能时功耗高
• 使用BLE功能时功耗低
峰值电流 约 30 mA 约 15 mA(运行时)
低至 微安(μA) 级别(休眠时)
取决于当前使用的模式
数据速率  (~2.1 Mbps) 较低
• 蓝牙4.2: ~0.27 Mbps
• 蓝牙5.0: ~2 Mbps
支持两种速率,根据模式切换
通信范围 标准:约10米
(功率增加可延长)
更远(尤其在蓝牙5.0+)
• 理论可达数百米
支持两种范围,根据模式切换
连接速度 (通常需要数秒) 非常快(仅需几毫秒) 使用哪种模式,即具备哪种速度
拓扑结构 点对点,微微网 点对点、广播(一对多)、Mesh网络 支持所有拓扑结构
关键协议/配置文件 • HFP(免提)
• A2DP(音频流)
• SPP(串口)
• GATT(属性协议)
• 自定义配置文件
支持经典和BLE的所有协议
典型应用场景 • 蓝牙音箱/耳机
• 车载免提系统
• 文件传输
• 物联网传感器
• 智能手环/手表
• 智能家居设备
• Beacon(室内定位)
• 智能手机/平板
• 电脑
• 智能电视
• 高级车载系统
(作为中心枢纽
互操作性 无法与BLE设备直接通信 无法与经典设备直接通信 可以作为桥梁,同时与经典和BLE设备通信
常见模块型号 HC-05, HC-06 HC-08, JDY-08, nRF51822 大多数手机/电脑的蓝牙芯片,如CSR861

三、使用AT指令对蓝牙模块进行配置

1.介绍AT指令

AT指令,也叫做注意力指令,是一种基于文本的、用于控制调制解调器或其他通信设备的命令行协议

  • 起源:它最初是在1980年代由贺氏公司 为其调制解调器发明的。由于贺氏早期的市场领导地位,这套指令集成为了事实上的行业标准,并被几乎所有后续的调制解调器制造商所采纳和扩展。

  • 语法特征:每条指令通常以前缀 "AT" 或 "at" 开头,后跟具体的命令和参数。这个"AT"就是"Attention"的缩写,意思是告诉设备:“注意,后面是你要执行的命令!”

  • 交互方式:用户通过一个串行接口(如UART)向设备发送AT指令字符串,设备执行后,会返回一个文本结果(如OK, ERROR,或具体的数据)作为响应。

AT指令模式将复杂的系统分成了两个部分:

  • 主控制器:例如Arduino、STM32单片机、树莓派,或者你的电脑。它负责运行主应用程序逻辑。

  • 通信模块:例如ESP32(Wi-Fi/BT)、蓝牙HC-05、4G Cat.1模块。它专门负责处理复杂的无线通信协议栈。

通过AT指令,主控制器不需要懂得复杂的Wi-Fi或蓝牙协议细节。 它只需要通过简单的串口发送像AT+CWJAP="ssid","password"(连接Wi-Fi)这样的明文命令,就能控制专家模块去完成高难度任务。

这就好比:
你不需要成为发动机专家才能开车。你只需要操作方向盘、油门和刹车(类似于发送AT指令)就能控制整个复杂的汽车系统(通信模块)。

2.AT指令示例

基本格式示例:

AT+<Command>[=<Parameter>]\r\n
  • AT: 前缀,唤起设备的注意。

  • +<Command>: 具体的命令,例如+VERSION用于查询版本。

  • =<Parameter>: 可选的参数,用于设置命令。

  • \r\n: 回车换行,代表指令的结束。

实际操作例子:修改蓝牙模块的名字为MyBluetooth

  1. 发送指令:通过串口向蓝牙模块发送:AT+NAME=MyBluetooth\r\n

  2. 模块响应:蓝牙模块收到后,将其名称设置为"MyBluetooth",然后返回:OK\r\n

  3. 查询指令:再发送:AT+NAME?\r\n

  4. 模块响应:蓝牙模块返回:+NAME:MySpeaker\r\n

3.HC-05蓝牙模块常用指令集

1)核心前提:进入AT模式

在对HC-05进行任何AT指令配置之前,必须确保模块正确进入了AT命令响应模式。方法如下:

  1. 接线方式

    • 将模块的 VCC 接 3.3V/5V,GND 接 GND。

    • 将模块的 TXD 接USB转TTL模块的 RXD

    • 将模块的 RXD 接USB转TTL模块的 TXD

  2. 上电前准备

    • 先不要给模块通电按住模块上的小按钮(如果有的话)不松开,然后再给模块通电。此时,模块上的LED指示灯会变为慢闪(大约每2秒闪烁一次),这表示已成功进入AT模式。

    • 或者:将模块的 KEY 引脚 (有时叫EN引脚)连接到 高电平(通常是3.3V)。

  3. 通信设置

    • 打开电脑的串口调试助手

    • 选择正确的串口号。

    • 设置波特率为 38400或9600

    • 数据位8,停止位1,无校验位。

完成以上步骤后就可以在串口调试助手中发送指令了。

2)常用指令集

指令 功能描述 语法示例与响应
测试连接 检查模块是否处于AT模式并通信正常。 发送: AT
响应: OK
复位模块 让模块软复位,会退出AT模式。 发送: AT+RESET
响应: OK
恢复出厂设置 清除所有自定义设置,恢复为默认值。 发送: AT+ORGL
响应: OK
查询版本 获取模块的软件版本信息。 发送: AT+VERSION?
响应: +VERSION:<version> OK
查询地址 获取模块自身的蓝牙MAC地址。

发送: AT+ADDR?
响应: +ADDR:<address>OK

查询/设置名称 查询或设置设备的蓝牙名称。 查询: AT+NAME?
响应: +NAME:<name>OK
设置: AT+NAME=name
响应: OK
查询/设置波特率 查询或设置设备的串口通信波特率。 查询: AT+UART?
响应: +UART:<baud>,<stop>,<parity>
设置: AT+UART=115200,0,0
(115200波特率,1停止位,无校验)
响应: OK
查询/设置配对码 查询或设置设备的配对密码(默认1234)。 查询: AT+PSWD?
响应: +PSWD:<password>OK
设置: AT+PSWD=6789
响应: OK
查询/设置角色 非常关键! 设置模块为主机或从机。

查询: AT+ROLE?
响应: +ROLE:<role>OK
设置: AT+ROLE=<role>
0: 从机模式
1: 主机模式

2: 回环角色(从机-主机)

响应: OK

查询/设置连接模式 查询或设置设备的连接模式(默认0)。

查询: AT+CMODE?
响应: +CMODE:<cmode>OK
设置: AT+CMODE=<cmode>

0: 指定蓝牙地址连接模式
1: 任意蓝牙地址连接模式 
2: 回环角色

响应: OK

查询/设置-绑定蓝牙地址

查询或设置设备绑定的蓝牙地址

(默认绑定的蓝牙地址:00:00:00:00:00:00)

查询: AT+BIND?
响应: +BIND:<address>OK
设置: AT+BIND=1234,12,123456
响应: OK

四、使用两个蓝牙模块互相通信

AT指令配置过程:

  1. 使用设置角色指令AT+ROLE=1/0将一个蓝牙模块设为主设备,另一个蓝牙模块设为从设备
  2. 使用设置连接模式指令(AT+CMODE=0将两个蓝牙模块都设置为指定地址连接
  3. 使用查询地址指令(AT+ADDR?获取两个蓝牙设备的地址
  4. 使用设置绑定蓝牙地址指令(AT+BIND=xxxx,xx,xxxxxx将两个蓝牙模块的地址相互绑定
  5. 使用设置波特率指令(AT+UART=9600,0,0将两个蓝牙设备的波特率设为同样的值

五、补充:发送AT指令后蓝牙模块未回复的检查方法

  1. 检查串口线是否连接正确,RXD<——>TXD,串口模块和蓝牙模块是否共地
  2. 检查供电,换用5V给蓝牙模块供电
  3. 检查串口号,尝试更换波特率(部分蓝牙模块(如HC-05/HC-06)在进入AT指令模式时,可能会使用固定的特殊波特率(如38400))
  4. 发送AT指令时按住蓝牙模块的按钮
Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐