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指令状态。经过分析原理图也发现了一些问题


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

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

一起看看它的原理图。


为什么人家可以通过单片机设置进入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.设置/查询模块角色





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


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


发送:AT+CMODE=0

返回:OK

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


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




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


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


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

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

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

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

从模块绑定主模块地址

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

返回:OK



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

步骤: 1. 两个蓝牙模块必须一个作为主机,另一个作为从机才能建立连接(上电后,从机一直处于接受状态,等待被连接。而主机则主动发出信号,寻找目标从机,前提是该目标从机的mac地址事先被写入到主机的flash芯片中储存) 2. 蓝牙模块上电前一直按住key按键不放,上电后松开,此时LED灯处于慢闪状态(每秒闪1次),提示已经进入AT指令响应状态,可以进行接收AT指令控制 3. PC端打开安可信串口助手(带AT指令),打开相应的串口,发送AT+ROLE?\n查询该模块的主从角色,如果为0,则为从机,如果为1则为主机。本例中,此模块(图中左边的HC-05模块)设为主机,则发送AT+ROLE=1\n,设为主机,成功返回OK 4. 发送AT+ADDR?\n查询此模块的mac地址,本例中为98d3:33:80ebdf,记下来稍后为从机的地址绑定用。同样的方法将另一个模块(图中右边的HC-05模块)设置为从机(AT+ROLE=0\n),并且查询到mac地址为98d3:36:aac2 5. 向主机串口中发送AT+BIND=98d3,36,aac2\n绑定从机的mac地址,成功则返回OK。发送AT+CMODE=0\n将主机设为指定蓝牙地址连接模式(即只允许主机向绑定好mac地址的蓝牙从机设备发起连接) 6. 同样地,向从机串口发送AT+BIND=983d,33,80ebdf\n绑定主机的mac地址,成功则返回OK。发送AT+CMODE=0\n将从机也设为指定蓝牙地址连接模式(即只允许从机接受绑定好mac地址的蓝牙主机设备发起的连接) 7. 至此,主从机均设置完毕。主从两模块松开key键重新上电,LED都快闪(每秒闪2次),表明均处于等待配对状态,随后大约几秒钟后,LED闪烁频率发生变化(不确定),表明已经侦测到目标设备,正在建立连接。随后大约一秒钟,很快 LED变成慢双闪状态(每2秒闪一次,每次连闪2下),提示已经配对成功,可以通过蓝牙协议传输数据了 8. 此时,在串口助手中发送一串字符,如果另一个蓝牙模块的串口助手里收到了同样的字符,且回送的字符,对方亦能收到,则通信成功。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值