Отправить HTTP get запрос от GSM SIM800c и Arduino
Я пытаюсь отправить запрос Get с моего GSM модуля, но после подключения к серверу он ничего не отвечает
#include <SoftwareSerial.h>
SoftwareSerial myGsm(2,3);
void setup()
{
myGsm.begin(9600);
Serial.begin(9600);
delay(500);
myGsm.println("AT+CGATT=1");
delay(200);
printSerialData();
myGsm.println("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"");//setting the SAPBR,connection type is GPRS
delay(1000);
printSerialData();
myGsm.println("AT+SAPBR=3,1,\"APN\",\"wap.mobilinkworld.com\"");//setting the APN,2nd parameter empty works for all networks
delay(5000);
printSerialData();
myGsm.println();
myGsm.println("AT+SAPBR=1,1");
delay(10000);
printSerialData();
myGsm.println();
myGsm.println("AT+SAPBR=2,1");
delay(10000);
printSerialData();
myGsm.println("AT+HTTPINIT");
delay(2000);
printSerialData();
myGsm.println("AT+HTTPPARA=\"URL\",\"http://sensor.somee.com/api/Data/GetData?SensorID=1\"");// setting the httppara,
delay(1000);
printSerialData();
myGsm.println();
delay(10000);//the delay is important if the return datas are very large, the time required longer.
printSerialData();
delay(9000);
printSerialData();
delay(1000);
Serial.println("done ");
printSerialData();
}
void loop()
{
}
void printSerialData()
{
while(myGsm.available()!=0)
Serial.write(myGsm.read());
}
а Выход есть
AT+CGATT=1
OK
AT+SAPBR=3,1,"CONTYPE","GPRS"
OK
AT+SAPBR=3,1,"APN","wap.mobilinkworld.com"
OK
AT+SAPBR=1,1
OK
AT+SAPBR=2,1
+SAPBR: 1,1,"10.209.122.68"
OK
AT+HTTPINIT
OK
AT+HTTPPARA="URL","http://sensor.somee.com/api/Data/GetData?Sen
done
@Ans Bilal, 👍1
Обсуждение2 ответа
Вы должны поместить код для связи (что является повторяющейся задачей) в цикл (и сделать это без задержки блокировки ()). Использование задержки останавливает процессор, поэтому все, что поступает в буфер, вероятно, не обрабатывается.
Прочитайте о разнице в размещении кода в настройке и цикле в базовой документации Arduino.
Никогда не используйте задержку в сценариях связи (за исключением инициализации оборудования при настройке) см. Пример blinkwithoutdelay в ArduinoIDE
Вызов веб-сервиса в цикле :| ?! Что ты имеешь в виду?, @Patzu
Вы еще не проинструктировали модуль сделать запрос. С помощью команды AT+HTTPPARA вы просто настраиваете запрос, который хотите сделать. В вашем случае вы просто указали URL, который хотите вызвать. Далее вы должны отправить
AT+HTTPACTION=1
чтобы сделать фактический запрос с помощью метода HTTP GET, а затем вы можете прочитать ответ HTTP с помощью
AT+HTTPREAD
Имейте в виду, что после AT+HTTPACTION вы получите незапрошенный код результата в формате
+HTTPACTION: <Method>,<StatusCode>,<DataLen>
это произойдет после того, как модуль фактически выполнит запрос и получит ответ.
- GSM-модуль Sim800l не может подключить данные gprs
- Как настроить модуль TinySine 3G (SIM5320E) для запроса HTTP GET
- HTTP-запрос SIM800L ненадежен
- Модуль Sim808 Неверный HTTP-запрос
- Как публиковать запросы HTTP POST на моем веб-сайте?
- Проблема с получением SMS - GSM-модуль Arduino Uno и SIM900A
- Мини-модем SIM900a, IMEI 0, помощь с контактами TX RX
- Как получить данные из базы данных моего сервера в переменную в моем Arduino?
Могли бы вы решить эту проблему?, @Patzu