蓝牙模块(BT04/HC05)

目录

一、介绍

二、模块原理

1.原理图与外形尺寸

2.引脚描述

3.蓝牙模块基础AT指令介绍

三、程序设计

usart3.h文件

usart3.c文件

四、实验效果 

五、资料获取

项目分享


一、介绍

        BT04A是一款蓝牙低功耗(Bluetooth Low Energy, BLE)模块,它主要用于物联网(IoT)设备之间的无线通信,特别是那些需要长电池寿命的应用场景。此模块支持蓝牙4.0标准,能够提供高速的数据传输速率以及低功耗特性,适合于穿戴设备、智能家居控制、健康监测等应用。

以下是BT04A蓝牙模块的参数:

型号

BT04-A

工作电压

3.3~5V

蓝牙模式

从模式

最大距离

10M

配对码

1234

串口参数

9600810

工作频段

2.4 GHz ISM频段

哔哩哔哩视频链接:

蓝牙模块(BT04 HC05)

(资料分享见文末) 

二、模块原理

1.原理图与外形尺寸

2.引脚描述

引脚名称

描述

RXD

信息接收端

TXD

信息发送端

GND

电源负极

VCC

电源正极

用于指示蓝牙模块所处状态,LED灯闪烁方式与蓝牙模块状态对应见表

3.蓝牙模块基础AT指令介绍

注意:发AT指令时必须回车换行,只能在模块未连接状态下才能生效。

三、程序设计

使用STM32F103C8T6通过串口调试助手(APP)控制LED亮灭

BT04_TX

PB11

BT04_RX

PB10

LED

PA0

串口

串口1

main.c文件

#include "stm32f10x.h"
#include "led.h"
#include "usart.h"
#include "delay.h"
#include "oled.h"
#include "usart3.h"

/*****************辰哥单片机设计******************
											STM32
 * 项目			:	蓝牙模块通信实验                     
 * 版本			: V1.0
 * 日期			: 2024.10.2
 * MCU			:	STM32F103C8T6
 * 接口			:	参看usart3.h							
 * BILIBILI	:	辰哥单片机设计
 * CSDN			:	辰哥单片机设计
 * 作者			:	辰哥 

**********************BEGIN***********************/

u8 dakai;
u8 Flag_dakai;

int main(void)
{ 
	
  SystemInit();//配置系统时钟为72M	
	delay_init(72);
	LED_Init();
	LED_On();
	USART1_Config();
	USART3_Config();

	printf("Start \n");
	delay_ms(1000);

  while (1)
  {
		 if(dakai==1&&Flag_dakai==0)
      {
				LED_On();
        Flag_dakai=1;
				printf("1 \n");
      }
      if(dakai==0&&Flag_dakai==1)
      {
				LED_Off();
        Flag_dakai=0;
				printf("0 \n");
      }
			
  }
}

usart3.h文件

#ifndef __USART3_H
#define __USART3_H

#include "stm32f10x.h"                  // Device header
#include "oled.h"
#include "usart.h"

/*****************辰哥单片机设计******************
											STM32
 * 项目			:	蓝牙模块通信实验                     
 * 版本			: V1.0
 * 日期			: 2024.10.2
 * MCU			:	STM32F103C8T6
 * 接口			:	参串口3						
 * BILIBILI	:	辰哥单片机设计
 * CSDN			:	辰哥单片机设计
 * 作者			:	辰哥 

**********************BEGIN***********************/


void USART3_Config(void); //串口 3 初始化



#endif

usart3.c文件

#include "usart3.h"	

/*****************辰哥单片机设计******************
											STM32
 * 项目			:	蓝牙模块通信实验                     
 * 版本			: V1.0
 * 日期			: 2024.10.2
 * MCU			:	STM32F103C8T6
 * 接口			:	串口3						
 * BILIBILI	:	辰哥单片机设计
 * CSDN			:	辰哥单片机设计
 * 作者			:	辰哥 

**********************BEGIN***********************/

//串口1中断服务程序
	//初始化 IO 串口 3
	//pclk1:PCLK1 时钟频率(Mhz)
	//bound:波特率  
void USART3_Config()
{ 
			NVIC_InitTypeDef NVIC_InitStructure;
		GPIO_InitTypeDef GPIO_InitStructure;
		USART_InitTypeDef USART_InitStructure;
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//GPIOB 时钟
		RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE); //串口 3 时钟使 USART_DeInit(USART3); //复位串口 3
		//USART3_TX PB10
		GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10; //PB10
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出
		GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化 PB10
		
		//USART3_RX PB11
		GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
		GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; //浮空输入
		GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化 PB11
	
		USART_InitStructure.USART_BaudRate= 9600; //波特率设
		USART_InitStructure.USART_WordLength=USART_WordLength_8b; //8 位数据格
		USART_InitStructure.USART_StopBits = USART_StopBits_1; //一个停止
		USART_InitStructure.USART_Parity = USART_Parity_No; //无奇偶校验
		USART_InitStructure.USART_HardwareFlowControl=
		USART_HardwareFlowControl_None;
		//无硬件数据流
		USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
	  //收发模式
	  USART_Init(USART3, &USART_InitStructure); //初始化串口 3
	  USART_Cmd(USART3, ENABLE);//使能串口
	  USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//使能接收中断 
	  //设置中断优先级
	  NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
	  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0 ;//抢占优先级 2
	  NVIC_InitStructure.NVIC_IRQChannelSubPriority =0; //子优先级 3
	  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ 通道使能
	  NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化 NVIC 寄存器
}
extern u8 Flag_dakai,dakai;

void USART3_IRQHandler(void)
{ u8 Res; 
  if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)//接收到数据
  { 
		Res =USART_ReceiveData(USART3);
		if(Res=='1')
		{
			dakai=1;
			Res='5';
		}			
		if(Res=='2')
		{
			dakai=0;
			Res='5';
		}						
  } 
} 

四、实验效果 

五、资料获取

项目分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值