2011-12-14 10 views
8

So come effettuare chiamate e inviare SMS utilizzando un GSM/GPRS shield per Arduino Uno. Ma ho un servizio web nella posizione http://mydomain.com/rest/receiveSensorData e desidero inviare i dati del sensore a questo URL utilizzando uno scudo GSM/GPRS perché non posso contare sulla presenza del Wi-Fi nei luoghi operativi. This is the shield Ho, e ho anche una scheda SIM 3G e sono in esecuzione su un Arduino Uno.Utilizzare lo scudo Arduino GSM/GPRS per inviare dati al servizio Web

Come posso fare?

risposta

0

In realtà potrebbe essere più semplice continuare a inviare SMS se i dati sono piccoli e si aggiunge la possibilità di ricevere informazioni SMS per la propria applicazione web.

Vedi le risposte alla seguente domanda, in particolare, il primo che suggerisce: http://www.twilio.com/sms/:

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

Uno dei vantaggi di utilizzo di SMS è che salverà lo scudo di dover impostare una connessione GPRS, che in genere impiegherà più tempo e potrebbe utilizzare più energia. Uno svantaggio, da tenere presente è che SMS non è un sistema di messaggistica garantito, anche se potresti creare una sorta di riconoscimento sugli SMS se lo desideri.

Come parte, l'utilizzo di una scheda SIM 3G non consente di utilizzare 3G su un modem GPRS, a meno che il modem non supporti anche il 3G.

+1

Non stava chiedendo come inviare sms al server, stava chiedendo come creare una connessione al servizio web che è in realtà più semplice dell'impostazione di sms al server. –

+0

Stava chiedendo come inviare i dati del sensore a un servizio Web. Questo può essere fatto utilizzando SMS e un servizio sul lato server che consente a un server Web di ricevere SMS, come mostrato nella risposta sopra. Ci sono vantaggi nell'utilizzo di SMS in alcuni casi e questo è anche sottolineato. – Mick

+0

Penso che questa sarebbe una scelta costosa. –

9

Probabilmente già ottenuto questo lavoro, ma solo nel caso in cui:

Nel mio setup sto usando lo Scudo GPRS Seeed quad-band che utilizza il modulo SIM900. Credo che questo codice funzionerà anche con il tuo dopo aver esaminato le specifiche per il tuo.

#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()); 
    } 
} 

basta cambiare "epc.tmobile.com" per l'APN per il tuo operatore e "YOUR.DOMAIN.COM" al tuo informazioni server e cambiare il "sensorval1 = blah" ai dati variabili e del sensore.

Fammi sapere se questo funziona o no. Posso aiutarti a capirlo, non è troppo difficile.

Buona fortuna.

+0

Viene visualizzato un errore in tutte le combinazioni di 'AT + SAPBR'. Sto usando una scheda basata su sim300, – Siddharth

+0

Sapresti come il successivo codice lato server? Sono in esecuzione su Meteor quindi è tutto javascript con un database mongodb. – mjwrazor