STM32F407+蓝牙HC-05+手机蓝牙助手

突然想试试怎么玩蓝牙模块,本文演示工程较为简单,最后结果为通过手机蓝牙助手控制单片机上小灯的亮灭。

用到的软件:STM32CubeMX、Keil、串口调试助手XCOM 、蓝牙调试宝(手机蓝牙调试助手)

用到的硬件:32单片机、HC-05蓝牙模块、USB转TTL模块

本文在了解如何使用STM32CubeMX、Keil的基础上进行。

配置蓝牙模块

首先配置蓝牙HC-05。

通过USB转TTL模块(CH340)将HC-05模块与电脑建立连接,是为了初始化配置蓝牙模块。

注意:

只需连接四个引脚

蓝牙  —— TTL(下面一一对应)

VCC —— VCC

GND —— GND

TXD —— RXD

RXD —— TXD

先将USB转TTL模块与蓝牙模块连接好后,按住蓝牙模块上的小按键不动,将USB接口插到电脑上之后再松手,此做法是为了让蓝牙模块上电时以“命令响应模式”连接电脑。

以“命令响应模式”成功上电后,蓝牙模块上的小灯会进入慢闪状态。

然后我们打开串口调试助手XCOM,对蓝牙模块进行配置。

在设备管理器端口处通过拔插USB转TTL模块可以知道要连接的是哪一个端口,然后在XCOM中选择相应串口。向HC-05写AT指令时波特率为38400,停止位1,数据位8,奇偶校验无。配置完成后打开串口。(左下角默认勾选“发送新行”)

AT指令
指令响应注释
AT+ORGLOK恢复默认状态
AT+RESETOK模块复位
AT+ADDR?

+ADDR:Param 

OK

获得蓝牙模块地址
AT+VERSION?

+VSRSION:Param

OK

获得软件版本号
AT+ROLE=ParamOK

Param参数取值如下:

0-从角色;1-主角色;

2-回环角色;默认值:0

AT+CMODE=1OK蓝牙连接模式为任意地址连接模式,设置后该模块可以被任意蓝牙设备连接
AT+NAME=ParamOK

设置设备名称 

Parm:想要设置的名字

AT+NAME?

+NAME:Param 

OK

获取设备名称
AT+PSWD=ParamOK

设置模块密码 :

Parm:想要设置的密码;

默认为“1234”

AT+PSWD?

+PSWD:Param 

OK

获得模块密码

AT+UART=Param1,Param2,Param3

OK

设置串口参数

Param1:波特率 ;

Param2:停止位 ;

Param3:校验位。

注意:

停止位:0 —— 1位

AT+UART?

+UART:Param1,Param2,Param3 

OK

获得串口参数
AT指令错误0、1、2、3指令错误or指令结果为默认值or设备不支持

对HC-05蓝牙模块进行设置:

将此蓝牙模块设置为从模式、连接模式为任意地址连接、自定义名称和密码;

设置串口参数为:

波特率9600,停止位1,校验位0.(即AT+UART=9600,0,0)

到这里蓝牙模块的配置就完成了。

CubeMX+Keil

此处省略CubeMX的基础配置......

开启两个小灯。

配置串口和波特率等参数。

使能中断

添加DMA传输通道

更新代码到Keil

写一段代码......

void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
	if(huart == &huart3)
		{
			HAL_UART_Transmit_DMA(&huart3, receiveDate, Size);			
			
			if (receiveDate[0] == 0xAA)                 //验证数据,翻转小灯,发送数据较长
			{
				if(receiveDate[1] == Size)
				{
					uint8_t sum = 0;
					for (int i = 0; i < Size - 1; i++)
					{
						sum += receiveDate[i];
					}
					
					if (sum == receiveDate[Size - 1])
					{
						for (int i = 2; i < Size - 1; i += 1)
						{
							switch (receiveDate[i])
							{
								case 01 : HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_5); break;
								case 02 : HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_6); break;
							}
						}
					}
				}
			}
			HAL_UARTEx_ReceiveToIdle_DMA(&huart3, receiveDate, sizeof(receiveDate));
		}
}

此处代码参考b站keysking的蓝牙模块视频,在这不做讲解。

将蓝牙模块于单片机连接,注意RXD——TXD、TXD——RXD,供电。

噢,不要忘记烧代码。

连接手机蓝牙

先将手机蓝牙打开,将手机蓝牙与你命名的蓝牙模块配对(我前面命名的Wcz)

我使用安卓系统手机下载了一个叫“蓝牙调试宝”的软件。

授权进去,可以查找到附近的蓝牙设备

点击连接

根据所写代码发送数据(代码里面加了检验,数据较长)

通过手机发送数据控制小灯亮灭。

这就完成了,通过手机蓝牙助手向蓝牙模块传输数据,来实现对小灯的控制。从这个简单的思路出发,可以完成更多的sao操作,要我们自己去玩代码咯。

最后

想玩玩蓝牙,刚刚学会,写下来,仅以此博客来记录一下我的学习。也希望能帮到你。

  • 9
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值