HC-05模块AT指令模式不响应

问题描述 投票:0回答:2

我一直在尝试将两个 HC-05 蓝牙模块连接在一起作为主设备和从设备。我知道要做到这一点,我需要使用 AT 命令模式将一个设备建立为从设备,将一个设备建立为主设备。我将 arduino nano 与每个模块一起使用,并且显示了我使用的电路:

Vcc -----> 5V

GND ----> GND

Rx ------> Rx

Tx ------> Tx

我遵循了各种在线教程并使用了此代码:

include SoftwareSerial.h

SoftwareSerial BTSerial(0, 1); // RX | TX

    void setup()
    {
    
      Serial.begin(9600);
    
      BTSerial.begin(9600);  // HC-05 default speed in AT command more
    
      Serial.println("Enter AT commands:");
    
    }
    
    void loop()
    {
     
      // Keep reading from HC-05 and send to Arduino Serial Monitor
      if (BTSerial.available()){
    
        Serial.write(BTSerial.read());
    
      }
    
      // Keep reading from Arduino Serial Monitor and send to HC-05
    
      if (Serial.available()){
    
        BTSerial.write(Serial.read());
    
      }
    
    } 

使用模块上的按钮或将 EN 引脚设置为高电平,我可以将模块置于 AT 模式,如 LED 每 2 秒闪烁一次所示。但是,在使用串行监视器向模块发送命令后,当我应该收到命令的确认时,我没有收到任何响应。

有什么想法我哪里出错了吗?

arduino bluetooth at-command hc-05
2个回答
1
投票

这是最终对我有用的解决方案:我使用带有分压器的电路:

  • Vcc----->5V
  • 接地 ----> 接地
  • D2 ------> 发送
  • D3 ------> 接收

我最终不得不购买一个 Uno 来让它工作,我假设我的 Nano 在某种程度上有问题。然后我使用了以下代码:

#include <SoftwareSerial.h>

SoftwareSerial BTSerial(2, 3); // RX | TX

void setup()
{
  Serial.begin(9600);
  BTSerial.begin(38400);  // HC-05 default speed in AT command more
  Serial.println("Enter AT commands:");
}

void loop()
{

  // Keep reading from HC-05 and send to Arduino Serial Monitor
  if (BTSerial.available()){
    Serial.write(BTSerial.read());
  }

  // Keep reading from Arduino Serial Monitor and send to HC-05
  if (Serial.available()){
    BTSerial.write(Serial.read());
  }
}

这使我能够进入 AT 模式并接收响应。

问题之一是我使用的 Tx 和 Rx 引脚也用于与计算机通信,因此不能同时与 HC-05 一起使用。

另一个问题是波特率:每次通信时我在 9600 和 38400 之间交替,直到找到有效的组合,并调整 串行监视器 中的速度,使其有意义。

然后就可以正常使用命令模式了


0
投票

对于定期沟通,应该是以下内容: Uno RX 应连接到 BT05 的 TX Uno TX 应该连接到 BT05 的 RT

原因 - 他们互相沟通。一个从 TX 发送信息,另一个应该通过 RX 接收信息,反之亦然。

但是,采用上述方法,您将需要创建虚拟第二个串行端口并编写简单的代码以使用 AT 命令正确设置 BT05。而且,当您想使用它时,无需更换电线。

要使用空白代码设置 BT05,您可以使用反之亦然的连接: Uno RX 应连接至 BT05 的 RT Uno TX 应该连接到 BT05 的 TX

反之亦然,该引脚的连接在一种情况下也是正确的,但仅适用于您想直接通过串行监视器使用空白代码进行设置的情况。但是,在这种情况下,您需要将它们交换回来。 此连接连接 MC 的主串行端口,用于与 PC 通信,还带有 BT05。所以要小心不要使用 print(),因为它会用 BT 中断。

© www.soinside.com 2019 - 2024. All rights reserved.