HC-06蓝牙串口通信模块使用指南与驱动代码实战

目录

HC-06介绍

AT指令调试

调试接线

AT指令

进入 AT 指令的方法

设置蓝牙名称

设置蓝牙配对密码

设置主从工作模式

设置波特率

设置校验位

模块接线

驱动代码

HC-06.h

HC-06.c

main.c


HC-06介绍

HC-06 蓝牙串口通信模块,支持 AT 指令,用户可根据需要更改角色(主、从模式)以及串口波特率、设备名称等参数,使用灵活。可以实现10 米距离通信。

模块采用邮票孔封装方式

无线工作频段为 2.4GHz ISM,调制方式是 GFSK

基于 Bluetooth Specification V2.0 带 EDR 蓝牙协议的数传模块

参数列表

AT指令调试

默认出厂参数:

波特率 9600N81(N81表示8位数据位,无奇偶检验,1位停止位.)

蓝牙名 HC-06,配对密码 1234。

调试接线

HC-06 USB to TTL
VCC 3.3V
GND GND
TXD RXD
RXD TXD

注意:不要勾选‘发送新行’,‘十六进制’,不需要回车换行。

AT指令

进入 AT 指令的方法

模块上电且在不配对的情况下,就处于AT 模式

建议:两条指令之间的时间间隔控制在 1S 或以上。

AT测试

指令 响应 说明
AT OK 测试模块是否可以接收

设置蓝牙名称

指令 响应 说明
AT+NAMEname OKsetname 参数 name:所要设置的当前名称,即蓝牙被搜索到的名称。20个字符以内

例如:

发送:AT+NAMEbill_gates

返回:OKsetname

这时蓝牙名称改为 bill_gates

参数可以掉电保存,只需修改一次。PDA 端刷新服务可以看到更改后的蓝牙名称。

注:HC-06 为主机时,不支持设置蓝牙名称。

设置蓝牙配对密码

指令 响应 说明
AT+PINxxxx OKsetPIN 模块在出厂时的默认配对密码是 1234。参数可以掉电保存,只需修改一次。

参数 xxxx:所要设置的配对密码,4 个数字,此命令可用于从机或主机。从机是适配器或手机弹出要求输入配对密码窗口时,手动输入此参数就可以连接从机。蓝牙模块主机搜索从机后如果密码正确,则会自动配对,主模块除了可以配对、连接从模块外,如果其他产品包含从模块的时候也可以配对、连接,比如含蓝牙的数码相机,蓝牙 GPS,蓝牙串口打印机,等等。这时蓝牙配对密码可能要改为 8888。
例如:
发送:AT+PIN8888
返回:OKsetPIN

设置主从工作模式

主机:用于向从机下发指令,能够搜索从机并主动建立连接的一方。
从机:用于接收主机下发的命令,不能主动建立连接,只能等别人连接自己。
主从一体:能够在主机和从机模式间切换,即可做主机也可作从机。

指令 响应 参数
AT+ROLE=S OK+ROLE:S S:设置模块为从模块 Slave,(模块默认为从机)
AT+ROLE=M OK+ROLE:M M:设置模块为主模块Master

 从机模式下蓝牙快闪,可与手机相连。

主机模式下蓝牙慢闪。

设置波特率

指令 响应 说明
AT+BAUD1 OK1200 波特率设置超过 115200 后用电脑无法使用,要用单片机编程,高于115200 的波特率才能使用。

用 AT 指令设好波特率后,下次上电使用不需再设置,可以掉电保存波特率。

串口助手中,
设好波特率,需修改串口助手的波特率为刚刚设置的波特率,然后再打开串口继续操作。

例:

发送:AT+BAUD2

返回:OK2400

波特率代码如下:

1——— 1200

2——— 2400

3——— 4800

4——— 9600(默认就是这个设置)

5——— 19200

6——— 38400

7——— 57600

8——— 115200

9——— 230400

A——— 460800

B——— 921600

C——— 1382400

设置校验位

指令 说明
AT+PN 无校验(模块默认即为无校验)
AT+ PE 模块为偶校验位
AT+PO 模块为奇校验位

模块接线

HC-06 STM32F103C8T6
VCC 3.3V
GND GND
TXD RXD(PA10)
RXD TXD(PA9)

驱动代码

蓝牙模块接收数据,通过串口发给单片机,单片机进行处理

HC-06.h

#ifndef          _HC_06_H_
#define			 _HC_06_H_

void HC06_Init(unsigned int baud);

#endif


HC-06.c

#include "stm32f10x.h"                  // Device header
#include "HC-06.h"

void HC06_Init(unsigned int baud)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;			//PA9	TXD
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStruct);
 
	
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;//PA10	RXD
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10;
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStruct);
	
	
	USART_InitTypeDef USART_InitStruct;
	USART_InitStruct.USART_BaudRate = baud;
	USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;		
	USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;					
	USART_InitStruct.USART_Parity = USART_Parity_No;		//无校验位							
	USART_InitStruct.USART_StopBits = USART_StopBits_1;		//1位停止位						
	USART_InitStruct.USART_WordLength = USART_WordLength_8b;							
	USART_Init(USART1, &USART_InitStruct);
	
	USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);	
	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	
	NVIC_InitTypeDef NVIC_InitStruct;
	NVIC_InitStruct.NVIC_IRQChannel = USART1_IRQn;
	NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
	NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
	NVIC_InitStruct.NVIC_IRQChannelSubPriority = 2;
	NVIC_Init(&NVIC_InitStruct);
	
	USART_Cmd(USART1, ENABLE);

}




main.c

#include "stm32f10x.h"                  // Device header
#include "OLED.h"
#include "HC-06.h"
uint8_t Data;
int main(void)
{
	OLED_Init();
	HC06_Init(9600);
	while (1)
	{
		OLED_ShowNum(1,1,Data,3);
	}
}


//串口一接收中断
void USART1_IRQHandler(void)
{
	uint8_t Byte=0;
 
	if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断
	{
		Byte=USART1->DR;
		if(Byte==0x30){ Data++;}
		if(Byte==0x31){ Data--;}
		if(Byte==0x32){ Data+=3;}
		if(Byte==0x33){ Data-=3;}
		USART_ClearITPendingBit(USART1, USART_FLAG_RXNE);
	}
 
}

参考手册

https://www.hc01.com/downloads/HC-06.pdf

作者:我不吃代码

物联沃分享整理
物联沃-IOTWORD物联网 » HC-06蓝牙串口通信模块使用指南与驱动代码实战

发表回复