Взаимодействие 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
}
}
}
Вот вывод на последовательном мониторе.
@Mwasela, 👍0
Обсуждение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
}
}
}
почему? что изменилось?, @Juraj
Скорость последовательной передачи данных у меня изменилась с 57600 до 115200., @tepalia
и почему это правильное значение? пожалуйста, напишите ответ без эскиза, если изменена только скорость передачи данных., @Juraj
Последовательный монитор показывает мусорное значение. Вот почему я подумал, что определенная скорость передачи данных для A9G может быть неправильной., @tepalia
но это должно быть в вашем ответе. а не копия скетча. https://arduino.stackexchange.com/help/how-to-answer, @Juraj
- SIM800L не отвечает на AT-команды
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- GSM SIM900A Содержимое SMS не отображается
- HLW8032 UART отправляет случайные данные (регистры часто переполняются)
- Модуль SIM800L просто повторяет данные, отправленные через последовательный порт.
- Проблема последовательной связи с общей землей SIM800L
- Как связаться с GPS SIM900a без serial monitor
- Связь UART - серийный номер всегда пуст
Введите «AT» и нажмите «Отправить» на последовательном мониторе. Что вы получите?, @hcheung
Попробуйте использовать mySerial.begin(115200); так как это скорость передачи данных по умолчанию для A9G., @Lee-xp
пожалуйста, не пишите заглавными буквами... это означает КРИК, что считается невежливым... используйте кнопку редактирования, чтобы исправить заголовок, @jsotola
пожалуйста, не публикуйте изображения текста... публикуйте вместо этого текст... отформатируйте как код для удобства чтения, @jsotola