Android与Arduino HC-06蓝牙模块通信无响应问题求助
排查HC-06与Arduino蓝牙通信无响应的实用方案
我来帮你一步步梳理这个问题,毕竟我之前折腾蓝牙遥控车的时候,也在HC-06上踩过不少坑😉
1. 先搞定HC-06的基础配置(最容易忽略的点)
HC-06和HC-08的默认参数差异很大,这大概率是替换后出问题的核心:
- 找个USB-TTL模块,直接连HC-06(划重点:VCC必须接3.3V!接5V会直接烧模块,我之前吃过这个亏),接线:HC-06的TX接USB-TTL的RX,RX接USB-TTL的TX,GND和USB-TTL共地。
- 打开串口监视器,设置波特率为9600(HC-06默认波特率,HC-08可能是其他值),数据位8、停止位1、无奇偶校验,发送
AT指令(注意选“NL & CR”模式发送),如果模块返回OK,说明模块本身没问题。 - 顺便确认下模块的配对密码(默认是
1234或0000)和名称,要和Android端设置的完全一致。
2. 检查Arduino的接线与代码逻辑
接线注意事项
如果用Arduino的硬件串口(比如Uno的0、1引脚),上传代码时必须拔掉HC-06的RX/TX线,否则串口被占用会导致代码上传失败。上传完成后再插回去:
- HC-06的VCC→Arduino 3.3V,GND→GND,TX→Arduino RX(0),RX→Arduino TX(1)。
- 嫌拔线麻烦的话,推荐用
SoftwareSerial库模拟串口,比如用2、3引脚,这样上传代码不用动接线,代码里初始化模拟串口即可。
极简测试代码(先排除代码问题)
先别搞遥控车的电机控制,先把通信通了再说,用这个极简代码测试:
void setup() { Serial.begin(9600); // 必须和HC-06的波特率完全一致 Serial.println("Ready to receive data..."); } void loop() { if (Serial.available() > 0) { // 逐字符读取数据 char receivedChar = Serial.read(); Serial.print("Got data: "); Serial.println(receivedChar); // 加个测试响应,方便验证 if (receivedChar == 'F') { Serial.println("Forward command detected!"); } } }
上传代码后,打开串口监视器,发送单个字符(比如F),看是否有反馈。如果还是没有,检查HC-06的RX和Arduino的TX是不是接反了——这个低级错误我犯过不止一次😂
3. Android端发送逻辑排查
Android端的发送格式很容易出问题:
- 先别发送长字符串,就发送单个字符(比如
F、B)测试,排除字符串格式(比如换行符、编码)的干扰。 - 确保蓝牙连接真的建立了:在Android代码里监听蓝牙连接状态,只有连接成功后再发送数据,别上来就瞎发。
- 检查Android端的蓝牙输出流是否正确打开,有没有抛出异常。
4. 硬件故障兜底排查
如果上面的步骤都试过还是没反应,就排查硬件:
- 看HC-06的指示灯:配对成功后应该是慢闪(大概1秒一次),如果是快闪,说明没配对成功,先解决配对问题。
- 用万用表测HC-06的VCC电压,确保是3.3V左右,电压不稳会导致模块工作异常。
- 换个HC-06模块试试,排除模块本身损坏的可能。
内容的提问来源于stack exchange,提问作者ddd
相关产品推荐
相关产品推荐

