STM32CubeIDE基础学习-HC05蓝牙模块和手机通信

STM32CubeIDE基础学习-HC05蓝牙模块和手机通信


文章目录


前言

前面的文章学习了串口通过轮询和中断的简单使用方法,现在就来用这个串口实践一下,巩固串口使用轮询的方式实现串口通信,实现手机和蓝牙串口模块通信。

STM32CubeIDE基础知识学习回顾

实验目的:

学习使用蓝牙无线串口和手机进行通信功能的使用,实现手机蓝牙调试助手发送指令给蓝牙模块从而通过给单片机串口处理,进而实现单片机控制LED的功能。


第1章 硬件连接

接线如下表所示

引脚标号 单片机 HC05蓝牙模块
1 5V VCC
2 GND GND
3 PB11 TXD
4 PB10 RXD

注意

1、单片机串口配置的波特率是多少,那么蓝牙模块的通信波特率也需要对应设置为多少才行,也就是两者的通信波特率需要保持一致才行,不然手机会显示乱码的。

2、本实验可以直接使用蓝牙模块的通信功能,不用配置相关功能及参数了,所以代码不用添加配置指令代码,直接添加串口功能代码即可。

第2章 工程配置

本实验将采用前面的LED工程作为模板,直接拷贝在上面添加串口功能配置即可。

按照标号的顺序依次配置即可,如下图所示:

串口模式选择异步通信,下面串口的参数可以随意自己设置合适的,我设置波特率为115200,8位数据位,1位停止位,无奇偶校验。

参数配置完成后如下图所示:

可以看到芯片处多了一个USART3的定义。

到此,串口3相关配置就完成了,生成工程就可以编写代码了。

第3章 代码编写

生成代码后,可以看到main文件里面多了一个串口3的初始化函数,如下图所示:

进去该函数以后,可以看到相关串口参数定义,如下图所示:

串口引脚配置如下图所示:

当检查代码没有问题以后,就可以进行功能代码的编写了。

3.1 手机指令控制LED

变量定义如下图所示:

代码片示例如下:

c 复制代码
  /* USER CODE BEGIN 1 */
	char bufcahr[] = "system is ready!";    /* 开机提示 */
	uint8_t rx_buf = 0; 
  /* USER CODE END 1 */

main函数里面编写串口轮询功能代码如下图所示:

代码片示例如下:

c 复制代码
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  HAL_UART_Transmit(&huart3, (uint8_t *)bufcahr, sizeof(bufcahr), 1000);  /* 开机提示 */

  while (1)
  {
	  HAL_UART_Receive(&huart3, (uint8_t *)&rx_buf, sizeof(rx_buf), 1000);/* 串口接收 */

	  if (rx_buf == 'O')           /* 开灯指令 */
	  {
		  LED(0);                  /* 点亮LED */
	  }
	  else if (rx_buf == 'F')      /* 关灯指令 */
	  {
		  LED(1);                  /* 关闭LED */
	  }
	  else
	  {
		  HAL_UART_Transmit(&huart3, (uint8_t *)"please input cmd!", 17, 1000);/* 发送提示 */
	  }
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
  }

在while循环外面写一个串口发送函数,用来提示正常开机并且说明串口正常,从而可以发送控制指令。

接着在while循环里面添加串口接收函数,用来接收手机发给蓝牙的指令。

下面添加if判断,如果判断接收的指令和手机发过来的一致,那么就执行里面开/关灯的功能操作,否则就执行后面的提示语句。

第4章 实验现象

编译下载代码后,等待手机蓝牙调试助手正常连接蓝牙名字后,就可以进入消息收发对话模式界面了。

按一下开发板复位按键,可以看到打印一条开机提示语句,接着就可以输入控制指令'O'或'F'了。效果如下图所示。

或者直接在按钮控制界面点击按钮控制即可,提前编辑好相关指令就行,如下图所示:

发送大写字母O就可以看到单片机的LED被点亮了,发送大写字母F就可以看到单片机的LED熄灭了。

如果要有提示,可以在LED功能代码下面添加串口发送函数提示即可。如下图所示:


总结

通过蓝牙模块实现无线通信,从而实现串口控制功能。主要手机指令发送正确基本没有什么问题的。

APP可以直接在手机应用商店搜索下载,一般搜索蓝牙调试助手就行(具体需要下载测试才行)。

相关推荐
amazinging几秒前
北京-4年功能测试2年空窗-报培训班学测开-第三十九天
python·学习·appium
m0_6786933315 分钟前
深度学习笔记29-RNN实现阿尔茨海默病诊断(Pytorch)
笔记·rnn·深度学习
每次的天空23 分钟前
Android-自定义View的实战学习总结
android·学习·kotlin·音视频
重庆小透明30 分钟前
力扣刷题记录【1】146.LRU缓存
java·后端·学习·算法·leetcode·缓存
sigmoidAndRELU1 小时前
读Vista
笔记·stable diffusion·世界模型
Sincerelyplz2 小时前
【Temproal】快速了解Temproal的核心概念以及使用
笔记·后端·开源
岁月玲珑2 小时前
【使用Android Studio调试手机app时候手机老掉线问题】
android·ide·android studio
Wangshanjie_982 小时前
【STM32】-串口通讯
stm32
许白掰3 小时前
【stm32】HAL库开发——CubeMX配置RTC,单片机工作模式和看门狗
stm32·单片机·嵌入式硬件·学习·实时音视频
future14123 小时前
C#学习日记
开发语言·学习·c#