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

前言

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

HC-05的使用

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是设成从。

 

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

HC-06常用AT指令

一般只用前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发送数据端可能需要配置一下,要将发送的数据格式与程序中写的接收数据的格式对应,否则手机发送的数据单片机可能也接收不到。 

步骤: 1. 两个蓝牙模块必须一个作为主机,另一个作为从机才能建立连接(上电后,从机一直处于接受状态,等待被连接。而主机则主动发出信号,寻找目标从机,前提是该目标从机的mac地址事先被写入到主机的flash芯片中储存) 2. 蓝牙模块上电前一直按住key按键不放,上电后松开,此时LED灯处于慢闪状态(每秒闪1次),提示已经进入AT指令响应状态,可以进行接收AT指令控制 3. PC端打开安可信串口助手(带AT指令),打开相应的串口,发送AT+ROLE?\n查询该模块的主从角色,如果为0,则为从机,如果为1则为主机。本例中,此模块(图中左边的HC-05模块)设为主机,则发送AT+ROLE=1\n,设为主机,成功返回OK 4. 发送AT+ADDR?\n查询此模块的mac地址,本例中为98d3:33:80ebdf,记下来稍后为从机的地址绑定用。同样的方法将另一个模块(图中右边的HC-05模块)设置为从机(AT+ROLE=0\n),并且查询到mac地址为98d3:36:aac2 5. 向主机串口中发送AT+BIND=98d3,36,aac2\n绑定从机的mac地址,成功则返回OK。发送AT+CMODE=0\n将主机设为指定蓝牙地址连接模式(即只允许主机向绑定好mac地址的蓝牙从机设备发起连接) 6. 同样地,向从机串口发送AT+BIND=983d,33,80ebdf\n绑定主机的mac地址,成功则返回OK。发送AT+CMODE=0\n将从机也设为指定蓝牙地址连接模式(即只允许从机接受绑定好mac地址的蓝牙主机设备发起的连接) 7. 至此,主从机均设置完毕。主从两模块松开key键重新上电,LED都快闪(每秒闪2次),表明均处于等待配对状态,随后大约几秒钟后,LED闪烁频率发生变化(不确定),表明已经侦测到目标设备,正在建立连接。随后大约一秒钟,很快 LED变成慢双闪状态(每2秒闪一次,每次连闪2下),提示已经配对成功,可以通过蓝牙协议传输数据了 8. 此时,在串口助手中发送一串字符,如果另一个蓝牙模块的串口助手里收到了同样的字符,且回送的字符,对方亦能收到,则通信成功。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麦克斯同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值