# 蓝牙模块

![](https://2259527808-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LSXCnLP-UwKYzUqiVCQ%2F-LU9mtZFe4rG7WymDnYv%2F-LU9mzTU-vmovtSYVJTL%2F%E7%A1%AC%E4%BB%B61215876.png?generation=1545295662278002\&alt=media)

## 5.3.1 简介

蓝牙是一种支持设备短距离通信的无线电技术，其传输距离一般在 10 米以内。本说明书中将介绍 HC-05蓝牙模块，该模块是基于 Bluetooth Specification V2.0 带 EDR 蓝牙协议的数传串口模块。本模块支持UART,USB,SPI,PCM,SPDIF等接口，并支持SPP蓝牙串口协议，具有成本低、体积小、功耗低、收发灵敏性高等优点，只需配备少许的外围元件就能实现其强大功能。

HC-05 蓝牙模块有以下引脚：

state：主机清除记忆，低电平有效，在实际使用中不必连接该引脚，空出即可。

TXD：发送端，连接到主控板的 RXD 端口（程序中需设定 RXD 的端口号）。

RXD：接收端，连接到主控板的 TXD 端口（程序中需设定 TXD 的端口号）。

GND：负极，连接到主控板的 G 端口。

VCC：正极，连接到主控板的 V 端口。

EN:使能引脚，低电平有效，在实际使用中不必连接该引脚，空出即可。

注：

1.TXD、RXD 为串口通信的数据传输引脚，正常通信时要交叉连接，即设备自身的 TXD 连接另一设备的 RXD，设备自身的 RXD 连接另一设备的 TXD。另外，设备自身的 TXD 和 RXD 也可以连接在一起，实现自收自发功能，可用来测试设备本身的收发功能是否正常。

2.本说明书只介绍在 Mixly 编程软件中设置蓝牙模块的参数，不涉及使用串口调试助手设置蓝牙模块参数。

3.示例中使用主控板的软串口(D10、D11 或者其他可做软串口的端口)连接蓝牙模块，不采用 D0 和 D1 硬串口。

## 5.3.2 蓝牙模块使用示例

实现功能：串口监视器发送的数据能在串口调试助手端看到。

### 1.AT模式设置

在连接蓝牙的时候，要注意线的连接是否正确，检查清楚再进行通电。

#### 1）Arduino HC05 AT模式接线

Arduino 5V - VCCArduino GND - GNDArduino Pin10 - TXDArduino Pin11 - RXD

#### 2）Arduino 进入 AT 模式代码

接下来，我们需要为使用 Arduino 设置蓝牙模块 AT 模式编写程序，这个程序是让我们可以通过 Arduino IDE 提供的串口监视器来设置蓝牙模块。

Arduino IDE界面如图5.6-1所示：

![图5.6-1](https://2259527808-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LSXCnLP-UwKYzUqiVCQ%2F-LU9mtZFe4rG7WymDnYv%2F-LU9mzTWFmXfnMzsnI4l%2F%E7%A1%AC%E4%BB%B61216875.png?generation=1545295660860483\&alt=media)

详细的 Arduino 代码如下：

`#include <SoftwareSerial.h>`

`// Pin10为RX，接HC05的TXD`

`// Pin11为TX，接HC05的RXD`

`SoftwareSerial BT(10, 11);`

`char val;`

`void setup() {`

`Serial.begin(38400);`

`Serial.println("BT is ready!");`

`// HC-05默认，38400`

`BT.begin(38400);`

`}`

`void loop() {`

`if (Serial.available()) {`

`val = Serial.read();`

`BT.print(val);`

`}`

`if (BT.available()) {`

`val = BT.read();`

`Serial.print(val);`

`}`

`}`

#### 3）利用 Arduino IDE 串口监视器进行调试

首先，将 Arduino 断电，然后按着蓝牙模块上的黑色按钮（复位按钮），再让 Arduino 通电，如果蓝牙模块指示灯按2秒的频率闪烁，表明蓝牙模块已经正确进入 AT 模式，此时松开黑色按钮。

打开 Arduino IDE 的串口监视器，选择正确的端口，将输出格式设置为 Both: NL & CR ，波特率设置为 38400 ，可以看到串口监视器中显示 BT is ready! 的信息。

然后，输入 AT ，如果一切正常，串口显示器会显示 OK。

接下来，我们即可对蓝牙模块进行设置，常用 AT 命令如下：（注意要英文输入）

AT+ORGL # 恢复出厂模式

AT+NAME=\<Name># 设置蓝牙名称

AT+ROLE=0 # 设置蓝牙为从模式

AT+ROLE=1 # 设置蓝牙为主模式

AT+CMODE=1 # 设置蓝牙为任意设备连接模式

AT+PSWD=\<Pwd># 设置蓝牙匹配密码

正常情况下，命令发送后，会返回 OK ，如果没有返回任何信息，请检查接线是否正确，蓝牙模块是否已经进入 AT 模式，如果上述两点都没有问题，可能是蓝牙模块的问题，可以找蓝牙模块供应商咨询。

设置完毕后，断开电源，再次通电，这时，蓝牙模块指示灯会快速闪烁，这表明蓝牙已经进入正常工作模式，两个模块会自动配对然后连接，状态灯会出现慢闪烁指示。

### 2.蓝牙与PC间数据传输

如果要对蓝牙与PC间进行通信，需要将蓝牙设备在AT模式时设置为从模式，AT模式设置好之后蓝牙模块进入正常工作模式，将PC连接蓝牙模块连接。

#### 1）上传程序

硬件连接：蓝牙TX--甜橙D10；蓝牙RX---甜橙D11。

编写程序如下图5.6-2：

![图5.6-2](https://2259527808-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LSXCnLP-UwKYzUqiVCQ%2F-LU9mtZFe4rG7WymDnYv%2F-LU9mzT_i4AjAF-JxhFX%2F%E7%A1%AC%E4%BB%B61218011.png?generation=1545295663278413\&alt=media)

也可以用代码编程使用Arduino IDE来发送数据，代码如下：

`#include <SoftwareSerial.h>`

`volatile char s;`

`SoftwareSerial mySerial(10,11);`

`void setup(){`

`s = 0;`

`Serial.begin(9600);`

`mySerial.begin(9600);`

`}`

`void loop(){`

`if (mySerial.available() > 0) {`

`s = mySerial.read();`

`Serial.print(s);`

`}`

`}`

#### 2）打开电脑蓝牙

首先打开电脑的 设置，如图5.6-3所示，点击设备--打开蓝牙，单击添加蓝牙或其他设备，如图5.6-4所示：

![图5.6-3](https://2259527808-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LSXCnLP-UwKYzUqiVCQ%2F-LU9mtZFe4rG7WymDnYv%2F-LU9mzTbZYUBKEqxzYLn%2F%E7%A1%AC%E4%BB%B61218365.png?generation=1545295662220022\&alt=media)

![图5.6-4](https://2259527808-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LSXCnLP-UwKYzUqiVCQ%2F-LU9mtZFe4rG7WymDnYv%2F-LU9mzTd3flYDkDdMerO%2F%E7%A1%AC%E4%BB%B61218374.png?generation=1545295671265928\&alt=media)

#### 3）将PC蓝牙与蓝牙模块进行配对连接

A、点击“蓝牙”，如图5.6-5所示，进入添加设备页面，点击QC-HC05，进行配对连接，如图5.6-6所示，当出现如图5.6-7所示时，PC已经与蓝牙模块连接完成；

B、点击图5.6-4所示的“更多蓝牙选项”，单击“COM端口”如图5.6-8所示，观察传出端口，图中为COM8。

![图5.6-5](https://2259527808-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LSXCnLP-UwKYzUqiVCQ%2F-LU9mtZFe4rG7WymDnYv%2F-LU9mzTfeYpQa0S8S1au%2F%E7%A1%AC%E4%BB%B61218543.png?generation=1545295662273183\&alt=media)

![图5.6-6](https://2259527808-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LSXCnLP-UwKYzUqiVCQ%2F-LU9mtZFe4rG7WymDnYv%2F-LU9mzThavLxqbwZ9MU8%2F%E7%A1%AC%E4%BB%B61218552.png?generation=1545295661607282\&alt=media)

![图5.6-7](https://2259527808-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LSXCnLP-UwKYzUqiVCQ%2F-LU9mtZFe4rG7WymDnYv%2F-LU9mzTj7htBkPZdFETk%2F%E7%A1%AC%E4%BB%B61218561.png?generation=1545295663050615\&alt=media)

![图5.6-8](https://2259527808-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LSXCnLP-UwKYzUqiVCQ%2F-LU9mtZFe4rG7WymDnYv%2F-LU9mzTlsW_tRkEZIwaW%2F%E7%A1%AC%E4%BB%B61218570.png?generation=1545295670226869\&alt=media)

#### 4）串口调试助手观察通信

A、打开串口调试助手，界面如图5.6-9所示，修改左侧串口、波特率等设置，观察左下角的COM口状态是否为关闭状态，若不是，点击菜单栏的“停止”按钮，使端口停止工作，再点击圈住的“开关”按钮，打开串口界面如图5.6-10所示，观察从串口监视器发送来的数据。

![图5.6-9](https://2259527808-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LSXCnLP-UwKYzUqiVCQ%2F-LU9mtZFe4rG7WymDnYv%2F-LU9mzTnodsq4WRncy0H%2F%E7%A1%AC%E4%BB%B61218720.png?generation=1545295662301883\&alt=media)

![图5.6-10](https://2259527808-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LSXCnLP-UwKYzUqiVCQ%2F-LU9mtZFe4rG7WymDnYv%2F-LU9mzTpBhYHQUWnFtqN%2F%E7%A1%AC%E4%BB%B61218729.png?generation=1545295669452975\&alt=media)

## 5.3.3 蓝牙模块应用场景举例

蓝牙模块可实现一对一无线传输数据，既可以在蓝牙模块之间通信，也可以与手机蓝牙建立连接，通过手机 App 与蓝牙模块传输数据。

应用举例：蓝牙遥控车、蓝牙遥控灯、环境监测App 等。
