首页 > 解决方案 > 在与 HC-05 的 Arduino 连接中,串行通信无法正常工作

问题描述

我是 Arduino 编程的新手。

这段代码工作正常。它提供了正确的输出并且运行良好。但我想自动编写命令而无需重复输入。

#include <SoftwareSerial.h>

SoftwareSerial BTSerial(10, 11); // CONNECT BT RX PIN TO ARDUINO 11 PIN | CONNECT BT TX PIN TO ARDUINO 10 PIN

void setup()
{
  pinMode(9, OUTPUT);  // this pin will pull the HC-05 pin 34 (key pin) HIGH to switch module to AT mode
  digitalWrite(9, HIGH);
  Serial.begin(38400);
  Serial.println("Enter AT commands:");
  BTSerial.begin(38400);  // HC-05 default speed in AT command more
}

void loop()
{
  if (BTSerial.available()) {
    Serial.write(BTSerial.read());
  }
  if(Serial.available()){
    BTSerial.write(Serial.read());
  }
}

所以我尝试在上面的代码中进行以下更改,但我无法收到任何响应。

#include <SoftwareSerial.h>

SoftwareSerial BTSerial(10, 11); // CONNECT BT RX PIN TO ARDUINO 11 PIN | CONNECT BT TX PIN TO ARDUINO 10 PIN

void setup()
{
  pinMode(9, OUTPUT);  // this pin will pull the HC-05 pin 34 (key pin) HIGH to switch module to AT mode
  digitalWrite(9, HIGH);
  Serial.begin(38400);
  Serial.println("Enter AT commands:");
  BTSerial.begin(38400);  // HC-05 default speed in AT command more
  BTSerial.write("AT");
}

void loop()
{
  if (BTSerial.available()) {
    Serial.write(BTSerial.read());
  }
}

我也试过BTSerial.print("AT");了,还是没有反应。

标签: arduinoserial-communicationhc-05

解决方案


AT 命令区分大小写,并应以enter击键或\r\n.

这应该这样做:

#include <SoftwareSerial.h>

SoftwareSerial BTSerial(10, 11); // CONNECT BT RX PIN TO ARDUINO 11 PIN | CONNECT BT TX PIN TO ARDUINO 10 PIN

void setup()
{
  pinMode(9, OUTPUT);  // this pin will pull the HC-05 pin 34 (key pin) HIGH to switch module to AT mode
  digitalWrite(9, HIGH);
  Serial.begin(38400);
  Serial.println("Enter AT commands:");
  BTSerial.begin(38400);  // HC-05 default speed in AT command more
  BTSerial.write("AT\r\n");
}

void loop()
{
  if (BTSerial.available()) {
    Serial.write(BTSerial.read());
  }
}

推荐阅读