HC05与STM32进行串口通讯实现与手机APP的数据透传

HC05与STM32与手机透传

1.实验工具:正点原子的精英版STM32F103ZET6,通用BLE蓝牙模块一个HC05(最便宜的蓝牙模块),手机,电脑
2.HC05调试:若HC05上面有小按键,则按住按键不松,然后给HC05上电,观察蓝牙模块指示灯每隔两秒慢闪,则进入AT配置模式,松开按键。(正常蓝牙直接上电时指示灯快闪为从机模式)
3.AT命令调试:本次不使用TTL转串口模块,将STM32开发板的PA9,PA10短接片拔掉,将HC05的TX,RX用杜邦线与STM32的RX,TX相连(记住必须TX接RX,RX接TX),进入AT配置模式后打开电脑端的串口助手,记住波特率一定要为38400,选择对应的端口连接。勾选串口助手下面的发送新行。发送AT指令,若发送AT,若有OK回应则已进入AT配置模式,且HC05模块工作正常。
4.STM32与HC05连线:由于STM32的USART1,与USART2被占用,并未留出相应管脚,建议用USART3。HC05与STM32F103ZET6的USART3串口相连,RX接PB10,TX接PB11,电源接5V(不要接3.3v,可能因电压过低而导致通讯失败)HC05的剩下两个管脚悬空不接。
5.手机蓝牙连接HC05:打开手机蓝牙,打开手机蓝牙调试助手APP(网上,应用商店都有自己下载)连接成功后HC05由快闪变成每隔两秒双闪。默认十进制发送数据,对于数字不会出现乱码,对于汉字会出现乱码现象。
6.STM32串口程序:在程序主函数中判断是否接受中断,然后调用串口接受函数接受信息,然后将接受到的信息赋值给u8类型变量,调用串口发送函数将接受到的信息发送给手机APP,可以根据接受到的数据控制STM32上的相应的设备。
相应代码如下:
#include “sys.h”
#include “usart3.h”
u8 USART3_RX_BUF[USART3_REC_LEN];
u16 USART3_RX_STA=0;
u8 res;
void usart3_init(u32 bound)
{
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructurea;
USART_InitTypeDef USART_InitStruct;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
USART_DeInit(USART3);
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure); //PB10

  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;
  GPIO_Init(GPIOB,&GPIO_InitStructure); 
  NVIC_InitStructurea.NVIC_IRQChannel=USART3_IRQn;
  NVIC_InitStructurea.NVIC_IRQChannelCmd=ENABLE;
  NVIC_InitStructurea.NVIC_IRQChannelPreemptionPriority=2;
  NVIC_InitStructurea.NVIC_IRQChannelSubPriority=2;
  NVIC_Init(&NVIC_InitStructurea);        
  USART_InitStruct.USART_BaudRate=bound;	USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
	USART_InitStruct.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
	USART_InitStruct.USART_WordLength=USART_WordLength_8b;
	USART_InitStruct.USART_Parity=USART_Parity_No;
	USART_InitStruct.USART_StopBits=USART_StopBits_1;
USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
	USART_Init(USART3,&USART_InitStruct); 
	USART_Cmd(USART3,ENABLE);

}
void USART3_IRQHandler()
{
if(USART_GetITStatus(USART3,USART_IT_RXNE)!=RESET)
{
res=USART_ReceiveData(USART3);
USART_SendData(USART3,res);
USART_SendData(USART1,res);
}
}
STM32去掉短接片位置图片:
在这里插入图片描述


  • 15
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
HC-05是一款常用的串口蓝牙模块,可以与STM32微控制器实现无线通信。下面简单介绍一下如何通过HC-05与手机APP进行通信。 首先,我们需要在手机上下载并安装一个支持蓝牙通信的APP。常用的APP有Bluetooth Terminal、Serial Bluetooth等。这些APP具有数据接收和发送的功能。 接下来,我们需要在STM32中配置USART串口通信,并将其连接到HC-05模块的TX和RX引脚。为了与手机APP通信,我们需要设置串口的波特率和数据位、停止位、校验位等参数,以确保通信的准确性。 在STM32的程序中,我们可以使用UART库函数来实现HC-05的通信。通过在主循环中不断地读取和发送数据,可以实现与蓝牙模块的通信。当STM32接收到数据时,可以根据需要进行相应的处理,并通过串口将响应数据发送回蓝牙模块。这样,手机APP就可以接收到STM32发送的数据,并做出相应的操作。 在手机APP中,我们需要先进行蓝牙设备的配对和连接。一旦与HC-05模块连接成功,我们可以通过APP的界面发送数据STM32,也可以接收STM32发送的数据。这样,就实现手机APPSTM32之间的无线通信。 综上所述,通过HC-05串口蓝牙模块和手机APP,我们可以实现STM32与手机之间的通信。这样的无线通信方案在物联网应用中具有广泛的应用前景,可以实现远程控制、数据采集、感器监测等功能。同时,这种通信方式也大大简化了设备之间的连接,提高了系统的灵活性和可扩展性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值