蓝牙模块与单片机连接:STM32/51/Arduino全攻略

发布时间:2026-03-27 · 阅读时长:2分钟

连接方式概览

蓝牙模块与单片机连接,主要通过以下接口:

串口连接(最常用)

硬件连接

`

蓝牙模块 STM32/51单片机

TXD ────────► RXD

RXD ◄─────── TXD

VCC ──────── 3.3V/5V

GND ──────── GND

`

关键点

Arduino连接

硬件连接

`cpp

// Arduino Uno

// 蓝牙模块TXD → Arduino Pin 0 (RX)

// 蓝牙模块RXD → Arduino Pin 1 (TX)

// 或者用软串口

// 蓝牙模块TXD → Arduino Pin 10

// 蓝牙模块RXD → Arduino Pin 11

`

代码示例(软串口)

`cpp

#include

SoftwareSerial BT(10, 11); // RX, TX

void setup() {

Serial.begin(9600);

BT.begin(9600);

}

void loop() {

if (BT.available()) {

Serial.write(BT.read());

}

if (Serial.available()) {

BT.write(Serial.read());

}

}

`

STM32连接

硬件连接(STM32F103)

`c

// USART1

// Bluetooth TX → PA10 (RX)

// Bluetooth RX → PA9 (TX)

`

HAL库代码

`c

// 初始化

UART_HandleTypeDef huart1;

void MX_USART1_UART_Init(void) {

huart1.Instance = USART1;

huart1.Init.BaudRate = 115200;

huart1.Init.WordLength = UART_WORDLENGTH_8B;

huart1.Init.StopBits = UART_STOPBITS_1;

huart1.Init.Parity = UART_PARITY_NONE;

HAL_UART_Init(&huart1);

}

// 接收中断

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {

if (huart->Instance == USART1) {

// 处理接收数据

HAL_UART_Receive_IT(&huart1, &rx_byte, 1);

}

}

`

51单片机连接

硬件连接

`asm

; 串口模式1

; Bluetooth TX → P3.0 (RX)

; Bluetooth RX → P3.1 (TX)

`

C51代码

`c

#include

void main() {

TMOD = 0x20; // 定时器1模式2

TH1 = 0xFD; // 波特率9600

TR1 = 1; // 启动定时器

SCON = 0x50; // 串口模式1

while(1) {

if (RI) {

SBUF = SBUF; // 回传

while(!TI);

TI = 0;

RI = 0;

}

}

}

`

常见问题

1. 乱码

2. 无数据

3. 连接断开

ESP32连接

硬件连接

`cpp

// 硬件串口

// Bluetooth TX → GPIO3 (RX0)

// Bluetooth RX → GPIO1 (TX0)

// 软串口

#include

SoftwareSerial BT(16, 17); // RX, TX

`

接线注意事项

电压匹配

模块电压单片机电压处理方式
--------------------------------
3.3V3.3V直接连接
3.3V5V需要电平转换
5V5V直接连接

电平转换电路

`text

3.3V ───► 5V

┌────┴────┐

│ TXS0108E

└────┬────┘

5V 输出

`

天线布局

注意事项

总结

蓝牙模块与单片机连接要点:

1. 串口最简单:TX/RX交叉连接

2. 电压要匹配:3.3V模块接3.3V单片机

3. 波特率一致:上下位机统一

4. 共地:确保电平参考一致

技术问题?查看更多 开发教程文章