前述:
QQ:3177227373
V X:F9986858
这个是自己的模块学习心得体会。

蓝牙模块资料  (点击蓝色字体即可跳转)
提取码:1cay

模块购买地址:淘宝优信电子店铺
https://item.taobao.com/item.htm?spm=a1z09.8149145.0.0.6a204347x5jZtV&id=586532434913&_u=32ap3f8l683f

       要想自己能学会并使用,需要结合别人的经验和方法和手册,这是我一个大学学长(振华哥)给我的建议,学习什么芯片资料都得去看手册。我刚开始看见手册密密麻麻的字就不想看,觉得特别枯燥无聊,就想让别人直接手把手教我,但是发现这样不是什么好习惯,用小伙伴的话说就是:you see see you,one day day,only know want 白嫖。当被别人这样说的时候我心里感觉很羞愧,所以我后来不会的都是自己先百度、论坛看看,再看看手册,实在不会了才会去请教学长和老师。
       这个是自己在2019年寒假过年的时候在家里无聊,想着就想学习一下数据的无线传输,然后首先就买了HC-05蓝牙模块的ESP8266 WIFI模块,自己多学点知识,才能在和别人交流的时候侃侃而谈。说直白点,你啥都不会,还不学,别人都不想和你聊天。
       要相信:你若盛开,清风自来。

模块介绍:
       蓝牙HC05是主从一体的蓝牙串口模块,简单的说,当蓝牙设备与蓝牙设备配对连接成功后,我们可以忽视蓝牙内部的通信协议,直接将将蓝牙当做串口用。当建立连接,两设备共同使用一通道也就是同一个串口,一个设备发送数据到通道中,另外一个设备便可以接收通道中的数据。所以一般在学习的时候可以先学习怎么配置蓝牙模块,并进行数据的收发就好了,先差不多会用。
核心模块使用HC-05从模块,引出接口包括VCC,GND,TXD,RXD,KEY,STATE
VCC GND是电源引脚
TXD RXD是串口通信引脚
KEY是在代码配置的时候单片机控制它的高低
STATE是连接状态引脚,已连接的时候是高电平,未连接是低电平

模块进入AT模式的两种方法:
1、模块上电,未配对情况下就是AT模式,波特率为模块本身的波特率,默认: 9600, 发送AT指令时需要置高一次PIO11(即按一下模块上面的按键)。
2、PI011置高电平后(按键按下),模块上电,此时模块进入AT模式,波特率固定为: 38400, 可以直接发送AT指令。
(注:当用户忘记模块本身波特率时,使用第二种方法固定为38400,平时建议用户使用第-种方法进入AT模式! )
       

一、配置方法:
1、用串口调试助手配置
先根据如果所示连接蓝牙模块

模块连接示意图

然后打开资料里面的串口调试助手 XCOM V2.0
在这里插入图片描述

根据我底下配图配置好调试助手就可以根据手册发送AT指令进行配置蓝牙模块了。
发送某些指令的时候需要置高一次34脚,就是按一下蓝牙模块上的按键。有些指令是需要一直置高34脚,即一直按着按键,否则不能配置。
在这里插入图片描述

2、用单片机串口发送AT指令配置

单片机串口发送字符串代码:

void send(unsigned char *p)
{
	unsigned char index=0;
	do
	{
		SBUF=p[index++];
		while(TI == 0);
		TI = 0;
	}
	while(p[index]!=0);
}

函数配置:

unsigned char HC05_NAME[] = "AT+NAME=BBBBBB\r\n";//34脚一直置高
unsigned char HC05_PSWD[] = "AT+PSWD=1234\r\n";//34脚置高一次

void main()
{
	Bloot_Key=1;//配置蓝牙模块名称的时候34脚   一直置高
	UartInit();
	send(HC05_NAME);//发送蓝牙名称AT指令
	delay_ms(1000);
	Bloot_Key=0;
	Bloot_Key=1;//配置模块的配对密码34脚   置高一次
	delay_ms(500);
	Bloot_Key=0;
	send(HC05_PSWD);//发送配对密码AT指令

	while(1);
}

二、数据收发:

HC-05主从机一体蓝牙模块使用的是串口通信,即
模块的TXD连接MCU的RXD
模块的RXD连接MCU的TXD
在这里插入图片描述

数据接收:

void Usart() interrupt 4
{
	if(RI)
	{
		RI = 0;
		Dat=SBUF;
	}
}

数据发送:

void sendata(unsigned char temp)  //串口发送
{
	SBUF=temp;
	while(!TI);  //等待数据发送成功
	TI=0;         //软件清零
}

后在主程序对接收的数据进行解析处理,然后发送数据。
       
       

三、模块的连接:

       

1、两个蓝牙模块的连接

由于买到的蓝牙模块默认都是从机,所以需要把其中一个用AT指令配置成主机。AT指令如下:
在这里插入图片描述

配置成功后,只需要给两个模块供电即可自行连接,如果连接成功的话指示灯会两快闪灭一下,并且闪烁是同步的。(蓝牙默认配对密码是1234.不要修改配对密码,否则会连接不成功)
这是简单的连接方法,但是我看那个AT指令表,可以配置蓝牙模块,让它连接指定地址的蓝牙模块,可以自行查看AT指令的第15、27、32、33指令。
       

2、蓝牙模块和手机的连接
蓝牙模块为从机,在手机端下载一个蓝牙串口软件。
我用的蓝牙串口软件:(需要的话加我QQ传给你)

在这里插入图片描述
在这里插入图片描述

可以设置按键键盘,按下按键发送数据。
这个按键键盘是自己做的一个蓝牙遥控车的键盘操作。最近实验室装修,视频会在后续更新到此文章后面。

附录:
1, AT+ROLE设置主从模式:

AT+ROLE?是查询主从状态;AT+ROLE=1是设成主,AT+ROLE=0是设成从,AT+ROLE=2设成回环角色(Slave-Loop(回环角色)——被动连接,接收远程蓝牙主设备数据并将数据原样返回给远程蓝牙)。

2, AT+RESET:HC-05复位

3, AT+VERSION?:获取HC-05的软件版本号,只能获取,不能修改。

4, AT+ORGL:恢复出厂默认设置,当把模块设置乱了,使用此命令进行恢复默认值。

5, AT+ADDR?:获取HC-05的蓝牙地址码,只能获取,不能修改。

6, AT+NAME?:获取HC-05的名字,AT+NAME=BSP-06,修改模块的名字为BSP-06,具体名字自行修改。

7, AT+CLASS?:设置查询设备的类型,尽量不要去修改此参数。默认是1F00。

8, AT+IAC?:查询设置查询访问码,默认是9E8B33,尽量不要去修改此参数。

9, AT+PSWD?:查询设置配对密码,AT+PSWD=”0000”,密码要有双引号,密码是四位数字.

10, AT+UART:AT+UART?是查询当前模块的波特率,AT+UART=波特率,0,0。

11, AT+CMODE:AT+CMODE?是查询当前连接模式。AT+CMODE=0,1,2(0——指定蓝牙地址连接模式(指定蓝牙地址由绑定指令设置)1——任意蓝牙地址连接模式(不受绑定指令设置地址的约束)2——回环角色(Slave-Loop)默认连接模式:0)。

12, AT+BIND:AT+BIND?查询当前绑定地址,AT+BIND=NAP,UAP,LAP(用逗号隔开)。

13, AT+RMADD:从蓝牙配对列表中删除所有认证设备.

14, AT+STATE?:获取蓝牙模块工作状态.

15, AT+LINK=NAP,UAP,LAP:与远程设备建立连接。

16, AT+DISC:断开连接.

17, AT+RNAME?NAP,UAP,LAP:获取远程蓝牙设备名称.

18, AT+ADCN?:获取蓝牙配对列表中认证设备数。

19, AT+MRAD?获取最近使用过的蓝牙认证设备地址。

20, AT+INQM:设置查询模式,AT+INQM=1,9,48(1-带RSSI信号强度指示,9-超过9个蓝牙设备响应则终止查询,48-设定超时为48*1.28=61.44秒)