前言
通过HC06蓝牙模块串口通信达到对单片机的控制目的。
需要掌握:串口通信;蓝牙模块初始化;蓝牙协议命令等。
为了方便理解步骤,博主自制了蓝牙串口通信app。
材料:
单片机
hc06模块
tll转usb模块
led灯(测试控制命令即可)
蓝牙模块初始
本文用的hc06模块。蓝牙模块还有hc05等,用法不尽相同但触类旁通。
模块连接
先看图
hc06
usb转ttl
老规矩:交叉连接
vcc→vcc
gnd→gnd
txd→rxd
rxd→txd
工作模式
先说蓝牙模块的三种工作模式
待连接模式:快速闪灯
该模式下,若蓝牙模块被设置为从机,则等待其他设备连接,若为主机,就会搜寻可连接的设备
AT模式:快速闪灯(对,快速闪灯)
该模式下,可以通过从串口发送AT指令,对蓝牙模块的名称,密码,波特率,主从机等属性进行设置,具体的AT指令此处不加以赘述,网上一查就有,需要注意的是HC05发送AT指令时必须以\r\n结尾,而HC06则不能以\r\n结尾,否则都会导致没有响应的错误出现
连接模式:长亮灯
开始设置AT模式
hc06和tll转usb连接/也可和单片机串口连接(总之就是蓝牙模块和计算机连接,通过
串口助手
设置模块)
-
找到有线串口线对应的端口,将波特率设置为与HC-06波特率一致(默认为
9600
),8位数据位,1位结束位,无奇偶校验,然后打开串口。 - 首先输入AT(无空格回车),然后串口助手会返回OK,修改波特率时输入AT+BAUDx(x为波特率编号),串口助手会返回OKnnnn(nnnn是你设置的波特率)。注意,在这之后若还做其他命令操作,必须先断开连接,修改串口助手的波特率为刚刚设置的波特率,然后再打开串口继续操作。
-
一般HC-06模块的
默认名称
就是hc-06,
默认配对密码
是1234
其他AT命令
1、
测试通信
发送:AT
返回:OK
2、
修改波特率
发送:AT+BAUD8
返回:OK115200
波特率标号对应表:
1———1200
2———2400
3———4800
4———9600(默认)
5———19200
6———38400
7———57600
8———115200
9———230400
A———460800
B———921600
C———1382400
3、
改蓝牙名称
发送:AT+NAMEname
返回:OKname
4、
改配对密码
发送:AT+PINxxx
返回:OKsetpin
看看就好
如此处我在更改蓝牙名字
检测蓝牙模块是否正常的方法
1、给蓝牙模块供电
2、蓝牙配对
3、打开串口助手,设置波特率9600,数据位8位,结束位1位,校验位无
4、将蓝牙的TXD和RXD短接
5、随意发送一个数据,串口助手将回显同样的数据
单片机部分
老规矩:交叉连接
与单片机连接
vcc→vcc
gnd→gnd
txd→rxd
rxd→txd
代码部分
#include <reg52.h>
#include <intrins.h>
//自定义类型
#define uchar unsigned char
#define uint unsigned int
uchar tmp;
//定义端口
sbit led0=P1^0; //指示灯0
sbit led1=P1^1; //指示灯1
//声明函数
void InitUART(); //串口初始化
void SendOneByte(uchar c); //单字节发送函数
void UARTInterrupt(); //串口中断函数
//主函数
void main(void)
{
InitUART();
}
//串口初始化函数
void InitUART()
{
TMOD = 0x20; // 定时器1工作于方式2
SCON = 0x50; //串口工作模式1
TH1 = 0xFD; // 波特率9600
TL1 = TH1;
PCON = 0x00;
EA = 1;
ES = 1;
TR1 = 1;
}
//单字节数据发送函数
void SendOneByte(uchar c)
{
SBUF = c;
while(!TI);
TI = 0;
}
//串口中断函数
void UARTInterrupt() interrupt 4
{
if(RI) //确认接收数据
{
RI = 0;
tmp=SBUF;
//选择函数
switch(tmp)
{
case '1':
led0=0; //收到字符1,指示灯0亮
led1=1;
SendOneByte(tmp);
break;
case '2':
led0=1; //收到字符1,指示灯1亮
led1=0;
SendOneByte(tmp);
break;
default: //其他,灯全灭
led0=1;
led1=1;
SendOneByte(tmp);
}
}
else
TI = 0;
}
以上
蓝牙APP部分
APP已放在资源里
UI极其简陋