Взаимодействие A9G с Arduino для тестирования AT-команд

Я пытаюсь подключиться к плате A9G Pudding GSM через Arduino. Я намерен использовать встроенный чип UART для упрощения преобразования TTL-UART между ПК и A9G.

Я инициировал программный последовательный экземпляр и использую его для передачи данных в/из A9G и Arduino.

Вот мой код. Однако, все, что я получаю, это тарабарщина. Я проверил свои соединения, ссылка, кажется, существует, но кодировка не совпадает. Я общаюсь с A9G на 115200, а мой эмулируемый серийный номер — на 9600.

Может ли это быть проблемой?

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
  Serial.begin(9600); // Мониторинг скорости передачи данных
  mySerial.begin(57600); // Установить обнаруженную скорость передачи данных

  Serial.println("A9G Module Communication Test");
  
  // Отправить AT-команду с возвратом каретки и переводом строки
  mySerial.print("AT\r\n");
  delay(1000); // Ждать ответа
}
void loop() {
  // Проверьте, доступны ли данные из модуля A9G
  if (mySerial.available()) {
    // Считываем данные из модуля A9G
    while (mySerial.available()) {
      char c = mySerial.read();
      Serial.write(c); // Отправляем его в последовательный монитор
    }
  }

  // Проверьте, доступны ли данные из последовательного монитора
  if (Serial.available()) {
    // Считываем данные из последовательного монитора
    while (Serial.available()) {
      char c = Serial.read();
      mySerial.write(c); // Отправляем его в модуль A9G
    }
  }
}

Вот вывод на последовательном мониторе.

Вывод последовательной консоли

, 👍0


1 ответ


-1

Вы можете редактировать свой код следующим образом.

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
  Serial.begin(9600); // Контролируем скорость передачи данных для соответствия A9G
  mySerial.begin(115200); // Установить скорость передачи данных A9G

  Serial.println("A9G Module Communication Test");
  
  // Отправить AT-команду с возвратом каретки и переводом строки
  mySerial.print("AT\r\n");
  delay(1000); // Ждать ответа
}

void loop() {
  // Проверьте, доступны ли данные из модуля A9G
  if (mySerial.available()) {
    // Считываем данные из модуля A9G
    while (mySerial.available()) {
      char c = mySerial.read();
      Serial.write(c); // Отправляем его в последовательный монитор
    }
  }

  // Проверьте, доступны ли данные из последовательного монитора
  if (Serial.available()) {
    // Считываем данные из последовательного монитора
    while (Serial.available()) {
      char c = Serial.read();
      mySerial.write(c); // Отправляем его в модуль A9G
    }
  }
}
,