使用GPRS / GPS Shield(U-blox Sara G-350)将数据发送到网络服务器

时间:2016-02-19 18:59:01

标签: arduino at-command gprs

我正在研究跟踪汽车的项目。我正在使用Arduino UNO从GPS / GPRS屏蔽接收位置。我可以获得坐标位置。 现在我需要将位置发送到网络服务器,然后使用Google Maps API在网页上显示。它在POST或GET方法中接受它。 这是盾牌模型: U-blox Sara G-350 这是它的手册here

域名:“www.navtec.16mb.com”(托管良好) 路径:“/ test / getter.php”(经过测试并与浏览器GET / POST完美配合) Apn:weborange(OK)

这是我的方法:

#include <SoftwareSerial.h>
#include <String.h>


SoftwareSerial gprsSerial(7 ,8);

void setup() {
  // put your setup code here, to run once:
  gprsSerial.begin(19200);                
  Serial.begin(19200);     
  delay(2000);

 gprsSerial.println("AT+CGDCONT=3,\"IP\",\"weborange\"");
 toSerial();
 delay(2000);

 gprsSerial.println("AT+UHTTP=0");
 toSerial();
 delay(2000);
 gprsSerial.println("AT+UHTTP=2,1,\"www.navtec.16mb.com\"");
                   //AT+UHTTP=<profile_id>,<op_code>,<HTTP_server_name>
 toSerial();
 delay(2000);

 gprsSerial.println("AT+UHTTP=0,5,80");
 toSerial();
 delay(2000);

}

void loop() {

 //gprsSerial.println("AT+UHTTP=2,1,\"submit\"");
                    //AT+UHTTP=<profile_id>,<op_code>,<param_val>[,<param_val1>]
 //toSerial();
 //delay(2000);

 gprsSerial.println("AT+UHTTPC=2,1,/test/getter.php,filename");  //Problem here!!!!!!!!
                   //AT+UHTTPC=<profile_id>,<http_command>,<path>,<filename>[,<param1>[,<param2>[,<param3>]]]
 toSerial();
 delay(2000);
}

void toSerial()
{
  while(gprsSerial.available()!=0)
  {
    Serial.write(gprsSerial.read());
  }

}

这就是我得到的:

  

+ CGDCONT = 3, “IP”, “weborange”

     

行   + UHTTP = 0

     

行   + UHTTP = 2,1, “www.navtec.16mb.com”

     

行   + UHTTP = 0,5,80

     

行   + UHTTPC = 2,1,/测试/ getter.php,文件名

     

ERROR   + UHTTPC = 2,1,/测试/ getter.php,文件名

     

ERROR   + UHTTPC = 2,1,/测试/ getter.php,文件名

     

ERROR   + UHTTPC = 2,1,/测试/ getter.php,文件名

     

错误......

感谢您的时间,我在等待您的支持,任何想法都可以提供帮助。抱歉我的英文不好

1 个答案:

答案 0 :(得分:1)

我参与了一个类似于你的项目,我想你错过了首先建立联系。 只需在setup()方法的代码中添加这些代码行:

 gprsSerial.println("AT+UPSDA=2,0"); //Reset connexion
 toSerial();
 delay(2000);
  gprsSerial.println("AT+UPSD=2,1,\"weborange\""); //Establish a new one
 toSerial();
 delay(2000);
 gprsSerial.println("AT+UPSDA=2,3"); 
 toSerial();
 delay(2000);
 gprsSerial.println("AT+UPSND=2,0");
 toSerial();
 delay(2000);

我希望它适合你。否则,您可以使用AT+UHTTPER=2来检查错误来源。