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可以直接在手机应用商店搜索下载,一般搜索蓝牙调试助手就行(具体需要下载测试才行)。

相关推荐
fen_fen4 小时前
Python3:Jupyter Notebook 安装和配置
ide·python·jupyter
AIVoyager5 小时前
vscode本地化显示远程图形化界面
ide·vscode·编辑器
尤老师FPGA5 小时前
LVDS系列9:Xilinx 7系可编程输入延迟(二)
单片机·嵌入式硬件·fpga开发
yuhouxiyang7 小时前
学习海康VisionMaster之路径提取
学习·计算机视觉
雾削木7 小时前
mAh 与 Wh:电量单位的深度解析
开发语言·c++·单片机·嵌入式硬件·算法·电脑
PLUS_WAVE8 小时前
CogCoM: A Visual Language Model with Chain-of-Manipulations Reasoning 学习笔记
学习·语言模型·大模型·cot·vlm·推理模型·reasoning
绵绵细雨中的乡音8 小时前
Linux进程学习【环境变量】&&进程优先级
linux·运维·学习
贺函不是涵8 小时前
【沉浸式求职学习day27】
学习
努力奋斗的小杨8 小时前
学习MySQL的第十二天
数据库·笔记·学习·mysql·navicat
AiFlutter8 小时前
低代码平台开发手机USB-HID调试助手
单片机·游戏·计算机外设