Используйте Arduino GSM / GPRS щит для отправки данных на мой веб-сервис - PullRequest
8 голосов
/ 14 декабря 2011

Я знаю, как совершать звонки и отправлять SMS-сообщения, используя GSM / GPRS щит для Arduino Uno .Но у меня есть веб-служба по адресу http://mydomain.com/rest/receiveSensorData, и я хочу отправить данные датчика на этот URL-адрес с помощью экрана GSM / GPRS, потому что я не могу рассчитывать на присутствие Wi-Fi в рабочих местах. Это щит У меня есть, у меня также есть SIM-карта 3G и я использую Arduino Uno.

Как мне это сделать?

Ответы [ 2 ]

9 голосов
/ 23 февраля 2013

Возможно, вы уже работали, но на всякий случай:

В моей настройке я использую GPRS-экран Seeed Quad Band, в котором используется модуль Sim900.Я полагаю, что этот код будет работать и с вашим после просмотра спецификаций для вашего.

    #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» на вашу переменную и данные датчика.

Дайте мне знать, если у вас это работает или нет.Я могу помочь вам понять, что это не слишком сложно.

Удачи.

0 голосов
/ 12 января 2012

На самом деле может быть проще продолжать отправлять SMS, если данные небольшие, и вы добавляете возможность получать информацию SMS в свое веб-приложение.

См. Ответы на следующий вопрос, в частности первый, который предлагает: http://www.twilio.com/sms/:

Получение SMS-сообщений в веб-приложении в США на размещенном сервере

Одним из преимуществ использования SMS является то, что он избавит экран от необходимости устанавливать соединение GPRS, которое обычно занимает больше времени и может потреблять больше энергии. Следует помнить, что одним из недостатков является то, что SMS не является гарантированной системой обмена сообщениями, хотя при желании вы могли бы создать своего рода подтверждение поверх SMS.

Кроме того, наличие SIM-карты 3G не позволит вам использовать 3G на модеме GPRS, если модем также не поддерживает 3G.

...