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

Arduino Mega与Nano搭载HC-05软串口通信故障排查

HC-05蓝牙串口通信故障排查(Arduino Nano→Mega)

硬件与配置信息

HC-05 AT命令配置

  • 主模块(搭配Mega):
    AT+ROLE=1
    AT+CMODE=0
    AT+ADDR=<从模块地址>
    AT+UART=38400,0,0
    
  • 从模块(搭配Nano):
    AT+ROLE=0
    AT+UART=38400,0,0
    

接线方式

  • Mega:软RX(数字引脚2)接HC-05的TX,软TX(数字引脚3)接HC-05的RX
  • Nano:软RX(数字引脚2)接HC-05的TX,软TX(数字引脚3)接HC-05的RX

问题现象

  • 两个HC-05模块同步以「每2秒闪烁2次」的频率闪烁,确认配对成功
  • Nano端串口监视器输入整数后,无法打印输入值
  • Mega端串口监视器无任何输出
  • 尝试直接连接MCU TX到HC-05 TX,问题仍未解决

代码问题分析

Nano(发送端)代码问题

  1. 宏定义语法错误:#define softtx3 缺少赋值,正确写法应为 #define softtx 3,该错误会导致SoftwareSerial初始化失败
  2. 打印逻辑缺失:Serial.println() 无参数,无法输出读取到的整数
  3. 数据传输截断:BTSerial.write(data) 仅发送单个字节,若整数范围超过0-255,高位数据会丢失

Mega(接收端)代码问题

  1. 数据读取逻辑不匹配:用char data = BTSerial.read()读取单个字节,无法解析多字节整数或字符串格式的整数
  2. 未处理缓冲区残留:串口缓冲区的换行符等残留数据会干扰后续读取

修复后代码

Nano(发送端)修复代码

#include<SoftwareSerial.h>
#define softrx 2
#define softtx 3  // 修正宏定义错误
SoftwareSerial BTSerial(softrx, softtx);

void setup(){
  BTSerial.begin(38400);
  Serial.begin(9600);
}

void loop(){
  while(Serial.available()){
     int data = Serial.parseInt();
     // 避免parseInt默认返回0的误判,同时处理输入完成后的换行
     if(data != 0 || Serial.peek() == '\n'){
       BTSerial.println(data);  // 以字符串格式发送整数,确保完整传输
       Serial.println(data);    // 打印输入值到本地串口监视器
     }
     // 清除缓冲区剩余的换行符等冗余数据
     while(Serial.available() > 0){
       Serial.read();
     }
   }
}

Mega(接收端)修复代码

#include <SoftwareSerial.h>

#define softrx 2
#define softtx 3
SoftwareSerial BTSerial(softrx, softtx); // RX | TX

void setup() {
  BTSerial.begin(38400);
  Serial.begin(9600);
}

void loop() {
  if (BTSerial.available() > 0)
  {
    int receivedData = BTSerial.parseInt();
    // 处理parseInt默认返回0的情况
    if(receivedData != 0 || BTSerial.peek() == '\n'){
      Serial.println(receivedData); // 打印接收到的整数
    }
    // 清除缓冲区残留的换行符
    while(BTSerial.available() > 0){
      BTSerial.read();
    }
  }
}

额外排查点

  • HC-05供电:必须使用3.3V供电,直接接5V会损坏模块或导致通信异常
  • 接线交叉检查:确保MCU的TX接HC-05的RX,MCU的RX接HC-05的TX,不要接反
  • 引脚兼容性:确认Nano和Mega的引脚2、3未被其他外设占用,SoftwareSerial对部分引脚有兼容性要求
  • 串口波特率:本地串口监视器波特率需设置为9600,与代码中Serial.begin(9600)一致;HC-05波特率保持38400不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 20:35:17