网站模板内容怎么添加图片,无锡网站设计公司,《php网站开发》电子课件,上线了做网站价格贵51单片机和STM32集成蓝牙模块实用指南
蓝牙模块#xff08;如HC-05、HC-06、JDY-31等#xff09;是嵌入式开发中常用的无线通信模块#xff0c;广泛应用于智能家居、物联网、机器人等领域。本文将详细介绍如何将蓝牙模块集成到 51单片机 和 STM32 中#xff0c;并提供一个…
51单片机和STM32集成蓝牙模块实用指南
蓝牙模块如HC-05、HC-06、JDY-31等是嵌入式开发中常用的无线通信模块广泛应用于智能家居、物联网、机器人等领域。本文将详细介绍如何将蓝牙模块集成到 51单片机 和 STM32 中并提供一个简单的点灯Demo代码。 1. 蓝牙模块简介
蓝牙模块是一种基于蓝牙协议的无线通信模块通常支持串口通信UART。通过蓝牙模块单片机可以与手机、电脑或其他蓝牙设备进行数据传输。
常见模块HC-05主从一体、HC-06从机、JDY-31低成本。通信方式串口UART。工作模式 AT模式用于配置模块参数如波特率、名称、配对密码等。通信模式用于数据传输。 2. 硬件连接
(1) 蓝牙模块引脚说明
VCC电源正极通常为3.3V或5V。GND电源负极。TX串口发送引脚接单片机的RX。RX串口接收引脚接单片机的TX。STATE状态指示引脚可选用于检测模块连接状态。EN/KEY使能或AT模式引脚具体功能因模块而异。
(2) 连接方式
51单片机 蓝牙模块的 TX 接单片机的 RXP3.0。蓝牙模块的 RX 接单片机的 TXP3.1。GND 接 GND。VCC 接 5V注意部分蓝牙模块支持3.3V供电需根据模块规格选择。 STM32 蓝牙模块的 TX 接STM32的 RX如USART1的PA10。蓝牙模块的 RX 接STM32的 TX如USART1的PA9。GND 接 GND。VCC 接 3.3V注意STM32的IO电平为3.3V蓝牙模块也需使用3.3V供电。 3. 配置蓝牙模块
(1) 进入AT模式
不同蓝牙模块进入AT模式的方法可能不同常见方法包括 将 EN/KEY 引脚接高电平3.3V或5V。按住模块上的按钮如果有并上电。通过特定波特率如38400发送AT指令。 发送AT确认模块返回OK。
(2) 修改模块参数 设置波特率 ATUART9600,1,0设置名称 ATNAMEMyBluetooth设置配对密码 ATPSWD1234重启模块使设置生效。 4. 51单片机点灯Demo
(1) 硬件连接
蓝牙模块 TX 接单片机的 RXP3.0。RX 接单片机的 TXP3.1。GND 接 GND。VCC 接 5V。 LED灯 正极接单片机的 P1.0。负极接 GND通过限流电阻。
(2) 代码实现
#include reg52.hsbit LED P1^0; // 定义LED引脚void UART_Init() {SCON 0x50; // 8位数据位1位停止位TMOD | 0x20; // 定时器1模式2TH1 0xFD; // 波特率9600TL1 0xFD;TR1 1; // 启动定时器1ES 1; // 使能串口中断EA 1; // 使能总中断
}void UART_SendByte(unsigned char byte) {SBUF byte;while (!TI);TI 0;
}void UART_ISR() interrupt 4 {if (RI) {unsigned char data SBUF;RI 0;if (data 1) {LED 0; // 开灯} else if (data 0) {LED 1; // 关灯}}
}void main() {UART_Init();LED 1; // 初始化LED为关闭状态while (1);
}(3) 测试
使用手机蓝牙调试工具如Serial Bluetooth Terminal连接模块。发送1LED灯亮发送0LED灯灭。 5. STM32点灯Demo
(1) 硬件连接
蓝牙模块 TX 接STM32的 RX如USART1的PA10。RX 接STM32的 TX如USART1的PA9。GND 接 GND。VCC 接 3.3V。 LED灯 正极接STM32的 PA5。负极接 GND通过限流电阻。
(2) 代码实现
#include stm32f10x.hvoid UART_Init() {RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Pin GPIO_Pin_9; // TXGPIO_InitStruct.GPIO_Mode GPIO_Mode_AF_PP;GPIO_InitStruct.GPIO_Speed GPIO_Speed_50MHz;GPIO_Init(GPIOA, GPIO_InitStruct);GPIO_InitStruct.GPIO_Pin GPIO_Pin_10; // RXGPIO_InitStruct.GPIO_Mode GPIO_Mode_IPU;GPIO_Init(GPIOA, GPIO_InitStruct);USART_InitTypeDef USART_InitStruct;USART_InitStruct.USART_BaudRate 9600;USART_InitStruct.USART_WordLength USART_WordLength_8b;USART_InitStruct.USART_StopBits USART_StopBits_1;USART_InitStruct.USART_Parity USART_Parity_No;USART_InitStruct.USART_HardwareFlowControl USART_HardwareFlowControl_None;USART_InitStruct.USART_Mode USART_Mode_Rx | USART_Mode_Tx;USART_Init(USART1, USART_InitStruct);USART_Cmd(USART1, ENABLE);USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);NVIC_EnableIRQ(USART1_IRQn);
}void USART1_IRQHandler() {if (USART_GetITStatus(USART1, USART_IT_RXNE) ! RESET) {uint8_t data USART_ReceiveData(USART1);if (data 1) {GPIO_SetBits(GPIOA, GPIO_Pin_5); // 开灯} else if (data 0) {GPIO_ResetBits(GPIOA, GPIO_Pin_5); // 关灯}}
}int main() {RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Pin GPIO_Pin_5;GPIO_InitStruct.GPIO_Mode GPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_Speed GPIO_Speed_50MHz;GPIO_Init(GPIOA, GPIO_InitStruct);UART_Init();while (1);
}(3) 测试
使用手机蓝牙调试工具如Serial Bluetooth Terminal连接模块。发送1LED灯亮发送0LED灯灭。 6. 总结
通过本文的指南你可以轻松地将蓝牙模块集成到51单片机或STM32中并实现一个简单的点灯Demo。无论是初学者还是有经验的开发者掌握蓝牙模块的使用方法都能为你的项目带来更多可能性。