SIM800L отправка данных

Elmirus
Offline
Зарегистрирован: 07.06.2017
Доброго времени суток. Помогите пожалуйста как отправлять данные на сервер при помощи GSM модуля SIM800L. В интернете полно примеров, но ни одного рабочего не нашел.
Модулем AI Thinker A7 отправлял таким образом:
 
const char resource[] = "130402213013,+380688266156,GPRMC,175135.000,A,";
const char cord[] = "4934.5225,N,030377.49277,E";  //кординаты для теста
const char stat[] = ",1.92,21.48,100817,,,A*5B,F,, imei:867567021260528,00,-16.4,F:3.73V,0,139,49646,250,99,1478,68A7\n\r";

void TcpGprsMessage(String message){

     sendData("AT+CREG?",3000,DEBUG);     
     sendData("AT+CGATT=1",1000,DEBUG);
     sendData("AT+CGDCONT=1,\"IP\",\"www.ab.kyivstar.net\"",1000,DEBUG);
     sendData("AT+CGACT=1,1",1000,DEBUG);
     sendData("AT+CIPSTART=\"TCP\",\"88.198.136.232\",10001",3000,DEBUG);
     sendData("AT+CIPSEND=80",1000,DEBUG);
     sendData(String("GET ") + resource + cord + stat, 2000,DEBUG); 
     delay(1000);
     sendData("AT+CIPCLOSE",2000,DEBUG);     //Close TCP
     delay(100);
}

 

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

Elmirus - удивительно, если этот код работал на А7. Я заметил в нем кучу ошибок.

Например:

- окончания строк должны быть "\r\n",  а не "\n\r"

- в команде AT+CIPSEND должна быть указана длина передаваемых данных, либо весь запрос  должен заканчиваться символом ctrl-z - у вас нет ни того ни другого

- после каждой команды из строк с 7 по 12 необзодимо дожидаться ответа "ОК" от модема, а если этого ответа нет - начинать сначала. Не вижу ничего похожего в коде.

В принципе, после исправления ошибок этот код должен работать на любом модеме с АТ-командами. Надо только уточнить синтаксис в даташите на SIM800

 

Elmirus
Offline
Зарегистрирован: 07.06.2017

Проверки на ОК были 

void TcpGprsMessage(String message){
 
     sendData("AT+CREG?",3000,DEBUG);     
     sendData("AT+CGATT=1",1000,DEBUG);
     sendData("AT+CGDCONT=1,\"IP\",\"www.ab.kyivstar.net\"",1000,DEBUG);
     sendData("AT+CGACT=1,1",1000,DEBUG);
     sendData("AT+CIPSTART=\"TCP\",\"88.198.136.232\",10001",3000,DEBUG);
     sendData("AT+CIPSEND=80",1000,DEBUG);
     sendData(String("GET ") + resource + cord + stat, 2000,DEBUG); 
     delay(1000);
     sendData("AT+CIPCLOSE",2000,DEBUG);     //Close TCP
     delay(100);
 
     //sendData(String("GET ") + resource + imei + message,2000,DEBUG); 
}
 
Вот в синтаксисе и проблемы, я делал аналогично по даташиту на sim800l но выдавало ошибки, где то в инете читал, что необходимо помимо помино основных команд еще что то отправлять в какой то специальной последовательности иначе будет давать ошибки, а толкового примера найти немогу