Нужна помощь с SIM800L

Hibernator
Offline
Зарегистрирован: 18.10.2015

Добрый день.

Не могу заставить SIM800L передать данные на сервер. Питание отдельное от внешнего источника 12V 2A. Земля общая. Понижающий DC-DC до 4.2V.

Потратил немало времени, прошу совета.

Пробую это делать так (ответы на команды ниже):

void gprs_init() {  //Процедура начальной инициализации GSM модуля
  int d = 500;
  int ATsCount = 15;
  String ATs[] = {  //массив АТ команд
      "AT",
      "AT+CPIN?",
      "AT+CREG?",
      "AT+CGATT?",
      "AT+CIPSHUT",
      "AT+CIPSTATUS",
      "AT+CIPMUX=0",
      "AT+CSTT=\"internet.mts.ru\",\"mts\",\"mts\"",
      "AT+CIICR",
      "AT+CIFSR",
      "AT+CIPSTATUS",
      "AT+CIPSTART=\"TCP\",\"narodmon.ru\",\"8283\"",
      "#20CF301E72C9\n#Tin1#-1.32\n##\x1A",
      "AT+CIPQSEND?",
      "AT+CIPSHUT",
  };
  int ATsDelays[] = {1, 2, 2, 2, 2, 4, 2, 6, 4, 4, 2, 2, 2, 2, 2}; //массив задержек
  Serial.println("GPRG init start");
  for (int i = 0; i < ATsCount; i++) {
    Serial.println(ATs[i]);  //посылаем в монитор порта
    GSMport.println(ATs[i]);  //посылаем в GSM модуль
    delay(d * ATsDelays[i]);
    Serial.println(ReadGSM());  //показываем ответ от GSM модуля
    delay(d);
  }
  Serial.println("GPRG init complete");
}

Получаю вот такие ответы:

GPRS test
GPRG init start
AT
AT

OK

AT+CPIN?
AT+CPIN?

+CPIN: READY

OK

AT+CREG?
AT+CREG?

+CREG: 0,1

OK

AT+CGATT?
AT+CGATT?

+CGATT: 1

OK

AT+CIPSHUT
AT+CIPSHUT

SHUT OK

AT+CIPSTATUS
AT+CIPSTATUS

OK

STATE: IP INITIAL

AT+CIPMUX=0
AT+CIPMUX=0

OK

AT+CSTT="internet.mts.ru","mts","mts"
AT+CSTT="internet.mts.ru","mts","mts"

OK

AT+CIICR
AT+CIICR

OK

AT+CIFSR
AT+CIFSR

10.171.135.238

AT+CIPSTATUS
AT+CIPSTATUS

OK

STATE: IP STATUS

AT+CIPSTART="TCP","narodmon.ru","8283"
AT+CIPSTART="TCP","narodmon.ru","8283"

OK

CONNECT OK

#20CF301E72C9
#Tin1#-1.32
##
#20CF301E72C9#Tin1#-1.32##

AT+CIPQSEND?
AT+CIPQSEND?

+CIPQSEND: 0

OK

AT+CIPSHUT
AT+CIPSHUT

GPRG init complete

SHUT OK

Заранее благодарен.

Nestor Mahno
Offline
Зарегистрирован: 03.10.2015

Здравствуйте! Вы разобрались с TCP соединением?

Я вижу ошибки в вашем скетче:

после AT+CIPSTART должно быть AT+CIPSEND, после чего должно быть приглашение от модуля для ввода сообщения ">".

Сообщение должно завершаться символом "ctrl+z".

Так вот у меня из терминальной программы сообщение отправить получается, а с помощью ардуино нет.