H C -05 Модуль командного режима AT не отвечает - PullRequest
0 голосов
/ 27 марта 2020

Я пытался соединить два модуля Bluetooth H C -05 вместе в качестве главного и подчиненного устройств. Я знаю, что для этого мне нужно установить sh один в качестве подчиненного устройства и один в качестве ведущего, используя режим команд 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, отображаемый миганием светодиода каждые 2 секунды. Тем не менее, я не получаю ответа после отправки команд в модуль с помощью последовательного монитора, когда я должен получить подтверждение моей команды.

Есть идеи, где я иду не так?

Заранее спасибо

1 Ответ

0 голосов
/ 30 марта 2020

Вот решение, которое в конечном итоге сработало для меня: я использовал эту схему с делителем напряжения:

  • В cc -----> 5 В
  • GND - -> GND
  • D2 ------> Tx
  • D3 ------> Rx

В итоге мне пришлось купить 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, которые также используются для связи с компьютером, поэтому их нельзя использовать одновременно с H C -05.

Еще одной проблемой была скорость передачи данных: я чередовался между 9600 и 38400 для каждого сообщения, пока не нашел Комбинация, которая сработала, и скорректировала скорость в Serial monitor так, чтобы это имело смысл.

Тогда я смог нормально использовать командный режим.

...