这篇文章上次修改于 1701 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
现在不建议使用这个模块,蓝牙2.1许多新特性不支持,模块也不便宜。推荐HM10,也是蓝牙透传,支持4.0协议。

使用USB转TTL线连接

最简单的连接方法,我通常用来测试HC05是否损坏
接线方法就不仔细讲了,TX接RX,RX接TX,电源和地
资料和工具:HC-05蓝牙串口通信模块官方资料包

通过TTL与电脑连接

打开XCOM,串口选择USB转TTL的串口
波特率默认为9600

与电脑配对

如果你想用手机蓝牙连接也可以:蓝牙串口

默认配对密码为1234
完成后打开 控制面板>设备和打印机找到HC-05模块
2018-11-29_16-23-22.png
这样就便找到了蓝牙COM口

与电脑通信

打开两个串口调试窗口
一个为通过TTL连接HC05
一个通过蓝牙连接HC05
然后就可以相互通信了
2018-11-29_16-46-51.png
2018-11-29_17-05-02.png

使用Arduino连接

Untitled Sketch_bb.png

#include <Arduino.h>
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(11, 12); // RX | TX
void setup()
{
  Serial.begin(38400);// 与PC通讯的波特率
  Serial.println("Plug the power press the reset button to enter AT mode");
  Serial.println("Enter commands:");
  BTSerial.begin(38400); // Arduino与HC05通讯的波特率
}

void loop()
{
  if (BTSerial.available()){
    Serial.write(BTSerial.read());
  } // 从HC-05读取并发送到Arduino串口监视器

  if (Serial.available()) // 读取Arduino串口监视器并发送至HC-05
    BTSerial.write(Serial.read());
}

其实区别不大,Arduino充当了转换器的功能,将HC-05的数据传输到串口监视器
arduino不止可以用来通讯,可以实现一些更强大的功能

AT指令

AT模式波特率为38400(按住RESET键并插入电源,指示灯变为两秒一闪,即进入AT模式)
进入到命令响应工作模式之后,就可以使用串口调试助手进行蓝牙调试了。
首先有一点,AT指令不区分大小写,均以回车、换行结尾。

常用的AT指令

指令名响应含义
ATOK测试指令
AT+RESETOK模块复位
AT+VERSION?+VERSION: OK获得软件版本号
AT+ORGLOK 恢复默认状态
AT+ADDR?+ADDR: OK获得蓝牙模块地址
AT+NAME=OK设置设备名称
AT+NAME?+NAME: OK获得设备名称
AT+PSWD=OK设置模块密码
AT+PSWD?+PSWD: OK获得模块密码
AT+UART=,,OK设置串口参数
AT+UART?+UART:,, OK获得串口参数
AT+ROLE?0 从, 1 主询问主从
AT+ROLE=0 从, 1 主设置主从

对于AT指令,有几点注意:
AT+NAME?:获得设备名称,这个AT指令有很大可能性是没有返回的,因为我也看到了很多的例子……,但是其他的指令都是没有问题的,直接设置设备名称就行了;
AT+UART?:获得串口参数,串口的参数一共有三个,波特率、停止位、检验位。其取值如下:

设置串口参数

参数名称取值
波特率2400、4800、9600、19200、38400、5760、
波特率115200、230400、460800、921600、1382400
停止位0:1位 1:2位
校验位0:NONE  1:Odd  2:Even

其默认值为:9600,0,0。

AT 指令错误

错误描述
0AT command error
1The result is default value
2PSKEY write error
3Device name is too long (mbytes)
4Device name is 0 byte
5Bluetooth address: NAP is too
6Bluetooth address: UAP is too
7Bluetooth address: LAP is too
8PIO port mask length is 0
9Invalid PIO port
ADevice class is 0 byte
BDevice class is too long
CInquire Access Code length is 0
DInquire Access Code is too long
EInvalid Inquire Access Code
FPairing password is 0
10Pairing password is too long (more than 16 bytes)
11Role of module is invalid
12Baud rate is invalid
13Stop bit is invalid
14Parity bit is invalid
15No device in the pairing list
16SPP is not initialized
17SPP is repeatedly initialized
18Invalid inquiry mode
19Inquiry timeout
1AAddress is 0
1BInvalid security mode
1CInvalid encryption mode

参考文章

常用模块 HC-05蓝牙串口通信模块使用详解(实例:手机蓝牙控制STM32单片机)
HC-051.如何使用蓝牙模块HC-05进入AT模式?
HC05蓝牙模块通过Arduino与PC连接
Arduino使用HC05蓝牙模块与手机连接
Configure Bluetooth Module HC-05 with AT Mode


海星