第一次用蓝牙串口模块?看完这篇就能上手。
什么是蓝牙串口模块?
简单说:把蓝牙变成串口用。
你的单片机通过串口发送数据,蓝牙模块自动把数据无线传给手机或电脑。反过来也可以。
准备材料
硬件
- 蓝牙串口模块 × 1
- USB转TTL模块 × 1(CH340或CP2102)
- 杜邦线 若干
软件
- 串口调试助手(手机APP或电脑软件)
- 蓝牙模块对应的APP
接线(超级重要)
`
蓝牙模块 USB转TTL
TXD ────────► RXD
RXD ◄─────── TXD
VCC ──────── 3.3V 或 5V
GND ──────── GND
`
关键点:TXD和RXD要交叉连接!
第一步:测试模块
1.1 连接电脑
把蓝牙模块接到USB转TTL,再插到电脑USB口。
1.2 打开串口调试助手
- 波特率:默认9600
- 数据位:8
- 停止位:1
- 校验位:无
1.3 发送AT指令测试
发送:AT
返回:OK 说明通信正常。
1.4 修改蓝牙名称
发送:AT+NAME=我的蓝牙
返回:OK 名称修改成功。
1.5 修改波特率(可选)
发送:AT+BAUD=115200
返回:OK 波特率改为115200。
第二步:手机连接
2.1 打开手机蓝牙
搜索附近设备,找到你设置的蓝牙名称。
2.2 配对连接
- 默认密码:123456 或 0000
- 配对成功后,蓝牙模块的LED灯会从闪烁变为常亮(或慢闪)。
2.3 打开串口APP
推荐APP:
- 安卓:蓝牙串口助手、Serial Bluetooth Terminal
- iOS:BlueSerial、Serial
2.4 建立连接
在APP里选择已配对的蓝牙设备,连接成功后就可以收发数据了。
常见型号推荐
入门级
| 型号 | 特点 | 适合 |
|---|---|---|
| HC-05 | 经典,稳定 | 入门学习 |
| HC-06 | 从机模式,更简单 | 单片机使用 |
| JDY-31 | BLE,便宜 | 替代HC-05 |
进阶级
| 型号 | 特点 | 适合 |
|---|---|---|
| CC2540 | BLE透传 | 低功耗产品 |
| CC2640 | BLE+协议栈 | 复杂功能 |
| nRF52832 | 专业BLE | 工业级 |
高级
| 型号 | 特点 | 适合 |
|---|---|---|
| nRF52840 | 旗舰BLE | 高端产品 |
| ESP32 | WiFi+BLE | 物联网网关 |
常见问题
问题1:搜不到蓝牙
检查:
1. 模块是否上电(LED灯亮吗?)
2. 是否进入配对模式?
- HC-05:按住KEY引脚再上电
- JDY-31:断电后重新上电
3. 供电是否充足(需要300mA+)
问题2:配对成功但发不了数据
检查:
1. 串口波特率对吗?
2. TX/RX接反了吗?
3. 手机APP和模块波特率一致吗?
问题3:收到乱码
检查:
1. 两端波特率完全一致吗?
2. TTL电平对吗?(3.3V模块接3.3V,5V模块接5V)
3. 换一根USB转TTL试试
问题4:距离太短
原因:
1. 供电不足
2. 天线问题
3. 环境干扰
解决:
- 使用5V供电(比3.3V发射功率更大)
- 远离干扰源
- 选用外置天线模块
实际应用:单片机连接
Arduino连接
`
Arduino 蓝牙模块
Pin 10 (TX) ────► RXD
Pin 11 (RX) ◄─── TXD
3.3V ──── VCC
GND ──── GND
`
代码示例:
`cpp
#include
SoftwareSerial BT(10, 11); // RX, TX
void setup() {
Serial.begin(9600);
BT.begin(9600);
}
void loop() {
// 手机发给Arduino
if (BT.available()) {
Serial.write(BT.read());
}
// Arduino发给手机
if (Serial.available()) {
BT.write(Serial.read());
}
}
`
STM32连接
接线:模块TX→STM32 RX,模块RX→STM32 TX
使用HAL库的UART中断接收即可。
下一步
掌握基础后,你可以:
1. 改成BLE模式(JDY-31默认就是BLE)
2. 修改UUID实现不同服务
3. 对接云平台(需要WiFi模块)
相关文章:
- [蓝牙模块AT指令集](./10-蓝牙模块AT指令集.md)
- [蓝牙模块选型指南](./06-蓝牙模块选型指南.md)