HC-05蓝牙模块的参数设置与使用

蓝牙门锁开发笔记

Posted by Shao Guoji on April 16, 2016

bluetooth-model



HC-05

蓝牙模块BT-HC05模块是一款高性能的蓝牙串口模块。 1、可用于各种带蓝牙功能的电脑、蓝牙主机、手机、PDA、PSP等智能终端配对。 2、宽波特率范围4800~1382400,并且模块兼容单片机系统。 3、当主从模式两个蓝牙模块配对成功后,可以简单的,更改为无线的蓝牙,让您设备或者产品更高级,更时尚。 4、您可以很容易的使用提供的蓝牙手机软件

记得模块刚到手的那一个晚上,一脸懵逼,对着数据手册看半天也没搞明白怎么用,还乱接线以为把模块烧了……所以很有必要重新认识一下这个不到巴掌大的小玩意。



蓝牙模块是干嘛的?

首先必须明确一个很重要的问题,蓝牙模块是干嘛的?它有什么luan用?

蓝牙模块也称蓝牙串口通讯模块,原来它是和串口通讯有关,串口我们都知道,比如我平时USB-ISP烧写单片机程序,用的就是串口。但这是用导线把单片机和下载模块连接的,而蓝牙模块的作用,正是那一根导线。

示意图

发送方发送的数据并不是直接到接收方,而是先到模块,经过模块的中转,再到接收方。可以看到从发送方到模块这一段,用的是无线蓝牙传输(这正是我们需要的),而从模块到接收方是用有线(其实就是把模块插上去),蓝牙模块充当“传话人”的角色。



工作模式

HC-05有两种工作模式,官方称为命令响应工作模式和自动连接工作模式,我们可以理解为“参数设置模式”和“正常工作模式”。在参数设置模式下,用户可以通过AT指令对蓝牙模块进行常用参数的设置,比如名称、连接密码等。正常工作模式就是按照在用户设置的参数工作,配对、收发数据。



参数设置模式下设置模块参数

进入参数设置模式

在此模式下,可以对模块进行参数设置。模块上电后默认是正常工作模式,所以先要进入进入参数设置模式。手册上是这样说的:

通过控制模块外部引脚(PIO11)输入电平,可以实现模块工作状态的动态转换。

PIO11 模块状态切换脚,高电平–>AT 命令响应工作状态,低电平或悬空–>蓝牙常规工 作状态。

那么这个PIO11又是何方神圣?可怜的我当时不懂,把模块的排针乱接一通,还差点把模块烧了。其实PIO11是模块内部芯片的引脚,在模块上已经和一个小按键串联到VCC了(有的模块没有按键,所以手册才统一说明引脚),这样一来我们只要把这小按键按住,再上电就可以进入参数设置模式啦~~~

模块电路图

小按键

通过串口设置模块参数(重点)

参数设置需要使用AT指令集,但这里我们使用更简便的软件设置方式。老规矩,先把蓝牙模块与USB转串口模块连接,记住串口号。注意参数设置时只能用有线连接的方式,与正常工作模式的蓝牙配对不同,按住小按键,最后把USB模块插上电脑。上电后模块的LED慢闪,表示已处于参数设置模式。

模块连接电脑

设备管理器

一、打开串口

打开蓝牙测试软件,点击“搜索端口”按钮。串口打开成功后在旁边会有提示,多次点击按钮切换串口号:

蓝牙测试软件

二、测试连接

这时可以点“获取模块信息”按钮测试一下,但信息会不全,卡在“Name?”名字那里,可以先不管:

获取模块信息

三、参数设置

接下来在右边的表格填上要设置的参数,常用的设置:1、设备名称 2、连接密码 3、主从角色 4、波特率,再点击“更新模块信息”按钮即可收到模块反馈结果,”OK”表示设置成功,”ERRO:(0)”表示失败:

参数设置

特别注意波特率的设置,要按手册的格式“4800,0,0”来填写,只写个“4800”会失败的,亲身踩坑……

设置成功后重新上电,模块进入正常工作模式,用手机测试是否能配对。

两个波特率

蓝牙模块会有两个波特率,一个是参数设置模式的,一个是正常工作模式的,这两个波特率不是一码事。参数设置模式下波特率是固定的38400,而正常工作模式默认是9600,可设置为其他值(与通讯方对应)。

据说用串口助手(波特率—38400bits/s;停止位:1位;校验位:无)也可以发送AT命令设置参数?好吧,反正我没成功。。。



测试与使用

设置完成后把模块重新上电进入正常工作模式,USB串口与电脑连接,在电脑打开sscom(或“串口助手”),设置波特率等信息与模块参数一致,打开串口。手机下载“蓝牙串口”APP,配对连接后发送字符串,会在电脑sscom看到接收到的相应字符串,如果把蓝牙模块与单片机的串口连接,那单片机就能接收到手机发送的数据,并进行相应的处理,这也正是手机蓝牙遥控的核心原理

蓝牙串口APP

手机发送字符串

sscom收到字符



本文的真相

你以为这样就完了,这完全不是我想写的东西啊!实话实说吧,其实我之前在设置波特率时只填了“4800”导致设置失败,然后用命令搞来搞去才设置成功,所以想记录一下使用命令设置的方法,但是没想到在写这篇文章时突然想到把格式补充完整”4800, 0, 0”试一下,居然设置成功了……但我还是要说,软件中使用命令要注意格式!

“蓝牙测试软件”下使用AT命令格式问题

数据手册中有许多的AT命令例子,如”at+addr?\r\n”,你以为直接复制到软件执行就行?呵呵,图样图森破……

直接复制命令

那么AT正确的打开方式是……把”\r\n”去掉,用”按一下键盘回车“替代,再执行就好了:

正确执行

经过测试,在”蓝牙测试软件“中直接使用AT命令都要加一个回车,否则得不到模块响应。但有些命令模块没有响应,比如”AT+NAME?”和”AT+ CLASS?”,这不是你的问题。



AT命令调试的正确姿势

蓝牙模块、wifi模块等常用器件大多都是通过AT指令来配置的,那什么才是AT命令调试的正确姿势呢?其实只要下一个sscom,再勾选“发送新行”,发AT指令就可以了……

AT正确姿势

怪我咯?


参考文章

HC-05 蓝牙模块的调试与使用 HC-05 嵌入式蓝牙串口通讯模块AT指令集