STM32+HC-05蓝牙模块学习与使用(内附资料)

引言

随着物联网技术的快速发展,短距离无线通信技术变得日益重要。蓝牙作为一种低功耗、低成本的无线通信技术,在嵌入式系统中得到了广泛应用。本文将详细介绍如何使用STM32微控制器与HC-05蓝牙模块进行通信,实现数据的无线传输。

硬件准备
  • STM32微控制器(本文以STM32F103ZET6为例)
  • HC-05蓝牙模块
  • USB-TTL串口转换器
  • 杜邦线
  • 电源(3.3V或5V)
硬件连接
  1. 将HC-05的VCC和GND分别连接到STM32的3.3V和GND。
  2. 将HC-05的TX(发送端)连接到STM32的RX(接收端,如PA10)。
  3. 将HC-05的RX(接收端)连接到STM32的TX(发送端,如PA9)。
软件配置
  1. 初始化STM32串口:配置STM32的串口以与HC-05通信。
  2. 配置HC-05蓝牙模块:通过AT指令设置HC-05的工作参数。
HC-05蓝牙模块配置

HC-05模块支持AT指令集,可以通过串口发送特定的AT指令来配置模块。以下是一些常用的AT指令:

  • AT:测试模块是否响应。
  • AT+ORGL:恢复模块到出厂设置。
  • AT+PSWD="123456":设置模块的配对密码。
  • AT+ROLE=0:设置模块为从机模式。
  • AT+UART=38400,0,0:设置模块的波特率为38400,无奇偶校验。
STM32串口初始化代码
#include "stm32f10x.h"
#include "usart.h"

void USART2_Init(void) {
    GPIO_InitTypeDef GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    USART_InitStructure.USART_BaudRate = 38400;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    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(USART2, &USART_InitStructure);

    USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
    NVIC_EnableIRQ(USART2_IRQn);
}

void USART2_SendByte(uint8_t byte) {
    USART_SendData(USART2, byte);
    while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
}

void USART2_IRQHandler(void) {
    if (USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) {
        uint8_t data = (uint8_t)USART_ReceiveData(USART2);
        // 处理接收到的数据
    }
}
测试通信
  1. 编写代码发送数据到HC-05模块。
  2. 使用串口调试助手或其他蓝牙设备接收数据,验证通信是否成功。
示例代码:发送数据到HC-05
int main(void) {
    SystemInit();
    USART2_Init();

    char *message = "Hello, Bluetooth!";
    while (1) {
        for (int i = 0; message[i] != '\0'; ++i) {
            USART2_SendByte(message[i]);
        }
        // 适当延时
    }
}
结论

通过本文的学习,你应该能够掌握如何将STM32微控制器与HC-05蓝牙模块进行连接和通信。这为开发基于STM32的无线通信项目提供了基础。实际应用中,你可能需要根据项目需求调整波特率、通信协议等参数。

✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进

❤欢迎关注我的知乎:对error视而不见

代码获取、问题探讨及文章转载可私信。

☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。

🍎获取更多嵌入式资料可点击链接进群领取,谢谢支持!👇

点击领取更多详细资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AI_Guru人工智能

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

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

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

打赏作者

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

抵扣说明:

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

余额充值