HC-05持续输出println消息且无响应,蓝牙通信故障求助
嘿,第一次搞Arduino遥控车项目就碰到蓝牙通信卡壳,太懂这种挠头的感觉了!我帮你梳理几个最实用的排查方向,一步步来解决问题:
蓝牙通信故障排查指南
先锁死硬件连接的正确性
很多时候问题都出在接线上,别嫌麻烦再核对一遍:- HC-05的TX要接Arduino的数字脚6(你代码里SoftwareSerial的RX端),RX接数字脚7(SoftwareSerial的TX端),绝对不能接反!
- HC-05必须用3.3V供电,别图省事接5V,很容易烧模块;如果是从L293D取电,要确认驱动板的电源能同时带动电机和蓝牙模块。
- 观察HC-05的状态灯:正常配对成功后是慢闪(约2秒一次),如果一直快闪,说明没和手机配对上,得先重新完成配对步骤。
用最简代码验证通信基础
你贴的代码只到开头,先把代码简化成纯通信测试版,排除电机驱动的干扰:#include <SoftwareSerial.h> SoftwareSerial BTSerial(6, 7); // RX对应脚6,TX对应脚7 void setup() { Serial.begin(9600); // 电脑串口监视器用来调试 BTSerial.begin(9600); // 必须和HC-05的波特率完全一致! } void loop() { // 测试蓝牙收数据 if (BTSerial.available()) { char received = BTSerial.read(); Serial.print("蓝牙收到: "); Serial.println(received); // 回发数据测试双向通信 BTSerial.print("已收到指令: "); BTSerial.println(received); } }烧完这段代码后,打开Arduino串口监视器(波特率设9600),用手机蓝牙串口APP(比如Serial Bluetooth Terminal)发个字符,看电脑端能不能收到,同时手机能不能收到回发内容。这一步没反应的话,直接锁定是硬件或波特率问题。
核对HC-05的波特率与AT模式设置
HC-05默认波特率大多是9600,但少数模块可能是38400或其他值,不确定的话用AT指令确认:- 进入AT模式:按住HC-05的按键再上电,状态灯变成1秒一次的慢闪就成功了。
- 用Arduino硬件串口(RX0、TX1)交叉连接HC-05的TX、RX(注意HC-05接3.3V),串口监视器发送
AT,返回OK说明AT模式正常。 - 发送
AT+UART?查询当前波特率,比如返回+UART:9600,0,0就是9600波特率、无校验、1停止位。 - 波特率不对的话,发送
AT+UART=9600,0,0修改,返回OK就生效了。
排除电机驱动的电磁干扰
电机运行时的电磁噪声很容易干扰蓝牙信号:- 给每个电机两端并联100uF电解电容+0.1uF陶瓷电容,减少电机的干扰。
- 把HC-05模块尽量远离L293D和电机,或者用金属壳简单屏蔽一下蓝牙模块。
- 确保Arduino、L293D、HC-05的GND全部连在一起,接地要牢固。
确认手机蓝牙APP的细节设置
- 配对HC-05时,默认密码一般是
1234或0000,别输错。 - 蓝牙APP的波特率必须和HC-05、代码里的波特率完全一致,比如都是9600。
- 有些APP需要手动选择SPP(Serial Port Profile)服务,别选错了协议。
- 配对HC-05时,默认密码一般是
内容的提问来源于stack exchange,提问作者R. Deok
相关产品推荐
相关产品推荐

