STM32驱动HC05蓝牙串口通信模块

前言

时不可以苟遇,道不可以虚行。


今天分享一下最近学习的 HC05 蓝牙模块,通过用 手机蓝牙控制 STM32 单片机 进行 点灯、传输数据、显示波形 等基础操作。


一、介绍

HC05模块是一款高性能主从一体蓝牙串口模块,说白了,只是个蓝牙转串口的设备,你只要知道串口怎么编程使用,就可以了,实现了所谓的透明传输。


准备工作

  • STM32H750VBT6
  • IDE:Keil5
  • STM32CubeMX
  • VOFA+ 串口调试

二、手机蓝牙控制 STM32 单片机

  • 手机通过蓝牙,向 STM32 单片机发送消息,STM32 接收到消息之后原封不动的返回给手机,也可以修改成,手机发送特定的消息,然后,STM32 单片机做出相对应的动作。比如:点亮LED、发动电机、显示波形 等等。

连接说明:

在这里插入图片描述

数据包格式:

在这里插入图片描述


三、STM32 控制程序

/* USER CODE BEGIN Includes */

#include "stdio.h"
#include "math.h"
#include "stdarg.h"

#define CONSOLEBUF_SIZE 256

/* USER CODE END Includes */
/* USER CODE BEGIN PTD */

static char Uart_buf[CONSOLEBUF_SIZE];

void PrintfDebugUart(const char *fmt, ...)
{
	va_list args;
	va_start(args, fmt);
	int length = vsnprintf(Uart_buf, sizeof(Uart_buf) - 1, fmt, args);
	va_end(args);
	
	HAL_UART_Transmit(&huart1, (uint8_t *)&Uart_buf, length, 0xffff);
}

/* USER CODE END PTD */
/* USER CODE BEGIN PD */

uint8_t RxBuffer[4];		//接收数据包的变量
uint8_t TxBuffer[4];		//发送数据包的变量
uint8_t wave[100] = {0}; 

/* USER CODE END PD */
  /* USER CODE BEGIN 2 */

	PrintfDebugUart("wang_Test.\r\n");
	
	for(int i=0; i<100; i++)
	{
		wave[i] = (sin(2 * 3.1415926 * i / 100) + 1) * 100 / 2;		//虚拟数据
	}
	
	HAL_UART_Receive_IT(&huart1, RxBuffer, 4);		//循环使能,不断接受
	
  /* USER CODE END 2 */

/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)  //中断服务函数
{
	if(huart == &huart1)
	{
		switch(RxBuffer[1])
		{
			case 1:
			{
				HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);
				PrintfDebugUart("LED IS OFF.\r\n");
			}break;
			case 2:
			{
				HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);
				for(uint16_t i=0; i<100; i++)
				{
					TxBuffer[0] = 0xA5;
					TxBuffer[1] = wave[i];
					TxBuffer[2] = TxBuffer[1];
					TxBuffer[3] = 0x5A;
					HAL_UART_Transmit(&huart1,TxBuffer,4,0xffff);
				}
				PrintfDebugUart("LED IS OPEN.\r\n");
			}break;
			case 3:
			{
				PrintfDebugUart("Over.\r\n");
			}
			
			default:
			{
				;
			}
		}
		HAL_UART_Receive_IT(&huart1, RxBuffer, 4);		//循环使能,才能不断接收
	}
}
/* USER CODE END 4 */

实验结果

在手机上显示波形,且可以通过按键控制灯的亮灭:

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

W_oilpicture

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

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

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

打赏作者

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

抵扣说明:

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

余额充值