最近在家捣鼓智能小车,想用手机控制它前进后退,就买了个常见的HC-05蓝牙模块。拆开包装一看,背面一排小针脚,标着VCC、GND、TXD、RXD,有点懵。其实搞清楚这几个接口的作用,接线就没那么难了。
认识常见蓝牙模块的引脚
市面上大多数用于单片机通信的蓝牙模块,比如HC-05、HC-06,都是四针设计:
- VCC:接电源正极,一般是3.3V或5V,看模块说明
- GND:接地,连开发板的GND就行
- TXD:发送数据端,要接到主控芯片(如Arduino)的RX口
- RXD:接收数据端,要接到主控芯片的TX口
很多人一开始容易把TXD和RXD接反,结果串口没数据。记住一句话:你发我收,我发你收。蓝牙模块发数据,就得让主控去“听”,所以它的TXD连主控的RX;反之,主控发指令,蓝牙模块就得接在自己的RXD上。
以Arduino UNO为例的实际接法
拿最常见的Arduino UNO来说,数字口0和1是串口通信口(RX/TX)。但直接占用了下载程序会冲突,建议用软件串口接其他引脚,比如D2和D3。
#include <SoftwareSerial.h>
// 定义软串口:D2为RX,D3为TX
SoftwareSerial btSerial(2, 3);
void setup() {
Serial.begin(9600); // 启动硬件串口,用于调试输出
btSerial.begin(9600); // 蓝牙串口通信速率
}
void loop() {
if (btSerial.available()) {
char c = btSerial.read();
Serial.print("收到:");
Serial.println(c);
}
}
对应接线方式如下:
- 蓝牙模块 VCC → Arduino 5V
- 蓝牙模块 GND → Arduino GND
- 蓝牙模块 TXD → Arduino D2
- 蓝牙模块 RXD → Arduino D3
注意:TXD和RXD之间最好串一个分压电路,因为蓝牙模块RXD引脚最大承受3.3V,而Arduino输出是5V。简单做法是用两个电阻搭成分压器,比如4.7k和10k串联,中间接到蓝牙的RXD。
通电前检查清单
接完线别急着上电,先确认几件事:
- 电源电压是否匹配?有些蓝牙模块只支持3.3V,接5V会烧
- TXD和RXD有没有接反?这是最常见的错误
- 地线有没有共地?GND必须连在一起,不然信号对不上
- 如果使用软件串口,代码里引脚定义对不对?
我家第一次接的时候忘了共地,串口一直乱码,折腾半小时才发现是GND没连。这种低级错误谁都犯过,慢慢来就行。
手机端装个“蓝牙串口助手”App,搜到设备配对后就能发字符了。看到Arduino串口监视器显示“收到:A”,那一刻特别有成就感,感觉整个屋子都联通了。