使用Arduino GSM/GPRS屏蔽将数据发送到我的网络服务

使用Arduino GSM/GPRS屏蔽将数据发送到我的网络服务

问题描述:

我知道如何拨打电话并使用GSM/GPRS shield发送短信给Arduino Uno。但我在http://mydomain.com/rest/receiveSensorData的位置有一个网络服务,并且我想使用GSM/GPRS屏蔽将传感器数据发送到此URL,因为我无法指望运营地点存在Wi-Fi。 This is the shield我有,而且我也有一张3G SIM卡,正在Arduino Uno上运行。使用Arduino GSM/GPRS屏蔽将数据发送到我的网络服务

我该怎么做?

如果数据很小并且您可以将接收SMS信息的功能添加到您的Web应用程序,那么继续发送SMS可能会更容易。

见的答案,特别是第一个以下问题提示:http://www.twilio.com/sms/

使用SMS的

Receive SMS messages in a web application in the US on a hosted server

一个优点是它可以节省不必设置GPRS连接屏蔽哪些通常需要更长的时间并可能使用更多的电力。一个缺点是,要知道的是,SMS不是一个有保证的消息系统,尽管如果你愿意,你可以在SMS之上建立某种确认。另外,拥有一张3G SIM将不会让您在GPRS调制解调器上使用3G,除非调制解调器也支持3G。

+1

他没有问如何发送短信到te服务器,他问如何创建一个连接到web服务,这实际上比设置短信服务器更容易。 – 2013-02-23 13:32:58

+0

他在问如何将传感器数据发送到Web服务,这可以通过使用SMS和服务器端的服务来完成,该服务器允许Web服务器接收SMS,这就是上述答案。在某些情况下使用SMS有好处,这也被指出。 – Mick 2014-10-09 07:25:33

您可能已经得到了这个工作,但以防万一:

在我的设置我使用的是采用SIM900模块Seeed四频GPRS盾。我相信这个代码也可以在为你的规格查看之后与你一起工作。

#include <SoftwareSerial.h> 
SoftwareSerial gprsSerial(7, 8); 

void setup() 
{ 
    gprsSerial.begin(19200); 
    Serial.begin(19200); 

    Serial.println("Config SIM900..."); 
    delay(2000); 
    Serial.println("Done!..."); 
    gprsSerial.flush(); 
    Serial.flush(); 

    // attach or detach from GPRS service 
    gprsSerial.println("AT+CGATT?"); 
    delay(100); 
    toSerial(); 


    // bearer settings 
    gprsSerial.println("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\""); 
    delay(2000); 
    toSerial(); 

    // bearer settings 
    gprsSerial.println("AT+SAPBR=3,1,\"APN\",\"epc.tmobile.com\""); 
    delay(2000); 
    toSerial(); 

    // bearer settings 
    gprsSerial.println("AT+SAPBR=1,1"); 
    delay(2000); 
    toSerial(); 
} 


void loop() 
{ 
    // initialize http service 
    gprsSerial.println("AT+HTTPINIT"); 
    delay(2000); 
    toSerial(); 

    // set http param value 
    gprsSerial.println("AT+HTTPPARA=\"URL\",\"http://YOUR.DOMAIN.COM/rest/receiveSensorData?sensorval1=blah&sensorval2=blah\""); 
    delay(2000); 
    toSerial(); 

    // set http action type 0 = GET, 1 = POST, 2 = HEAD 
    gprsSerial.println("AT+HTTPACTION=0"); 
    delay(6000); 
    toSerial(); 

    // read server response 
    gprsSerial.println("AT+HTTPREAD"); 
    delay(1000); 
    toSerial(); 

    gprsSerial.println(""); 
    gprsSerial.println("AT+HTTPTERM"); 
    toSerial(); 
    delay(300); 

    gprsSerial.println(""); 
    delay(10000); 
} 

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

只是改变“epc.tmobile.com”的APN为您的运营商和“YOUR.DOMAIN.COM”到你的服务器的信息并修改“sensorval1 =嗒嗒”你的变量和传感器数据。

让我知道,如果你得到这个工作与否。我可以帮你弄清楚它不是太难。

祝你好运。