Общение с GPRS A6 (SIM900A)

Zero Tolerance
Offline
Зарегистрирован: 10.08.2017

Здравствуйте. Я новичок и столкнулся с некоторыми проблемами.
Работаю с китайской Arduino UNO R3 и GPRS A6 (SIM900A).

Хотел бы пообщаться с GPRS модулем напрямую. У меня нет никаких USB UART конвертеров, только Arduino. Проверю работу Arduino в режиме UART моста: замыкаю RST на GND, замыкаю RX и TX (петля). В Serial Monitor'е что-нибудь печатаю и отправляю — оно возвращается:

Через PuTTY свободно печатается в терминале. Т.е. как я понимаю, всё работает как надо.

Не убирая замыкания RST-GND в Arduino, я подключаю:
GND GPRS A6 к GND Arduino.
U_TXD GPRS A6 к RX Arduino.
U_RX GPRS A6 к TX Arduino.
Подключаю питание (MicroUSB зарядка от смартфона) к GPRS A6.

Модуль работает, сам успешо включается и регистрирует SIM-карту в сети.
На него можно даже позвонить (пойдут гудки), но при этом, в Serial Monitor'е не будет ничего. Если например, послать "AT", то в ответ тоже ничего, просто пустое окно. Однако при отсылке чего-либо (или при печатании в окно терминала PuTTY), на GPRS модуле моргает синий светодиод.

Что я делаю не так?

Penumbra
Offline
Зарегистрирован: 06.08.2017

поменять местами  rx  и tx  

в режиме моста надо 

U_TXD GPRS A6 к TX Arduino.
U_RX GPRS A6 к RX Arduino.

Zero Tolerance
Offline
Зарегистрирован: 10.08.2017

Мда уж :), забавно вышло, спасибо, всё работает! Правда лучше Serial Terminal Arduino юзать, чем PuTTY.

Zero Tolerance
Offline
Зарегистрирован: 10.08.2017

Начал работать с SoftwareSerial, использую простой код (основанный на стандартном примере):
 

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // RX, TX

void setup() {
  Serial.begin(115200);
  while (!Serial) {}
  Serial.println("INIT");
  
  mySerial.begin(115200);
  mySerial.println("AT");
}

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

Далее печататю AT для проверки, модуль отвечает OK, но вместе с этим ответом порой приходит какой-то мусор:

Что это такое? Я также пробовал ставить 9600 бодрейт для двух Serial'ов, но тогда за место OK вообще приходит один квадратик (⸮).

Нашел команду AT+IPR?, в результате которой мне удалось разглядеть ответ 115200, т.е. бодрейт в модуле стоит именно такой.

Logik
Offline
Зарегистрирован: 05.08.2014

Это SoftwareSerial. Поиск по форуму поможет. Ваша проблема слишком банальна чтоб повторятся. И подучится по теме, почитать форум Вам явно нужно.

cyber-jet
cyber-jet аватар
Offline
Зарегистрирован: 17.10.2017

Кэп подсказыввает, что SoftwareSerial на таких скоростях не работает.

b707
Offline
Зарегистрирован: 26.05.2017

Zero Tolerance

Зира, привет!

Фраза "фордоводы уроды" знакома? :)