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

HC05蓝牙模块与Pololu A-Star 32U4 Prime SV连接故障求助

HC05蓝牙模块连接Pololu A-Star 32U4 Prime SV故障排查与修复

核心问题分析

你的代码和接线存在几个关键问题,和库无关,主要是引脚冲突、逻辑错误导致的:

  • 引脚冲突:A-Star 32U4的0(RX)、1(TX)引脚是硬件USB串口,用于和电脑通信上传程序、调试。用SoftwareSerial绑定这两个引脚会和硬件串口功能冲突,而且32U4本身支持多硬件串口,没必要用软件串口。
  • 代码注释与实际配置矛盾:注释写的是用引脚7(RX)、6(TX),但实际初始化SoftwareSerial btSerial(0, 1);用了0和1,逻辑混乱。
  • 电机驱动休眠逻辑错误:loop()里每次执行都会调用md.disableDrivers()并延迟500ms,导致电机刚启动就被强制休眠,根本无法持续工作。

修复步骤

1. 调整蓝牙模块接线

放弃0/1引脚,改用其他空闲数字引脚,比如引脚7(HC05的TX接控制器RX)、引脚6(HC05的RX接控制器TX),注意HC05的VCC接3.3V(不要接5V,会烧模块),GND共地。

2. 修改代码

以下是修正后的代码,解决了上述所有问题:

#include "DualG2HighPowerMotorShield.h"
#include <SoftwareSerial.h>

DualG2HighPowerMotorShield24v18 md;
// 改用引脚7(RX)、6(TX)对应HC05的TX、RX
SoftwareSerial btSerial(7, 6);

char command;

void stopIfFault()
{
  if (md.getM1Fault() || md.getM2Fault())
  {
    md.disableDrivers();
    while (1);
  }
}

void setup()
{
  btSerial.begin(9600);
  md.init();
  md.calibrateCurrentOffsets();
  delay(10);
  md.enableDrivers(); // 初始化时就启用驱动,不需要每次循环开关
}

void loop()
{
  stopIfFault();

  if (btSerial.available()) {
    command = btSerial.read();

    switch(command) {
      case 'N': // 前进
        md.setM1Speed(255);
        md.setM2Speed(255);
        break;
      case 'S': // 后退
        md.setM1Speed(-255);
        md.setM2Speed(-255);
        break;
      case 'E': // 左转
        md.setM1Speed(-255);
        md.setM2Speed(255);
        break;
      case 'W': // 右转
        md.setM1Speed(255);
        md.setM2Speed(-255);
        break;
      case '0': // 停止
        md.setM1Speed(0);
        md.setM2Speed(0);
        break;
    }  
  }
}

3. 额外验证项

  • 确认HC05的波特率是9600,和代码中btSerial.begin(9600)一致,可以通过AT指令校准波特率。
  • 检查电机驱动的供电是否正常,接线是否正确(电机线对应M1、M2接口)。
  • 上传代码时,确保HC05模块没有接在0/1引脚上,避免上传失败,上传完成后再连接蓝牙模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:53:20