You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

HC-05蓝牙模块串口功能异常求助:无法收发数据及响应AT命令

排查HC-05蓝牙模块乱码&AT命令无响应的问题

我之前折腾HC-05的时候也碰到过几乎一模一样的问题,给你梳理几个最可能的排查方向,按顺序来试:

1. 先揪出最容易犯的硬件错误

  • TX/RX引脚接反了:这是90%新手都会踩的坑!Arduino的TX要接HC-05的RX,Arduino的RX要接HC-05的TX,接反直接导致乱码、收不到任何响应。
  • 供电不足/电压不对:HC-05是3.3V设备,虽然有些模块带5V转3.3V的降压电路,但不稳定的供电会让模块工作异常。优先用Arduino的3.3V引脚供电,或者单独的3.3V电源(电流最好能到100mA以上),别直接怼5V。
  • EN引脚没接对(AT模式必备):要进入AT模式,必须把HC-05的EN引脚接3.3V(部分模块是接5V,看模块说明书),而且要先接EN再给模块上电。上电后模块LED慢闪(约2秒1次)才是AT模式,快闪的话是配对模式,肯定不响应AT命令。

2. 修正AT模式的操作姿势

  • 波特率要对应AT模式的默认值:大部分HC-05的AT模式默认波特率是38400,不是普通配对模式的9600!你之前试了38400,但要确保是在AT模式下测试的。
  • AT命令要规范:命令必须大写(比如ATAT+VERSION),换行模式选NL+CR,发送后如果模块响应OK才是正常的。

3. 解决电平不兼容导致的乱码

HC-05是3.3V电平,Arduino是5V电平,直接连接会导致信号失真出现乱码:

  • 最简单的办法是加一个电平转换模块(双向的,专门用于3.3V和5V设备通信)。
  • 临时测试可以用电阻分压:给Arduino的TX引脚串一个1kΩ电阻,再接HC-05的RX,同时HC-05的RX接一个2kΩ电阻到GND,这样就能把5V信号降到3.3V左右。

4. 调整代码的串口使用逻辑

你的代码用了Arduino的硬件Serial(RX/TX引脚),但这个串口同时负责和PC上传代码、串口监视器通信,接HC-05会冲突:

  • 建议用SoftwareSerial库把HC-05接到其他数字引脚,把硬件串口留给PC调试。修改后的代码示例:
#include <SoftwareSerial.h>
// 定义软串口:引脚2是HC-05的TX,引脚3是HC-05的RX
SoftwareSerial btSerial(2, 3);

char junk;
String inputString = "";

void setup() {
  Serial.begin(9600);       // PC串口监视器的波特率
  btSerial.begin(9600);     // HC-05配对模式的默认波特率
  pinMode(13, OUTPUT);
}

void loop() {
  // 读取HC-05发来的数据
  if (btSerial.available()) {
    while (btSerial.available()) {
      char inChar = (char)btSerial.read();
      inputString += inChar;
    }
    // 把模块数据打印到PC监视器看
    Serial.println("收到蓝牙数据: " + inputString);
    
    // 处理LED控制逻辑
    if (inputString == "a") {
      digitalWrite(13, HIGH);
      btSerial.println("LED已开启"); // 给蓝牙设备反馈
    } else if (inputString == "b") {
      digitalWrite(13, LOW);
      btSerial.println("LED已关闭");
    }
    
    // 清空缓存和字符串
    while (btSerial.available() > 0) {
      junk = btSerial.read();
    }
    inputString = "";
  }

  // 把PC串口监视器的消息转发给HC-05
  if (Serial.available()) {
    String pcMsg = Serial.readString();
    btSerial.print(pcMsg);
  }
}
  • 上传代码前记得把HC-05从硬件RX/TX引脚上拔下来,不然串口被占用会上传失败。

5. 最后排查模块本身故障

如果以上所有步骤都试过还是不行,那大概率是模块本身的问题:比如蓝牙芯片损坏、引脚虚焊。可以换一个HC-05模块测试,或者检查模块的焊接点有没有松动。

内容的提问来源于stack exchange,提问作者antisycop

火山引擎 最新活动