STM32系列——手把手教你蓝牙模块HC05、HC06的使用,重在“用起来”(HAL库)

前言

不论是HC05还是HC06,我们用到的都是蓝牙模块的透传功能,只需要用到4个引脚:RXD、TXD、VCC(5V)、GND。

HC-05的使用

STM32系列——手把手教你蓝牙模块HC05、HC06的使用,重在“用起来”(HAL库)_第1张图片

1、HC-05有6个引脚,但是我们只用到4个。

2、HC-05正面有一个按键。与HC-06的区别是,它上电之前必须要按住此按键再插入电脑中,才能够进入AT模式。HC-06没有按键,直接插上就进入AT模式,蓝牙模块闪慢灯(1s1次)。

3、用一个usb转ttl模块与HC-05连接,usb转ttl模块与电脑连接,使用串口调试助手,在蓝牙模块的AT模式下可以用一些AT指令与蓝牙模块进行交互。

蓝牙模块默认波特率是38400,把停止位设置成1,数据位设置成8,校验位设置为none。

HC-05常用AT指令:

指令名                       响应                                含义

AT+NAME?              +NAME:Param OK         获得设备名称

AT+NAME=Param   OK                                  设置设备名称  Parm:想要设置的名字

AT+ROLE=0                                                    蓝牙模块为从模式

AT+CMODE=1                                                蓝牙模式设置为任意地址连接模式,可以被任意设备连接

AT+PSWD=1234                                             蓝牙配对密码为1234

AT+UART=9600,0,0                                        设置蓝牙通信波特率为9600,停止位1位,无校验位

HC-06的使用

HC-06与HC-05不同的是 :

 1、 HC-05一般都是主从机一体,既可以设置为主机也可以设置为从机。
  而HC-06在市场上分为两种情况,一种是:主从机一体;另外一种是:只有从机功能。

AT+ROLE设置主从模式: AT+ROLE?是查询主从状态;AT+ROLE=1是设成主;AT+ROLE=0是设成从。

 STM32系列——手把手教你蓝牙模块HC05、HC06的使用,重在“用起来”(HAL库)_第2张图片

这个默认波特率不是每个蓝牙模块都一样的,有的蓝牙模块默认波特率是115200,使用的时候需要看下商家资料。或者每个波特率试着改一下,总能试出来蓝牙模块的默认波特率。试成功的现象是AT模式下,通过电脑的串口助手,电脑能够和蓝牙模块正常通信。达到此效果后,手机连上蓝牙,肯定可以与单片机进行通信。

HC-06常用AT指令

一般只用前3个即可。

STM32系列——手把手教你蓝牙模块HC05、HC06的使用,重在“用起来”(HAL库)_第3张图片

蓝牙模块连上手机与STM32通信

 将蓝牙模块配置好以后,再次上电,打开手机蓝牙调试助手,这里推荐两个app:“蓝牙调试器”和“蓝牙调试宝”,实测好用;在app内连上蓝牙模块,此时蓝牙模块就相当于连接手机与单片机的桥梁,在stm32中写一些程序,就可以实现手机与stm32通信了。

注意:单片机的波特率一定要配置得和蓝牙模块的波特率一致。

STM32程序

蓝牙实现手机与单片机通信的原理就是使用串口,所以单片机中进行cubmx配置和写串口的程序就可以了;这里大家可以参考一下我的这篇文章,里面详细介绍了stm32串口基本使用:STM32系列——串口收发数据基础

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
/*宏定义*/
uint8_t RX_dat = 0;
 
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)//串口中断服务函数
{
    if(huart->Instance == USART1)//判断是否为串口1
    {
        if(huart->Instance == USART1)
         {
            if(RX_dat == 'a')//接收到字符a
            {
            //写上要执行的内容
            HAL_UART_Receive_IT(&huart1,&RX_dat,1);//每次接收以后都要再次开启接收中断
            }
       
         else if(RX_dat == 'b')//接收到字符b
         {
            //写上要执行的内容
            HAL_UART_Receive_IT(&huart1,&RX_dat,1);//每次接收以后都要再次开启接收中断
         }
       }
    }
}
/* USER CODE END 0 */
  /* USER CODE BEGIN 2 */    
    HAL_UART_Receive_IT(&huart1,&RX_dat,1);//开启接收中断
  /* USER CODE END 2 */

 手机app发送数据端

手机app发送数据端可能需要配置一下,要将发送的数据格式与程序中写的接收数据的格式对应,否则手机发送的数据单片机可能也接收不到。 

你可能感兴趣的:(STM32系列,stm32,单片机,嵌入式硬件)