HC-05蓝牙模块调试笔记以及使用正点原子例程无法检测到蓝牙模块原因分析

时间:2024-04-02 09:50:44

 做一个小项目的原因,需要使用无线传输数据,实现双向通信。恰好实验室有几对蓝牙模块,就用了这个模块。本来为了图快速实现功能,直接使用了正点原子的蓝牙例程,总是显示检测不到蓝牙模块。被坑了一天也总算弄出来了,在此记录自己调试笔记。方便以后调试自己调试说明。这里我选用的是蓝牙模块HC-05主从一体蓝牙模块。

       如下是选用的蓝牙模块

    HC-05蓝牙模块调试笔记以及使用正点原子例程无法检测到蓝牙模块原因分析HC-05蓝牙模块调试笔记以及使用正点原子例程无法检测到蓝牙模块原因分析

1.      硬件连接

VCC: 接电源的正极(这里需要接+5V)

GND:接电源的负极

RXD:接收端,蓝牙模块接收从其他设备发来的数据;正常情况接其他设备的发送端TXD

TXD: 发送端,蓝牙模块发送数据给其他设备;正常情况接其他设备的发送端RXD

STATE:状态端

EN:使能端,需要进入AT模式时接3.3V(需要注意的是这里是按住按键进入AT模式,而直接给EN端接3.3V是进不去AT模式的,后面原理图会分析原因)

(通过电平进入AT模式正确的做法应该是设置PIO11引脚的电平,而不是EN端的电平)

 

2.      进入AT模式

USB转TTL和蓝牙模块连接好后,插上电脑。进入AT模式的两种方法。

方法一:先按住按键不放,再给模块上电。此时LED 2S闪一次,进入AT模式。波特率固定为38400。

方法二:模块直接上电。此时LED灯快闪(1s两次)。再按下按键,模块也会进入AT指令,此时LED还是快闪。这个时候的波特率和自己设置的一样,默认为9600。1位停止位,无奇偶校验。

在文档上说可以听过给EN脚高电平直接进入AT模式。但是自己实际测试,进不了。最后我直接用万用表测量EN脚悬空的电平,有4.0V。查看原理图,折腾了半天也没通过单片机直接给EN脚电平进入AT指令状态。经过分析原理图也发现了一些问题

HC-05蓝牙模块调试笔记以及使用正点原子例程无法检测到蓝牙模块原因分析

当VCC接5V时,EN脚悬空由分压原理,可以看出EN脚差不多也是4V多。当EN脚接低电平时,CE电压为0。IC电源芯片都没有使能,所以没有3.3V电压输出,当然蓝牙模块也没有工作。所以通过设置EN端电平进入AT模式这种说法是错误的。应该是通过设置PIO11脚的高低电平进入AT模式才是正确的。

这也是我直接拿这个模块用正点原子蓝牙历程,总是显示检测不到模块的原因。因为根本单片机根本就没有让这个模块进入AT模式。为什么正点原子的蓝牙模块可以呢?

一起看看它的原理图。

HC-05蓝牙模块调试笔记以及使用正点原子例程无法检测到蓝牙模块原因分析

为什么人家可以通过单片机设置进入AT模式,人家直接通过操作BS KEY引脚(相当于PIO11脚),当然可以直接AT进入咯。


所以拿到这个模块怎么办呢?两种方法

第一种:自己把PIO11引脚自己引出来,这样就可以通过单片机进去AT模式。设置相应的参数了。

第二种:自己在电脑串口上把两个模块的参数设置好,然后直接拿来通信。

下面详细讲解第二种方法:

进入AT指令模式后。

串口调试助手中一定要勾上发送新行,才会在发送字符后面添加\r\n 。不然每次就自己添加

1.测试通信是否有问题

发送: AT

返回:OK

2.设置波特率

发送:AT+UART=115200,0,0   (详细意义看它的AT指令集即可)

返回:OK

查询波特率:

发送:AT+UART?

返回:+UART=115200,0,0

OK‘’


3.设置蓝牙的名称和密码

发送:AT+NAME=xxx(默认名称HC-05)

返回:OK

这里使用AT+NAME?是查询不到名字的


设置密码

发送:AT+PSWD=XXXXXX

返回:OK

AT+PSWD?查询密码

注意(两个模块通信时,设置好主从模块后,他们的密码必须一样)


4.设置/查询模块角色

HC-05蓝牙模块调试笔记以及使用正点原子例程无法检测到蓝牙模块原因分析




这里设置两个相互通信的蓝牙模块,一个设置为从角色,一个设置为主角色。


5.设置/查询——连接模式

HC-05蓝牙模块调试笔记以及使用正点原子例程无法检测到蓝牙模块原因分析

发送:AT+CMODE=0

返回:OK

两个模块都设置为指定蓝牙地址连接


6.获取远程蓝牙的名称以及地址


HC-05蓝牙模块调试笔记以及使用正点原子例程无法检测到蓝牙模块原因分析


两个模块主从角色,分别获到自己的地址。记录下地址,以便于下一步的相互绑定蓝牙地址


7.设置/查询——绑定蓝牙地址:

HC-05蓝牙模块调试笔记以及使用正点原子例程无法检测到蓝牙模块原因分析

这里需要注意的是相互绑定地址。

比如:从机绑定主机的地址,主机绑定从机的地址。

这里仅举例:使用从模块绑定主模块的地址。 

已知:主模块地址为98d3:31:4046ca 

从模块绑定主模块地址

 指令: AT+BIND=98d3,31,4046ca (绑定时,需要把获取的地址的:改为 ,符号)

返回:OK



完成以上步骤即可,就设置好了。接下来只需要通过串口发送接收数据就可以进行蓝牙发送接收数据。