You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arduino UNO蓝牙通信故障:发送AT指令无响应求助

Arduino UNO蓝牙模块AT指令无响应的排查与解决

排查步骤

1. 确认AT模式进入条件

  • 多数蓝牙模块(如HC-05/HC-06)需在未配对连接状态下才能响应AT指令;部分模块(如HC-05)需按住EN键上电,才能进入AT配置模式。
  • 核对模块默认波特率:部分模块默认波特率不是9600(比如HC-05部分版本默认38400),需修改代码中mySerial.begin()的参数匹配模块波特率。

2. 接线正确性检查

  • 必须交叉接线:Arduino的TX引脚(代码中定义的3)接蓝牙模块的RX,Arduino的RX引脚(代码中定义的2)接蓝牙模块的TX,接反会直接导致通信失败。
  • 供电匹配:蓝牙模块多为3.3V供电,接5V可能导致模块损坏或工作异常;即使是兼容5V的模块,也建议用3.3V保证稳定运行。
  • 共地要求:Arduino与蓝牙模块的GND必须连接,否则串口通信无基准电压,会出现无响应或乱码问题。

3. 串口监视器与代码设置

  • 串口监视器波特率需设为9600,与代码中Serial.begin(9600)的参数一致。
  • 发送AT指令时,需选择NL & CR换行格式:蓝牙模块要求AT指令以\r\n结尾,仅输入AT无换行符不会触发模块响应。
  • 可修改代码增加调试日志,明确通信流向:
    #include <SoftwareSerial.h>
    
    SoftwareSerial mySerial(2, 3); // RX, TX
    
    void setup() {
      Serial.begin(9600);
      while (!Serial); // 等待USB串口连接(仅针对需串口唤醒的设备)
      mySerial.begin(9600);
      Serial.println("Start Communication");
      Serial.println("请发送带NL&CR的AT指令");
    }
    
    void loop() {
      if (mySerial.available()) {
        char btData = mySerial.read();
        Serial.print("[蓝牙模块返回]: ");
        Serial.println(btData);
      }
      if (Serial.available()) {
        char sendData = Serial.read();
        mySerial.write(sendData);
        Serial.print("[发送至蓝牙]: ");
        Serial.println(sendData);
      }
    }
    

4. 硬件独立测试

  • 用USB转TTL模块直接连接蓝牙模块,测试AT指令是否正常,确认模块本身无故障。
  • 更换Arduino的数字引脚(如4、5)重新定义SoftwareSerial,排除引脚损坏问题。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 13:52:36