【问题标题】:Use Arduino GSM/GPRS shield to send data to my web service使用 Arduino GSM/GPRS shield 将数据发送到我的网络服务
【发布时间】:2011-12-14 07:13:38
【问题描述】:

我知道如何使用 GSM/GPRS shield for Arduino Uno 拨打电话和发送短信。但是我在http://mydomain.com/rest/receiveSensorData 有一个网络服务,我想使用 GSM/GPRS 屏蔽将传感器数据发送到这个 URL,因为我不能指望在操作位置存在 Wi-Fi。 This is the shield 我有,而且我还有一张 3G SIM 卡,正在 Arduino Uno 上运行。

我该怎么做?

【问题讨论】:

    标签: web-services arduino sensors gsm gprs


    【解决方案1】:

    您可能已经完成了这项工作,但以防万一:

    在我的设置中,我使用的是使用 Sim900 模块的 Seeed Quad Band GPRS Shield。在查看您的规范后,我相信此代码也适用于您的代码。

        #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=blah”更改为您的变量和传感器数据。

    让我知道你是否让这个工作正常。我可以帮你弄清楚这不是太难。

    祝你好运。

    【讨论】:

    • AT+SAPBR 的所有组合都出现错误。我正在使用基于 sim300 的开发板,
    • 你知道后面的Server端代码是怎么回事吗?我在 Meteor 上运行,所以它都是带有 mongodb 数据库的 javascript。
    【解决方案2】:

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

    请参阅以下问题的答案,尤其是第一个建议的问题:http://www.twilio.com/sms/

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

    使用 SMS 的一个优点是它可以省去屏蔽设置 GPRS 连接的麻烦,这通常需要更长的时间并且可能会消耗更多的电量。需要注意的一个缺点是,SMS 不是一个有保证的消息传递系统,尽管如果您愿意,您可以在 SMS 之上构建某种确认。

    顺便说一句,除非调制解调器也支持 3G,否则拥有 3G SIM 将无法在 GPRS 调制解调器上使用 3G。

    【讨论】:

    • 他不是在问如何向服务器发送短信,而是在问如何创建到 Web 服务的连接,这实际上比设置短信到服务器更容易。
    • 他在问如何将传感器数据发送到 Web 服务,这可以使用 SMS 和服务器端的服务来完成,该服务允许 Web 服务器接收 SMS,这就是上面的答案所示。在某些情况下使用 SMS 是有好处的,这一点也得到了指出。
    • 我认为这将是一个代价高昂的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多