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

Sending data to a webserver with GPRS/GPS Shield (U-blox Sara G-350)

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

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

这是我的方法:

#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"

OK +UHTTP=0

OK +UHTTP=2,1,"www.navtec.16mb.com"

OK +UHTTP=0,5,80

OK +UHTTPC=2,1,/test/getter.php,filename

ERROR +UHTTPC=2,1,/test/getter.php,filename

ERROR +UHTTPC=2,1,/test/getter.php,filename

ERROR +UHTTPC=2,1,/test/getter.php,filename

ERROR ...

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

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

 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 来检查错误来源。