GPRS shield: arduino si connette a internet

Vuoi connettere il tuo progetto con arduino a internet? Usa la GPRS shield. Per connettere il tuo progetto alla grande rete hai già letto come utilizzare la WiFi shield o Ethernet Shield

GPRS shield

quando non hai la possibilità di collegarti ad una rete già esistente puoi utilizzare la GPRS shield

Questa shield ti permette di eseguire sia comunicazioni GSM sia connessioni GPRS grazie al modulo SIM900 vero cuore della shield e modem di connessione.

In questo articolo ti mostro come effettuare la connessione GPRS ad un sito Web e scrivere sul monitor seriale la risposta del server.

Montare e configurare la GPRS shield

La GPRS shield è già montata, quindi niente saldature o complessi piani di assemblaggio, l’unica cosa che devi collegare è l’antenna, per farlo la GPRS shield dispone di un connettore SMA ed uno MMCX saldati sulla scheda e a cui puoi collegare l’antenna in dotazione.

Io ho scelto di collegare il cavetto MMCX e l’antenna volante pensando ad un progetto in cui il connettore dell’antenna possa non coincidere con il foro di uscita del case che lo ospita:

GPRS shield

per la configurazione ci sono dei pin su cui inserire i jumper come da schema:

GPRS shield configurare pin TX ed RX

avrai notato che i pin TX ed RX sono configurati rispettivamente come 2 e 3, inoltre devi controllare che il microswitch, evidenziato in giallo, sia posizionato su UART.

Libreria GPRS shield e comandi AT

Il modulo SIM900 è un modem seriale, ossia comunica con arduino attraverso due pin ( 2 e 3 ) in modalità Tx/Rx e si alimenta con i +5v e Gnd direttamente da Arduino.

Come tutti i modem seriali puoi utilizzare i comandi AT, da wikipedia:

La maggior parte dei modem fonici utilizza i comandi AT Hayes, uno specifico insieme di comandi originalmente sviluppato per il modem Hayes Smartmodem da 300 baud. Lastringa di inizializzazione consiste di una serie di comandi che prepara il modem per la comunicazione, impostando caratteristiche come il tipo di connessione, i tempi di attesa, la rilevazione del segnale di occupato eccetera. Nei modelli di modem più recenti l’inizializzazione viene gestita da programmi con una qualche interfaccia grafica, in modo che l’utente non debba digitare questi comandi e neanche conoscerne l’esistenza.

comandi con cui puoi puoi dialogare con il modem impostando modalità di connessione, velocità ecc.. e puoi trovare un utile manuale in questo link.

I comandi AT non sono di certo semplici sopratutto se non conosci i protocolli e non hai chiaro come si esegue una connessione o cosa sia impostare i baud di una connessione GSM/GPRS.

Ti viene in aiuto una libreria davvero ben scritta: GSM GPRS GPS Shield, SIM908 & SIM900, IDE 1.00, Version 3.04 scritta da Marco Martines e Boris Landoni.

Lo sketch di connessione a Google dalla GPRS shield

Tra gli esempi disponibili con la libreria che hai scaricato puoi provare quello denominato “GSM_GPRSLibrary_Client_example” che ti riporto:

#include "SIM900.h"
#include <SoftwareSerial.h>
#include "inetGSM.h"
//#include "sms.h"
//#include "call.h"

//To change pins for Software Serial, use the two lines in GSM.cpp.

//GSM Shield for Arduino
//www.open-electronics.org
//this code is based on the example of Arduino Labs.

//Simple sketch to start a connection as client.

InetGSM inet;
//CallGSM call;
//SMSGSM sms;

char msg[50];
int numdata;
char inSerial[50];
int i=0;
boolean started=false;

void setup()
{
  //Serial connection.
  Serial.begin(9600);
  Serial.println("GSM Shield testing.");
  //Start configuration of shield with baudrate.
  //For http uses is raccomanded to use 4800 or slower.
  if (gsm.begin(2400)){
    Serial.println("\nstatus=READY");
    started=true;
  }
  else Serial.println("\nstatus=IDLE");

  if(started){
    //GPRS attach, put in order APN, username and password.
    //If no needed auth let them blank.
    if (inet.attachGPRS("wap.tim.it", "", ""))
      Serial.println("status=ATTACHED");
    else
      Serial.println("status=ERROR");
    delay(1000);

    //Read IP address.
    gsm.SimpleWriteln("AT+CIFSR");
    delay(5000);
    //Read until serial buffer is empty.
    gsm.WhileSimpleRead();

    //TCP Client GET, send a GET request to the server and
    //save the reply.
    numdata=inet.httpGET("www.google.com", 80, "/", msg, 50);
    //Print the results.
    Serial.println("\nNumber of data received:");
    Serial.println(numdata);
    Serial.println("\nData received:");
    Serial.println(msg);
  }
};

void loop()
{
  //Read for new byte on serial hardware,
  //and write them on NewSoftSerial.
  serialhwread();
  //Read for new byte on NewSoftSerial.
  serialswread();
};

void serialhwread(){
  i=0;
  if (Serial.available() > 0){
    while (Serial.available() > 0) {
      inSerial[i]=(Serial.read());
      delay(10);
      i++;
    }

    inSerial[i]='\0';
    if(!strcmp(inSerial,"/END")){
      Serial.println("_");
      inSerial[0]=0x1a;
      inSerial[1]='\0';
      gsm.SimpleWriteln(inSerial);
    }
    //Send a saved AT command using serial port.
    if(!strcmp(inSerial,"TEST")){
      Serial.println("SIGNAL QUALITY");
      gsm.SimpleWriteln("AT+CSQ");
    }
    //Read last message saved.
    if(!strcmp(inSerial,"MSG")){
      Serial.println(msg);
    }
    else{
      Serial.println(inSerial);
      gsm.SimpleWriteln(inSerial);
    }
    inSerial[0]='\0';
  }
}

void serialswread(){
  gsm.SimpleRead();
}

la compilazione del codice con l’IDE 1.0 di Arduino è avvenuta senza difficoltà e dopo aver caricato lo sketch su Arduino puoi aprire il monitor seriale e vedrai qualcosa di simile a questo:

GPRS Shield serial monitor output

lo sketch non presenta complessi comandi da impostare a quelli pensa la GPRSLibrary, i punti principali sono:

linee 01-05: includi tutte le librerie che occorrono allo aketch di funzionare con la GPRS shield;

linea 32: definisci una connessione a 2400 baud con il modem SIM900;

linea 34: se la comunicazione con il modem avviene correttamente imposta la variabile started a true;

linea 41: imposta l’APN fornito dalla compagnia telefonica, io ho utilizzato l’APN di TIM: “wap.tim.it” avendo inserito una scheda TIM nella GPRS shield, senza username e password;

linea 48: invii al modem uno di quei comandi AT di cui ti parlavo sopra “AT+CIFSR” che richiede al modem l’indirizzo IP ottenuto dal provider, è un ulteriore controllo che la connessione sia avvenuta;

linea 51: leggi il buffer trasmesso dal modem contenente la risposta, in questo caso l’IP richiesto alla linea 48;

linea 55: utilizza il metodo httpGET della libreria GPRS shield per connetterti ad una pagina web, nel caso indicato ti connetti all’indirizzo www.google.com sulla porta 80 ( default HTTP Port ) e la risposta la scrivi nella variabile msg;

linee 57-60: scrivi sul monitor seriale sia il risultato della chiamata eseguita alla linea 55 sia il messaggio, ossia la risposta, ottenuta.

linee 64-71: la funzione loop() in questo esempio continua ad eseguire due funzioni esterne: serialhwread() e serialswread();

linea 73: definisci la funzione serialhwread() la cui funzione è leggere dal monitor seriale l’input che gli invii e interpretarlo per inviare dei comandi AT al modem, in particolare è interessante la parte di TEST che analizzo nel dettaglio:

linea 90: se nella stringa inviata dal monitor seriale compare il testo TEST esegue le linee successive;

linea 91: scrive sul monitor seriale la stringa “SEGNAL QUALITY”;

linea 92: invia al modem il comando AT usando la stringa “AT+CSQ”;

a questo punto la funzione serialhwread() conclude il suo scopo e lo sketch continua sul loop() che invoca la serialswread():

linea 106: definisci la funzione serialswread() richiamata dalla loop() la cui funzione è scrivere sul monitor seriale il valore letto dal modem della GPRS shield;

linea 107: recupera la risposta dal modem SIM900 e la scrivi sul monitor seriale dell’IDE Arduino.

Buon divertimento !!!

  • Questo sito ed i suoi contenuti è fornito "così com'è" e Mauro Alfieri non rilascia alcuna dichiarazione o garanzia di alcun tipo, esplicita o implicita, riguardo alla completezza, accuratezza, affidabilità, idoneità o disponibilità del sito o delle informazioni, prodotti, servizi o grafiche correlate contenute sul sito per qualsiasi scopo.
  • Ti chiedo di leggere e rispettare il regolamento del sito prima di utilizzarlo
  • Ti chiedo di leggere i Termini e Condizioni d'uso del sito prima di utilizzarlo
  • In qualità di Affiliato Amazon io ricevo un guadagno dagli acquisti idonei qualora siano presenti link al suddetto sito.

Permalink link a questo articolo: https://www.mauroalfieri.it/elettronica/gprs-shield-arduino.html

183 commenti

Vai al modulo dei commenti

    • Mattteo il 26 Gennaio 2013 alle 22:27
    • Rispondi

    Piccolo consiglio, alla pagina dove vengono elencati i tutorial sostituisci “2. GPRS Shield” con “3. GPRS Shield”.
    Probabilmente ti è sfuggito di vista 🙂
    Colgo l’occasione per chiederti se in futuro farai una guida su come utilizzare il sonar.

    Complimenti per il blog,
    Matteo.

    1. Grazie Matteo,
      a quale tipo di sonar ti riferisci?

      Mauro

        • Mattteo il 6 Febbraio 2013 alle 16:30
        • Rispondi

        Scusa per la risposta in ritardo…
        Ho acquistato questo sonar http://goo.gl/R74Wn ma non sono riuscito a trovare tutorial su internet.
        Inoltre ti chiedo se possiedi i moduli wifi xbee, che anche in quello sono un disastro in quanto non riesco nemmeno a configurarli 🙂

        Complimeti per il Blog,
        Matteo

        1. Ciao Matteo,
          il sonar che mi hai postato è un SRF04, io ti consiglio di acquistare un SRF05 più performante e di cui ho scritto un tutorial.
          Il sonar SRF04 si collega come l’SRF05, i pin Vcc,Gnd,Trigger ed Eco.

          Ciao
          Mauro

    • Mohamed il 4 Febbraio 2013 alle 15:28
    • Rispondi

    Ciao,
    Vorrei sapere se ci sono dei tutorials su come salvare dei dati su una pagina HTML su internet grazie alla connessione GPRS.

    1. Ciao Mohamed,
      una pagina HTML, che io sappia, non può salvare dati, al massimo puoi visualizzarli, io userei comunque un linguaggio dinamico tipo Php per farlo.
      A quale progetto stai lavorando?

      Mauro

        • mohamed il 8 Febbraio 2013 alle 15:18
        • Rispondi

        Sto lavorando ad un rilevatore gps con il modulo sim908.
        In pratica mandando un sms alla sim nel modulo, si ricevono in risposta le coordinate e il link di google maps del luogo in cui si trova arduino.
        C’è anche una micro sd dove viene creata una pagina htm in cui c’è una tabella dove vengono salvati(per salvati intendo che vengono scritti i valori numerici) i dati.
        Vololevo fare la stessa cosa, ma creando la pagina, o modificandone una già esistente, su internet.
        Stavo pensando di utilizzare questo servizio http://pastehtml.com/

        1. Progetto interessante,
          che tipo di sms devi inviare alla SIM?
          Vorrei provarlo con il SIM900 che possiedo.

          Mauro

    • Mohamed il 8 Febbraio 2013 alle 18:08
    • Rispondi

    Si possono fare molte richieste
    -“dove sei?” Si riceve la posizione attuale e il link di gmaps
    -“coordinate continue” il modulo ti risponde chiedendoti ogni quanti minuti vuoi che te li mandi
    -“se log” il modulo ti chiede ogni quanti minuti vuoi che salvi i dati sulla microSD
    -“circoscrivi” il modulo ti chiede centro e raggio e ti avverte quando si allontana troppo
    – -“allontana” il modulo ti chiede centro e raggio e ti avverte quando si avvicina troppo

    E poi ci sono altre funzioni attivabili con dei pulsanti su Arduino.
    il mio unico problema è quello di salvare i dati online.

    1. Ciao Mohamed,
      per il salvataggio dei dati on-line è necessario che tu esegua una connessione html ad una pagina dinamica (php,asp,java) o ad un servizio on-line che possa registrare i tuoi dati.

      Mi invii la documentazione su come interrogare il sim900 per ricevere le informazioni di cui mi parli?

      Grazie
      Mauro

        • mohamed il 11 Febbraio 2013 alle 15:56
        • Rispondi

        Io uso il sim908, il sim900 non ha la connessione gps da quello che so.
        Qui c’è la documentazione: http://www.open-electronics.org/gsm-gps-shield-for-arduino/
        Per il savataggio online, è possibile usare google docs (drive) ? ho trovato questo tutorial che spiega come farlo http://www.open-electronics.org/how-send-data-from-arduino-to-google-docs-spreadsheet/
        Il problema è che non so come farlo con la connessione gps.

        1. Ok, come non detto, io ho solo un sim900.
          Per la connessione non devi farla via gps o gsm ma GPRS, la libreria che ho utilizzato nel tutorial possiede anche questi metodi, devi provarli.

          In merito a Google so che puoi utilizzarlo, non so come funziona, io uso mio server ed uso pagine create da me quando voglio memorizzare dati.
          Probabilmente farò un tutorial sulle connessioni GPRS con il SIM900 ma non a breve.

          Mauro

    • Mohamed il 11 Febbraio 2013 alle 16:35
    • Rispondi

    Ok ma i comandi Ethernet.begin e client.print hanno un comando equivalente nella libreria gprs?

    1. Ciao Mohamed,
      se leggi bene questo articolo troverai come fare una chiamata in GET con la libreria GSM e SIM900.

      Mauro

    • Luca il 22 Marzo 2013 alle 19:51
    • Rispondi

    Salve,

    Complimenti, veramente molto interessante questo portale, ci sono ottime recensioni, guide e informazioni utilissime e ben spiegate!

    Una domanda, la GSM Shield si deve collegare ad Arduino Uno? In che modo?
    Dovrei realizzare una macchina comandata dal cellulare, avrei pensato di utilizzare Aeduino Uno per la gestione del software e di vari sensori che sono a bordo della piccola vettura, e di collegarla alla GSM Shield per comandare i movimenti tramite un applicazioni sul telefono.

    Sai indirizzarmi meglio sulla risoluzione del caso?

    Grazie infinite.

    1. Ciao Luca,
      la GSM/GPRS Shield ha già i pin per essere inserita su Arduino Uno come tutte le shield.
      Sull’uso della shield per controllare una macchina non sono convinto che sia la strada migliore.
      Io ti consiglio il WiFi in quanto più rapido nella connessione e senza costo, con il GSM devi
      pagare connessione a Internet ogni volta che usi la macchina e i tempi di reazione sono quelli di una rete cellulare.

      Mauro

        • Luca il 25 Marzo 2013 alle 00:44
        • Rispondi

        Buona sera Mauro,
        ti ringrazio moltissimo per la spiegazione e per avermi indirizzato verso la WiFi Shield, attraverso delle ricerche più approfondite sono riuscito a verificare che effettivamente i tempi di risposta della GSM/GRPS sono decisamente più lenti (velocità sms, chiamate e internet e occore una sim con abbonamento dati), mentre la WiFI Shield è molto più fluida e performante e sfrutta la connessione ADSL gratuita.

        Ora mi sono sorti due dubbi.. Nel caso utilizzassi la WiFI Shield in un luogo senza router, adsl o ripetitori, sarebbe possibile utilizzare la condivisione internet di un cellulare con abbonamento mensile per la navigazione? Riuscirebbe a trovarla e collegarsi?

        Successivamente dovrei scrivere un applicazione per comandare tramite cellulare la macchinina.. Sarebbe possibile scrivere un applicazione web piuttosto che un applicazione per ogni sistema operativo mobile piu diffuso? Tramite pagine php e con database e mysql potrei elaborare alcuni dati, ma credo non sia fattibile comandare una macchinina.. Vorrei avere le idee più chiare.

        Grazie ancora per la disponibilità e per la chiarezza con cui riesci a spiegare ogni cosa =)

        Luca.

        1. Ciao Luca,
          io per realizzare un progetto simile ho utilizzato il WiRC, puoi leggere gli articoli sul Blog.
          Il WiRC crea già una connessione detta ad-hoc che puoi usare quando non é disponibile una connessione WiFi.

          Inoltre ha già una app per i maggiori smartphone 🙂

          Mauro

    • Lúcio Pintanel il 6 Aprile 2013 alle 18:10
    • Rispondi

    Olá Mauro,
    Estou fazendo um projeto que usa o shield IcomSat v1.1 SIM900., arduino Duemilanove, IDE 1.5.2.
    Gostaria de saber como posso fazer para obter a data/hora do módulo?
    Via comando AT consiguo visualizar no serial monitor.

    1. Olá Lúcio,
      perdóname, pero soy italiano y yo no puedo escribir en su propio idioma.

      Nunca traté de obtener la fecha y hora de SIM900 puede leer su ficha de comandos AT

      Mauro

    • Saro il 18 Aprile 2013 alle 12:24
    • Rispondi

    Io invece ho appena acquistato Arduino UNO REV 3 e Adafruit GPS logger shield kit, oggi farò qualche prova. Mi stavo chiedendo se era possibile aggiungere anche questa shield per poter inviare le posizioni su un server.

    1. Ciao Saro,
      secondo me puoi farlo.
      Purtroppo non possiedo la GSM Shield per fare dei test.

      Mauro

        • Saro il 19 Aprile 2013 alle 09:21
        • Rispondi

        Una volta completato questo allora farò qualche prova e ti farò sapere.

        1. Ottimo !!!

    • Andrea1957 il 24 Giugno 2013 alle 13:11
    • Rispondi

    Ciao Mauro, complimenti per il bel lavoro!
    Volevo chiederti se nel frattempo hai fatto degli espermenti anche con la SIM908 ovvero SIM900 + GPS.
    Vorrei realizzare un sistemino GPS che memorizzi le letture su una SD da scaricare sul PC, in seconda battuta sarebbe bello riuscire a mandare una mail con le letture delle ultime 24 ore.
    Hai qualche consiglio da darmi?
    Grazie
    Andrea

    1. WOW Andrea che bel progetto, mi piacerebbe pubblicarlo una volta concluso se ti va.
      Purtroppo non possiedo un SIM908 per fare dei test ma se trovi delle librerie con cui leggere i valori del GPS puoi seguire il mio articolo sul DataLogger Arduino che spiega come scrivere dei valori a cadenza oraria su SD.

      Mauro

    • ivan il 5 Settembre 2013 alle 12:16
    • Rispondi

    ciao mauro,
    trovo davvero interessanti i tuoi articoli ed in particolare quelli riguardanti le connessioni tra arduino ed il web senza utilizzo di cavi
    sto progettando un sensore che misurerà alcune variabili fisiche e dovrà essere lasciato in posto fisso dove non ho possibilità ne di connetterlo alla rete ne di alimentarlo
    lo scopo è quello di leggere i valori che per ora visualizza su display lcd e trasferirli su un sito web da me creato ad hoc in modo tale da poter essere visualizzati in remoto da qualunque postazione pc che abbia connessione internet e smarthphone
    innanzitutto ti volevo chiedere se il modulo gprs arduino shield http://www.blogcdn.com/es.engadget.com/media/2012/08/arduino.jpg è adatto allo scopo
    ovvero tramite questo gprs shield ho la possibilità di trasmettere i dati su una web page? in che modo? ci sono dei listati di esempio che puoi propormi? io ho visto solo l apertura della pagina google…ma a me serve che vada su una pagina php ed in apposite caselle mi scriva i dati tempo varianti di alcune variabili da lui misurate ogni clock da me deciso (ad esempio ogni 10 minuti) e che differenza c’è tra quello postato nella mia immagine ed i sim900 e sim908?
    Inoltre per l alimentazione mi consigli pannellino solare o batterie? che autonomia hanno?
    grazie davvero
    se hai una mail privata dove poterti illustrare meglio il progetto se non ti è chiaro in alcuni punti e puoi lasciarmela ne sarei contento
    ciao
    Ivan

    1. Ciao Ivan,
      senza dubbio il tuo progetto è interssante ed una volta che lo avrai ultimato mi piacerebbe poter pubblicare, a tuo nome, il risultato.
      Purtroppo non ho mai provato la shield che mi invvi ma solo quelle che vedi nei miei articoli, ti consiglio di utilizzare una GPRS shield basata sul sim900 perchè ci sono molte librerie GPRS già pronte e trovi anche un esempio su come inviare dati ad una pagina php sul blog.

      Per l’alimentazione ci sono molte shield interessanti per il solare, tuttavia considera che i moduli GPRS solitamente hanno bisogno di molta corrente per funzionare e per restare connesi per cui è probabile che dovrai procurarti un pannello abbastanza grande ed una batteria tampone con circuito regolatore di carica adatti a sostenere il carico del tuo progetto.
      Potrai misurare quanto assorbe con un tester o un alimentatore da banco dotato di amperometro a progetto ultimato e dimensionare il pannello in modo adeguato.

      Mauro

        • ivan il 9 Settembre 2013 alle 09:05
        • Rispondi

        ottimo mauro grazie per la pronta risposta mi procurerò un sim900 e ti tengo aggiornato

        hai qualche link in proposito agli esempi su come inviare dati ad una pagina php sul blog da suggerirmi?

        grazie sempre

        Ivan

        1. Ciao Ivan,
          certo nel blog ci sono degli esempi, mi sembra di averne pubblicati in merito alla centralina di irrigazione od un progetto simile.

          Mauro

    • ivan il 13 Settembre 2013 alle 18:25
    • Rispondi

    lunedi mi arriva il sim908 avevano solo quello disponibile…nnagg
    le librerie da utilizzare sono le stesse giusto?
    pensi che avrò problemi ad applicare gli esempi del sim900?
    dovrebbe essere il contrario

    1. Ciao Ivan,
      purtroppo non ho mai provato il Sim908 ma immagino che il produttore ti abbia dato un link alle librerie da utilizzare, dovrai solo controllare che i metodi delle classi utilizzate dalla libreria per il SIM908 ed il SIM900 siano gli stesi e se ci sono differenze adattarli chiedendo al produttore degli esempi.

      Mauro

    • ivan il 14 Settembre 2013 alle 13:23
    • Rispondi

    ho preso sim908 , lo shied universale http://www.robot-domestici.it/joomla/component/virtuemart/gsmgprs-a-gps-shield-v2-per-arduino per metterci la sim908 saldata su e l antenna seguente http://www.made-in-china.com/showroom/aricohk/product-detailMqQmLzyCHYWu/China-GPS-GSM-Antenna-AR-GPS-GSM-002-.html

    su quest’ultima ho forti dubbi che non mi faccia lavorare con scambi gprs per il progetto di cui ti dicevo sopra

    1. Ciao Ivan,
      purtroppo a senzazione é impossibile dire se un oggetto funzionerà o meno, il fatto che l’antenna non riporti la sigla GPRS indica poche info.
      Quando arriverà potrai testarla ed avrai le tue conferme o smentite.

      Mauro

        • ivan il 19 Settembre 2013 alle 10:50
        • Rispondi

        sto provando lo shield gprs ma ho sempre questo errore nel far girare lo script da te postato hai qualche idea?

        GSM Shield testing.
        Trying to force the baud-rate to 9600

        ERROR: SIM900 doesn’t answer. Check power and serial pins in GSM.cpp

        status=IDLE

        1. Ciao Ivan,
          l’errore che ricevi segnala un errato collegamento del modem GSM.
          Controlla di aver collegato correttamente i pin del componente e di arduino.

          Mauro

    • Massimo il 28 Settembre 2013 alle 10:20
    • Rispondi

    Ciao Mauro,

    ho iniziato da poco a lavorare con ARDUINO e stavo facendo un piccolo progettino a scopo didattico ma … ho trovato un ostacolo che non riesco a superare…

    Ho creato il CLIENT , vado ad interrogare una pagina chiamata test.php che contiene semplicemente

    lancio e sul monitor vedo la scritta

    Number of data received:
    50

    Data received:

    HTTP/1.1 200 OK
    Date: Sat, 28 Sep 2013 08:15:19 GMT
    Server: Apache
    X-Powered-By: PleskLin
    Connection: close
    Content-Type: text/html

    10
    CLOSED

    ora , come posso trasformare il numero “10” in una variabile da associare a un led ? in pratica :

    se leggi

    10 -> LED1 = ON , LED2 = OFF
    11 -> LED1 = ON , LED2 = ON
    00 -> LED1 = OFF , LED2 = OFF
    01 -> LED1 = OFF , LED2 = ON

    Grazie 10000 in anticipo

    Ciao

    Massimo

    1. Ciao Massimo,
      non ti occorre una variabile.
      Ti basta un if che verifichi il valore di Serial.read() e lo contronti con 10,11,00,01 …
      Per esperienza è meglio utilizzare valori in byte per cui io userei A,B,C,D

      Mauro

    • ivan il 29 Novembre 2013 alle 12:27
    • Rispondi

    ciao mauro il modulo gprs
    mi da a volte
    STATUS ATTACHED MA DATI RECEIVED 0
    E A VOLTE STATUS ERROR

    SE PROVO GLI SCRIPT DI ESEMPIO contenuti nella libreria beta 1.04 e 1.05 mi funziona solo l invio di sms

    non riesco a far funzionare ne i comandi at
    ogni volta che li digito mi da error
    e nemmeno chiamate e client e server

    io avrei bisogno di utilizzare questo shield come ti dissi per inviare i miei dati del senoread una pagina web tramite connessione web quindi http tcp ip ma non so come risolvere la questione
    hai qualche suggerimento? grazie

    1. Ciao Ivan,
      che tipo di integrato o modulo di trasmissione utilizza la shield, potrebbe essere una incompatibilità tra la shield e la libreria.
      Considera che la comunicazione GPRS, simile al cellulare, è soggetta alla presenza di rete da parte del gestore.

      Mauro

        • ivan il 1 Dicembre 2013 alle 13:49
        • Rispondi

        CIAO MAURO
        allora utilizzo la stessa libreria tua la beta 1.04 ma ho provato anche la beta 1.05 ed il modulo è il sim908
        le pochissime volte che mi va bene succede questo (anche se una tatum…perchè la maggior parte delle volte mi da data received 0 e si blocca)
        Altra cosa ma i comandi AT li invii semplicemente digitando nel serial monitor in alto?
        TEST MODULO GSM.

        status=PRONTO
        status=AGGANCIATO
        Lettura indirizzo IP:
        Comandi AT:
        Qualità del segnale:

        10.175.17.64

        OK

        +CSQ: 18,0

        OK

        Number of data received:
        50

        Data received:

        HTTP/1.0 302 Found
        Location: http://www.google.it/?gws_rd=cr&ei=JC6bUsqHEYmXyQPu3oCwDw
        Cache-Control: private
        Content-Type: text/html; charset=UTF-8
        Set-Cookie: PREF=ID=5dd70f88912bf777:FF=0:TM=1385901604:LM=1385901604:S=HCqC49zqXxwKzI_q; expires=Tue, 01-Dec-2015 12:40:04 GMT; path=/; domain=.google.com
        Set-Cookie: NID=67=At47fZaFVNq2U2-LpRPwoQLQI48D3huUi3G3g060zlpMR97iQPt1wi7WjQ-tvzVp7kp-z-C9oYY7mpi-FeTv0tB-swOEVxKw2id3IQcVgx-J08gKXaeedKB8mr2X-TVi; expires=Mon, 02-Jun-2014 12:40:04 GMT; path=/; domain=.google.com; HttpOnly
        P3P: CP=”This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info.”
        Date: Sun, 01 Dec 2013 12:40:04 GMT
        Server: gws
        Content-Length: 258
        X-XSS-Protection: 1; mode=block
        X-Frame-Options: SAMEORIGIN
        Alternate-Protocol: 80:quic

        302 Moved
        302 Moved
        The document has moved
        here.

        AT

        ERROR
        ATD3398410197;

        ERROR
        ATD

        ERROR
        AT+CIFSR

        ERROR
        “AT+CIFSR”

        ERROR
        “ATD3398410197;”

        ERROR

        CLOSED
        AT+CSQ

        ERROR
        “AT+CSQ”

        ERROR
        A

        AT

        ERROR
        ATD

        ERROR

        1. Ciao Ivan,
          purtroppo non riesco a interpretare quello che accade nella tua shield da quello che mi incolli.
          Devo chiederti di fare da solo il debug del tuo sketch.

          A mio avviso uno dei problemi potrebbe essere che la libreria che utilizzo io è scritta per un SIM900 e non il SIM908 che potrebbe differire per tempi di attesa comandi o risposta nella comunicazione seriale.

          Mauro

            • ivan il 1 Dicembre 2013 alle 20:00

            tutto risolto mauro… sono riuscito a farla comunicare… io utilizzo anche un sistema android per la comunicazione…ad ogni modo mi daresti qualche dritta sulla questione principale?
            ovvero ora che la shield funziona e comunica ho bisogno di costruire quanto segue: trasmettere i dati raccolti dal sensore tramite lo shield gprs TDGGSM_908, per poi trasferirle ad uno spazio web dedicato, ottenendo così dei valori in Real Time, consultabili appunto da web… so che in giro c’e’ qualcosa ma non trovo piu nulla in merito….sicuramente dovrà essere una pagina php con un sql… ma ho visto un po di cose con la ethernet shield con il gprs niente…. attendo tue
            grazie sempre per le tue pronte risposte
            buon lavoro
            ivan

          1. Ciao Ivan,
            si ho scritto un articolo dedicato al salvataggio di dati via GPRS, puoi leggere quello.

            Mauro

            • ivan il 2 Dicembre 2013 alle 09:23

            mauro purtroppo con la funzione cerca non riesco a trovare l articolo che dici
            ti sarei grato se potessi linkarmelo
            cmq io intendevo anzitutto trasmissione dati da gprs a web non per forza salvataggio

          2. Ciao Ivan,
            scrivendo “gprs” nel cerca ottieni questo link 🙂
            https://www.mauroalfieri.it/elettronica/gprs-shield-arduino.html

            Mauro

    • ivan il 2 Dicembre 2013 alle 11:05
    • Rispondi

    OK MAURO
    questo lo avevo capito
    ma la discussione che esce è questa
    e non vedo nessun riferimento a come inviare i dati di un sensore da modulo gprs ad una pagina web ospitante

    1. Ciao Ivan,
      quando sai fare una chiamata ad un web server via GPRS devi solo chiamare la pagina o l’url per il salvataggio dei dati in un DB.
      Ogni progetto fa uso di un proprio sistema di archiviazione dei dati inventato dall’autore.

      Ti consiglio di leggere anche gli articoli su “dataino” che punta a offrirti un sistema di raccolta dati on-line realizzato da un appassionato.

      Mauro

        • ivan il 2 Dicembre 2013 alle 19:51
        • Rispondi

        ho letto dataino molto interessante ma fa uso della ethernet shield io ho bisogno di inviare i dati da arduino ad una pagina web tramite gprs shield 🙁 sono depresso

        1. Ciao Ivan,
          non deprimerti 🙂 fai distinzione tra il metodo di archiviazione dati on-line e come invii i dati.

          Datano ti offre un servizio di raccolta dati con un sistema ben fatto e gratuito offerto da un appassionato, o puoi realizzarti tutto tu sul web.

          Il modo in cui gli invii i dati é indipendente da Ethernet o GPRS o WiFi; l’importante é che tu esegua una chiamata alla pagina web di raccolta dei dati, il metodo sceglilo tu.

          Tutto già pronto non esiste per quello che vuoi fare tu, e non sarebbe possibile probabilmente trovare sempre tutto già fatto, devi metterci del tuo.
          In compenso sia gli sketch per inviare dati sul web via GPRS che ti ho consigliato sia il progetto datano sono incredibilmente flessibili per adattarsi al tuo progetto.

          Mauro

  1. Ciao Mauro,

    Volevo spiegare le mie difficoltà con l’inet.POST, non so se tu l’hai mai provato.
    Sul numero 177 di Elettronica IN c’è un articolo per poter utilizzare il GET e il POST e mentre con il get non c’è nessun problema, con il POST non ricevo nulla.
    Avendo creato un file php che inserisce i dati in un DB del mio server, con il metodo GET riesco a fare tutto ma con i POST non mi aggiorna mai la DB quindi ho deciso di seguire alla lettera l’esempio di Elettronica IN utilizzando il loro php di test, presumendo che sul mio ci potessero essere degli errori:

    numdata=inet.httpPOST(“www.evildeejay.it”, 80, “/test/test.php”,”name=Mimmo&age=40 “, msg, 50);

    tenendo collegato arduino alla seriale dovrebbe rispondere con un messaggio di benvenuto utilizzando il nome e l’età inseriti nel POST, ma a me restituisce solo quello che vedi :

    GSM Shield testing.

    status=READY
    TEST
    status=ATTACHED

    10.221.15.65

    Number of data received:
    0

    Data received:

    HTTP/1.1 413 Request Entity Too Large
    Date: Sat, 14 Dec 2013 1

    Avevo letto che il metodo inet.POST non funzionava con le vecchie versioni ma con l’ultima GSMShield 3.0.5 doveva funzionare correttamente.

    Grazie in anticipo.

    1. Ciao Domenico,
      ho sperimentato, tempo addietro, sia il metodo GET sia il metodo POST con buoni risultati.

      Chiaramente la pagina .php sarà differente per l’uno o l’altro metodo.

      L’esempio che citi di futura non lo conosco, tuttavia penso tu possa scrivere loro per avere aiuto in modo specifico su quell’esempio, so che sono molto disponibili.

      Da ciò che mi hai inviato leggo che la comunicazione avviene correttamente ed il server ti risponde con un messaggio chiaro il cui codice di errore é 413, prova a cercare tra i codici di errore del protocollo httpp cosa indica questo errore restituito dal server.

      Mauro

    • Pino Rossi il 27 Gennaio 2014 alle 20:01
    • Rispondi

    Posso chederti quale shield gsm hai usato?Avrei bisogno di realizzare un controllo da remoto ma non ho ancora capito quale shield mi conviene comprare. Vorrei risparmiare non prentendo l’ufficiale.

    Pino

    1. Ciao Pino,
      io consiglio di usare la shield ufficiale perchè è senza dubbio testata e non penso costi tanto di più di quelle compatibili, con tutti i problemi di incompatibilità che shield differenti possono causare.
      Quella che vedi mi è stata regalata da un utente del blog e non saprei dirti dove è stata acquistata.

      Penso che l’importante sia il componete GPRS con cui sono fatte, questa usa il SIM900.

      Mauro

    • Andrea Lanfranchi il 4 Febbraio 2014 alle 10:00
    • Rispondi

    Buongiorno,

    volevo chiedere se con il GPRS shield è possibile inviare email.

    Grazie
    Andrea

    1. Ciao Andrea,
      non ho mai provato tuttavia essendo molto versatile arduino dovresti poterlo fare.
      Dovresti scriverti tutta la libreria per gestire la comunicazione con il protocolo SMTP.

      Mauro

    • FRANCESCO il 27 Febbraio 2014 alle 14:20
    • Rispondi

    ciao mauro,sono francesco.ho aquistato questa shield gsm sim900,ma non riesco a farla funzionare,caricando questo sketch ,da serial monitor,appare: ready,ok ,e l’invio del messaggio.ma in realta non ricevo nulla…puoi aiutarmi?grazie.

    1. Ciao Francesco,
      come hai letto non puoi aggiungere sketch nei commenti perché vengono rimossi in automatico ed in ogni caso non posso correggere gli sketch che mi postate.
      Da quello che scrivi sembra che la comunicazione funzioni correttamente “ready,ok ,e l’invio del messaggio” dov’è che non ricevi nulla?

    • Xean il 19 Marzo 2014 alle 21:00
    • Rispondi

    Ciao,ho acquistato la shield sim900,funziona tutto perfettamente vorrei solo riuscire a mandare un sms di risposta al numero che invia il messaggio di comando.Qualcuno mi sa aiutare?

    1. Ciao Xean,
      nella libreria di gestione del SIM900 dovresti trovare tutte le specifiche per fare quello che desideri.

    • Zihadul Azam il 25 Maggio 2014 alle 12:43
    • Rispondi

    Grazie 1000 Mauro !!!!!! Funzione Perfettamente 🙂 Complimenti.

      • Zihadul Azam il 25 Maggio 2014 alle 12:46
      • Rispondi

      Ciao Mauro,
      sto usando un GPS Module per tracciare la posizione della macchina..mi risponde con Latitudine e longitudine:) ma adesso voglio sapere anche la velocità attuale della macchina sempre usando GPS module. Mi puoi aiutare per favore ?

      1. Ciao Zihadul,
        mi piacerebbe pubblicare il tuo progetto se ti va.
        Mandami foto, schemi, info, sketch e descrizione del tuo progetto ed io provvedo a pubblicarlo.
        Intento che preparo l’articolo cerco di capire anche come realizzare l’informazione sulla velocità che desideri.

    1. Grazie Zihadul, sono contento.

    • Nicolò il 11 Settembre 2014 alle 12:33
    • Rispondi

    Ciao Mauro!!
    Complimenti per i numerosi tutorial fatti, veramente molto interessanti.

    Come posso far comunicare la shiedl Icomsat1.1 con arduino mega 2560?
    Non riesco a farli comunicare.

    Grazie mille
    Nicolò

      • Nicolò il 11 Settembre 2014 alle 13:17
      • Rispondi

      Risolto! Ho dovuto modificare la libreria..Grazie a questo video tutorial:
      https://www.youtube.com/watch?v=GxgXmOPdPW8
      Appena finisco il progettino di allarme se le interessa glielo mando.

      Grazie mille
      Nicolò

      1. Ottimo Nicolò,
        sei stato bravissimo.
        Se ti va di condividere il tuo progetto io sono solo felice di poterti offrire dello spazio per farlo.
        Inviami, quando lo vorrai, foto,sketch,video e descrizione del progetto al mio indirizzo di posta elettronica.

    • Cosimo il 15 Ottobre 2014 alle 19:49
    • Rispondi

    Ciao Mauro,
    da qualche tempo ho comprato una shield gprs per arduino della elecrow
    http://www.elecrow.com/wiki/index.php?title=GPRS/GSM_Shield_v1.0
    e ho tentato di utilizzarla con il mio arduino mega 2560.
    Seguendo la wiki e un tutorial della scheda
    http://tronixstuff.com/2014/01/08/tutorial-arduino-and-sim900-gsm-modules/
    ho inviato un sms semplicemnte impilando la scheda sull’arduino e copiando il codice dell’esempio.
    Fino a qui tutto bene.
    I problemi nascono quando tento di ricevere (ad esempio un sms)… Sapendo che la scheda comunica via seriale con arduino (e quindi utitlizza la libreria SoftwareSerial) navigando in internet ho letto sul sito di arduino che nella versione mega non tutti i pin possono fungere da RX e quindi ricevere dati.
    A questo punto prima seguendo l’istinto e poi le istruzioni sul sito ufficiale ho provato a collegare l’RX della scheda ai pin RX di arduino (0, 15, 17, 19) e poi al pin 10 (che secondo loro funziona
    http://arduino.cc/en/Reference/softwareSerial )
    Nulla da fare. Hai idea di quale possa essere il problema?
    Grazie mille
    Cosimo

    1. Ciao Cosimo,
      se sei riuscito ad inviare un sms lo avrai di certo fatto con i collegamenti Tx ed Rx per cui io non li cambierei rispetto all’invio per la ricezione.
      Non conosco questa scheda e fare dei test, se proprio non riesci ti consiglio di acquistare il medesimo modello che ho provato io.
      Se usi la SoftSerial non è necessario usare i pin Rx di Arduino, tale libreria serve proprio ad emulare la comunicazione Seriale su pin di tipo differente dal Serial.

      Sulla Mega disponi di 4 porte Serial native, io userei la Serial1 per la GPRS.

        • simone il 23 Ottobre 2015 alle 13:01
        • Rispondi

        Ciao Mauro
        ho da poco comprato un modulo gsm per inviare dei sms utilizzando il mio ARDUINO MEGA.
        trovo molte difficoltà in quanto non trovo un tutorial completo per realizzare il mio progetto.
        io sono in possesso di questi componenti:
        -arduino mega
        -http://www.g……h.com/wiki/index.php/Arduino_GPRS_Shield

        ho scaricato questa libreria GSM_GPRS_IDE100_v309.zip

        mi puoi dare una mano?
        grazie mille
        simone

        1. Ciao Simone,
          purtroppo non ho mai utilizzato la shield che tu possiedi ed il GSM, per esperienza, varia molto da modello a modello.
          Ti consiglio di contattare il fornitore della scheda per chiedere info sulla libreria da utilizzare.

    • Paolo il 18 Dicembre 2014 alle 08:58
    • Rispondi

    Ciao,
    complimenti per l’assistenza che dai a tutti! E’ un po’ di tempo che sto sbattendo la testa sullo stesso problema senza venirne a capo. Ho acquistato una GSM Shield per Arduino, quella dotata di modem M10. Non riesco a farla funzionare bene. Ho provato con varie SIM, l’ultima è della TIM. Quando la uso nel mio cellulare funziona benissimo sia come GSM che come collegamento a internet. Quando la inserisco nello Shield (usando la libreria GSM.h di Arduino) e il server tim ibox.tim.it il collegamento alla rete GSM diventa molto difficile, nel senso che qualche volta va e qualche volta no. Ho paura che la SIM deve essere predisposta in qualche modo, oppure devo mandare qualche comando al modem che non è compreso negli esempi della libreria.
    grazie
    Paolo

    1. Ciao Paolo,
      purtroppo non conosco la shield di cui mi parli, l’unica GPRS che ho provato è quella che ho descritto nei miei articoli.
      Da come lo descrivi sembra un problema di campo, è possibile che tu debba potenziare l’antenna per permetterle di ricevere meglio il segnale?

        • Paolo il 18 Dicembre 2014 alle 12:39
        • Rispondi

        Il campo è buono. Infatti quando lancio il programma di test mi dà un valore 19 su una scala da 0 a 31.
        Nelle prove che hai fatto, hai usato SIM particolari o con attivazioni particolari?
        Paolo

        1. Ciao Paolo,
          no, nessuna impostazione particolare e dello stesso gestore che stai utilizzando tu.

    • Enzo il 22 Febbraio 2015 alle 16:59
    • Rispondi

    Ciao Mauro, ti seguo da molto tempo, in questi giorni sto testando la shield icomsat 1.1 come la tua in foto, ho seguito alla lettera il tu codice pubblicato, ma non vedo i risultati da te postati nell’immagine del serial monitor. Quello che mi esce è il seguente:

    GSM Shield testing.

    status=READY
    TEST
    status=ERROR

    Cosa posso fare?
    Grazie

    1. Ciao Enzo,
      la shield che ho usato io è una iteadstudio con SIM900, quella che mi scrivi tu sembra differente.
      Potrebbero essere differenti i collegamenti ed anche il codice da usare.

    • Enzo il 24 Febbraio 2015 alle 00:01
    • Rispondi

    Grazie Mauro, il problema è che leggendo in rete quasi tutti i cip SIM900 sono compatibili con l’ultima libreria che hai postato tu. Ho eseguito alcuni test dei comandi AT via monitor seriale e il tutto funziona correttamente. Ho aggiornato anche il firmware correttamente e impostato la velocità in 9800 baud. Ma niente di fatto, non invio sms e ne collegamento http.. Ho notato una cosa ho una nano sim wind con abbonamento dati.. e fin’ora non vedo alcun led blu lampeggiare sulla schield gsm/gprs che attesta l’aggancio della rete wind.. Puo essere questo?
    Grazie

    1. Ciao Enzo,
      se riesci a comunicare con il modulo e non invii dati potrebbe essere un problema di campo.
      Se non ricordo male la libreria possiede dei metodi per farti restituire il livello di segnale, prova a leggere la documentazione della libreria.

    • Antonello il 26 Febbraio 2015 alle 11:11
    • Rispondi

    Ciao,
    ho letto il tuo articolo e sorvolo sui complimenti per la chiarezza dell’esposizione.
    Ho poca dimestischezza con arduino (più sul lato web di un progetto di questo tipo che sto facendo con un amico che si occupa di hardware arduino ma entrambi ne sappiamo poco dello scambio tra arduino->web), volevo farti una domanda:
    – l’indirizzo di richiesta httpGET (riga 55) che lunghezza può avere? Mi spiego, posso chiamare un indirizzo lungo tipo /post/2a088be538bd8cc9034b28c5540dc3132a088be538bd8cc9034b28c5540dc3132a088be538bd8cc9034b28c5540dc313/201502222051 oppure c’è un limite massimo?

    Grazie,
    Antonello

    1. Ciao Antonello,
      da quanto ne so io i limiti sono dettati dalla lunghezza delle variabili impostate per accettare l’indirizzo nella libreria che usi.

      • Marco il 2 Dicembre 2015 alle 12:12
      • Rispondi

      Buongirono, se posso rispondere io: il limite di una stringa GET è 255 caratteri, così come definito da standard HTML.

      1. Grazie Marco

    • Pablo il 21 Aprile 2015 alle 19:32
    • Rispondi

    Quando si collega a google la connessione funziona bene, ma quando voglio accedere un’altra pagina non può, ad esempio,(http://www.google.com.mx/imgres?imgurl=https%3A%2F%2Fpbs.twimg.com%2Fprofile_images%2F323237600%2Ftve1_400x400.png&imgrefurl=https%3A%2F%2Ftwitter.com%2Fla1_tve&docid=Ly_Ghvyq0W3FbM&tbnid=3nUGcu7RrBGbxM&w=400&h=400&ei=KIk2VY7XHsaYsAWu6oD4Cg&ved=0CAMQxiAwAQ&iact=c) .

    Quando uso una paguina ha “/” funziona correttamente, ma quando uso un paguina aver “/” carta non recive i dati.

    1. Ciao Pablo,
      se non scrivi quello che fai è complesso.
      In ogni caso per chiamare un link oltre la / e per di più parametrico devi usare una chiamata GET.

      Mauro

    • Davide il 2 Maggio 2015 alle 10:05
    • Rispondi

    Buongiorno Mauro!
    inizio con il ringraziarla per tutte le guide che crea, mi sono sempre utilissime e sono sempre ben spiegate!
    Ho una shield SIM900, avrei una domanda per lei: uso lo sketch riportato nella guida, ma dopo la prima scritta di testing, aspetta un po e mi dice che la scheda non risponde e dà errore. non so cosa fare! la scheda funziona perchè se provo i comandi AT manualmente vanno ma comunque mi si bloccano alla richiesta del GET.
    Ha qualche dritta da darmi? è importante!
    la ringrazio in anticipo
    Davide

    1. Ciao Davide,
      la scheda è la stessa che uso in questo tutorial ?
      A volte potrebbe solo essere un problema di pin Tx ed Rx differenti, verifica eventuali differenze tra lo sketch che utilizzi per l’invio dei comandi AT e lo sketch che desideri utilizzare per la connessione GPRS.
      Inoltre verifica con i comandi AT che la sim venga riconosciuta e che vi sia segnale sufficente.

        • Davide il 4 Maggio 2015 alle 19:06
        • Rispondi

        Buonasera Mauro,
        Grazie per avermi risposto! la scheda è simile, è sempre una SIM900 s2 1040s ma cambia la versione finale. i suoi pin sono 2 e 3, mentre i miei sono 7 e 8. così ho provveduto a cambiarli nella libreria GSM.cpp ma comunque non cambia nulla! con i comandi AT funziona quasi tutto, si ferma quando dopo aver specificato il dominio per il GET e va in timeout.
        il Segnale si è sufficiente ho verificato con AT+CSQ
        Ho bisogno di aiuto la prego, non so più dove appoggiarmi.
        La ringrazio
        Davide

          • Davide il 5 Maggio 2015 alle 07:33
          • Rispondi

          ok, ho risolto questo pezzo modificando ancora il file GSM.cpp con i pin tx e rx.
          Ora, lei sa perchè inserendo nel GET il dominio di Google funziona, mentre inserendo il mio personale con base su altervista dà errore? dà un Connect Fail.
          Grazie

          1. Ciao Davide,
            le motivazioni potrebbero essere diverse io controllerei prima di tutto la raggiungibilità del tuo dominio dalla rete in cui hai connesso l’arduino mediante un Pc e ne verificherei i tempi di risposta e gli header trasferiti.

            Se questo passaggio funziona possiamo fare delle ipotesi successive.

        1. Ciao Davide,
          se le connessioni con i pin non sono identiche controlla di aver selezionato correttamente Tx ed Rx rispetto alla GSM.cpp

            • Davide il 18 Maggio 2015 alle 08:14

            Buongiorno nuovamente Mauro,
            il collegamento tra la shield e la pagina php ora è corretto, però ho ancora un problemino.. come posso inviare delle mie variabili nell’URL del metodo GET? i valori devono essere dati da queste variabili e non scritti da me manualmente.
            sa aiutarmi?
            la ringrazio
            Davide

          1. Ciao Davide,
            il metodo GET prevede che l’invio delle variabili avvenga secondo la notazione variabile=valore&variabile1=valore1 ecc..
            Puoi concatenare la stringa prima di passarla in GET ed al posto di scrivere valore, valore1, ecc.. sostituisci i valori da inviare prelevandoli dalle variabili dello sketch.

    • Big Bedo il 31 Luglio 2015 alle 16:59
    • Rispondi

    Ciao Mauro,
    grazie per i lavori interessanti che pubblichi, sono belli e utili, grazie…

    Sono un altro disperato (da quel che sto capendo, siamo in diversi in italia) che stanno sbattendo la testa con questi moduli per la connessione ad internet di Arduino: io ne ho ben 4 e un altro mi deve ancora arrivare, di vario tipo, alcuni shield e altri minimali da connettere in seriale, tutti con i chip della SimCom o 900 o 900A (solo dual band ma si trovano tutorial per flashare firmware del 900 che lo trasformano in quadband).
    In breve, ne ho provate di tutte, varie sim di vari operatori, tutte senza pin, il tutto alimentato bene con corrente sufficiente, etc… ma non riesco a connettermi in nessun modo! 🙁
    Per questo ti chiedo, hai avuto modo ultimamente di riprovare la tua shield? Non vorrei che, da non molto oppure con le ultime SIM, avessero cambiato qualcosa sulle reti GSM/GPRS italiane e questo tipo di schedine non funzionino più (a me, nella maggior parte dei casi, non agganciano la rete e se chiamo io il numero della sim inserita nel modulo, l’operatore mi dice che il numero è irraggiungibile).
    Se puoi fare questo piccolo favore e riprovare se ad oggi ti funziona ancora tutto, te ne sarei grato…

    Grazie ancora…

    1. Ciao Big Bedo,
      da non molto ho riprovato un modulo simile al mio per un progetto che presenterò alla prossima Maker Faire a Roma in collaborazione con altri appassionati.
      Non saprei dirti se il problema sia nella SIM troppo moderna xche io ho sempre utilizzato la solita sim ed anche le altre che ho testato sono sim datate 🙂
      Ho letto in qualche forum che devono essere sim a 6 contatti per essere compatibili con il SIM900 tuttavia non saprei come riconoscerle.

    • filippo il 12 Ottobre 2015 alle 09:48
    • Rispondi

    Buongiorno Mauro, ho un problema con la mia SIMCOM SIM900 di Geeetech, collegata ad Arduino Mega. Quando ricevo un sms, il corpo del messaggio non mi arriva mai completo. Il codice è molto semplice: non faccio altro che prendere i char in arrivo sulla serial1 e stamparli sul terminale. La prima stringa che ricevo che contiene il numero di telefono e la data viene ricevuta correttamente. Il corpo del messaggio invece viene troncato. Hai mai avuto problemi di questo tipo o sai quale potrebbe essere il problema?
    Il messaggio che invio è di questo tipo:

    ADD,Mario,Rossi,Mario,1344456,0678959111,S,01102016,01102017;

    Quello che mi ritrovo in uscita dalla serial1 è:

    +CMT: “+39320XXXXXXX”,””,”15/10/10,22:45:27+08″

    ADD,Mario,Rossi,Ma56 (ma potrebbe essere diverso).

    Grazie

    1. Ciao Filippo,
      così senza avere la shield non saprei dirti a volo il motivo dell’errore, mi viene in mente che possa trattarsi di un buffer troppo esiguo.
      Controlla la capacità delle variabili.

        • filippo il 13 Ottobre 2015 alle 09:13
        • Rispondi

        No, il buffer è più che sufficiente. Piuttosto mi sembra un problema di seriale. A volte la stringa contiene anche gli ultimi caratteri inviati, tipo ADD,Mario,Rossi,Ma,11,S,01102016,01102017;
        La cosa è molto strana. Sembra perdersi qualcosa in mezzo.

        1. Ciao Filippo,
          verifica la corretta velocità di comunicazione ( baudrate ).

            • filippo il 13 Ottobre 2015 alle 10:44

            anche quella è corretta, settata a 19600bps sia sulla shield che sul Mega. Ho provato ad abbassarla a 9600, ma non è cambiato nulla.

          1. Ciao Filippo,
            mi ero orientato su questi problemi perché mi ha detto ( nel tuo primo commento ) che il corpo del messaggio non era “mai” completo.
            Se l’errore è intermittente potrebbe dipendere dalla libreria che usi, prova a verificare con il produttore se ha una libreria adatta e testata per la sua scheda.

            • filippo il 13 Ottobre 2015 alle 15:00

            Non uso una libreria, ma solo lettura / scrittura su seriale serial1. Il produttore Geeetech non ha previsto una libreria specifica. Inoltre ho verificato con l’applet AT Command Tester che i messaggi vengono ricevuti e gestiti correttamente dalla shield GSM. Ho usato due Arduino Mega, il comportamento è lo stesso con entrambi. Ho provato ad inserire una sleep(2) nel ciclo di lettura dei dati da seriale, così come consigliato da alcuni sui forum, ma nulla è cambiato. Dove sbatto???

          2. Ciao Filippo,
            quindi usi comadi AT ?

    • Vincenzo il 23 Ottobre 2015 alle 15:21
    • Rispondi

    Ciao Mauro

    Mi chiedevo se esistesse una shield, simile a quella col modulo sim900, che supportasse la connessione dati (UMTS/3G/4G) anziché il vecchio GPRS.

    1. Ciao Vincenzo,
      non mi sono mai informato sulla possibilità del supporto UMTS da SIM900.
      Hai già consultato il datasheet del SIM900 per verificare se sia adatto al tipo di connessione che desideri?

    • simone il 27 Ottobre 2015 alle 08:52
    • Rispondi

    Ciao Mauro
    io ho Arduino mega e una scheda una scheda di questo link “http://www.g…….h.com/wiki/index.php/Arduino_GPRS_Shield”
    Ho fatto molti tentativi ma senza ottenere risultati.
    tu mi puoi aiutare?
    simone

    1. Ciao Simone,
      ti ho già risposto al medesimo quesito ieri.
      Prova a seguire quanto suggerito prima di inserire nuovamente il commento.

        • simone il 27 Ottobre 2015 alle 19:09
        • Rispondi

        Ti chiedo scusa non avevo visto la tua risposta.
        simone

    • Marco il 2 Dicembre 2015 alle 11:58
    • Rispondi

    Buongiorno Mauro,

    prima cosa compliemtni per quanto pubblicato che è veramente interessante eben fatto. Io sto utilizzado la libreria sopra per effettuare due tipi di operazioni: invio dati ad un web service tramite un httpPOST che funzona correttamente e ricezione dei dati da un webservice che però non riesco a leggere.

    Partendo dall’esempio sopra, vorrei scrivere una fuzione a parte che venga richamata dalla loop ogni 10 minuti che legga i dati e poi ne esegua il parsing. Il parsing ce l’ho, ma non riesco a leggere il msg di risposta, che vorrei stampare su seriale (per il debug). Come posso spostare serialswread e serialhwread dentro un ciclo nella fuzione, toglendolo dalla loop ?

    Grazie x l’aiuto e compliemtni di nuovo!

    Marco

    1. Ciao Marco,
      dovrebbe esserti sufficiente definire la funzione che desideri e spostare le chiamate alla serialswread ed alla serialhwread all’inetrno della funzione che crei.
      Tuttavia non penso ti aiuti a raggiungere il tuo scopo: “fuzione a parte che venga richamata dalla loop ogni 10 minuti” puoi definire il conteggio dei minuti nella loop() senza far proliferare funzioni.

        • Marco il 3 Dicembre 2015 alle 11:01
        • Rispondi

        Grazie per la risposta, Mauro.
        Per la precisione, quello che non so fare, è come far eseguire serialswread e serialhwread in un ciclo per fare sì che scrivano i dati. Nel senso: dentro la mia funzione, dovrei mettere

        While(…){
        serialswread();
        serialswread ();
        }

        altrimenti non scrive nulla.

        Come definisco il while x eseguire le due funzioni ed uscire quando finisce il buffer ?

        Grazie di nuovo

        1. Ciao Marco,
          il ciclo while si scrive come hai fatto tu a patto che la condizione (…) sia vera.
          La seconda parte non l’ho capita.

            • Marco il 4 Dicembre 2015 alle 17:30

            Ti chiedevo quale fosse la condizione da utilizzare per ciclare le due funzione ed ottenere la scrittura del buffer

          1. Ciao Marco,
            per eseguire cicli annidati puoi usare sia il for sia il while o altri algoritmi, non so se è quello che vuoi fare tu.
            In ogni caso ti consiglio la lettura del reference arduino.cc ed eventualmente la valutazione sul tipo di strada che stai intraprendendo che potrebbe non essere quella migliore per lo scopo.

            • Marco il 11 Dicembre 2015 alle 09:03

            Grazie dell’aiuto, Mauro.

    • Nicolò il 2 Dicembre 2015 alle 21:23
    • Rispondi

    Ciao Mauro,
    innanzitutto complimenti per il sito e per il tutorial.
    Senti io ho scaricato la libreria ma non funziona, cioè proprio all’inizio non si collega alla scheda. Non riesco a capire il motivo anche perché ho copiato il codice per le richieste HTTP di questo sito (https://www………..com/documentation/tutorials/gprs-gsm-quadband-module-arduino-raspberry-pi-tutorial-sim-900/) e funziona…non vorrei che fosse un problema di pin TX e RX perché non ho capito se i pin che intende lui (cioè quelli dichiarati nelle define di GSM.cpp, cioè 2 e 3) siano quelli utilizzati da Software Serial o dalla scheda SIM900 (che è quella che ho io). Spero di essermi spiegato bene, grazie mille.

    Nicolò

    1. Ciao Nicolò,
      non so cosa tu stia facendo, tuttavia penso tu sia confuso su cosa sia il SIM900 e cosa sia la SoftwareSerial.
      Il primo è un modem GSP/GPRS, la seconda una componente software.

        • Nicolò il 19 Dicembre 2015 alle 20:05
        • Rispondi

        nono io ho capito la differenza ma ho paura che l’impostazione dei pin della libreria da te citata sia sbagliata per il modulo che ho comprato io (su aliexpress). Infatti dal sito che ti ho detto nel post iniziale ho preso un codice che funziona ma che invia i dati troppo lentamente non essendo sempre affidabile. Appena avvio il programma di test della libreria consigliata da te ho il messaggio DB: NO RESPONSE. Tu hai qualche idea di come possa risolvere il problema?

        1. Ciao Nicolò,
          se pensi sia solo un problema di pin puoi modificarli nella libreria che desideri utilizzare prendendo i riferimenti dalla libreria originale.
          Tuttavia potrebbe non essere così semplice se le due librerie si comportano in modo molto differente rischi di dover riscrivere intere parti della stessa per adattarla.

    • francesco il 4 Gennaio 2016 alle 21:02
    • Rispondi

    buona sera io vorrei realizzare un localizzatore gps io possiedo un arduino uno e un gps so che devo comprare un altra scheda e ho visto questa qui SIM800H GPRS Shield volevo chiedere se va bene per fare la connessione ad internet, (o mi serve per forza la modulo SIM900) e così la geo localizzazione perchè io volevo visualizzare la geo localizzazione tramite cellulare. grazie

    1. Ciao Francesco,
      non ho compreso tu cosa vuoi realizzare.

        • francesco il 5 Gennaio 2016 alle 21:21
        • Rispondi

        Io vorrei realizzare un localizzatore gps con arduino uno, che tramite la mappa di google del cellulare posso vedere dove si trova il dispositivo in tempo reale. io gia possiedo un arduino uno e un gps ed ho capito che per far comunicare arduino e il cellulare mi serve un altra scheda ed ho visto che la scheda è la SIM900 come in questo progetto però volevo chiedere se la SIM800H GPRS Shield QUESTO E’ IL SITO DOVE HO VISTO LA SCHEDA (http://www.robotics-3d.com/component/virtuemart/Arduino/arduino-shield/communication-shield/3892-sim800h-gprs-shield) andava comunque bene per il mio progetto. Cioè io sul cellulare vorrei vedere il puntino del gps di arduino spero di essere stato chiaro grazie ancora.

        1. Ciao Francesco,
          non ho mai provato questa scheda per cui le informazioni che possiedo sono le medesime che avrai già letto sulla scheda.
          Direi che dalle caratteristiche che leggo sembra adatta anche se non comprendo il motivo per cui hai deciso di usare questa shield invece di un classico SIM900 già testato da molteplici siti.

            • francesco il 9 Gennaio 2016 alle 01:45

            mi piacerebbe usare la SIM900 ma ho visto i costi che si aggirano sui 65 € e il mio budget non me lo consente, il progetto che sto realizzando è per l’esame di stato delle superiori grazie delle risposte. 🙂

          1. Ciao Francesco,
            comprendo, prova allora con la scheda che hai individuato, verifica prima che abbia le caratteristiche che ti servono.

    • francesco il 7 Gennaio 2016 alle 18:10
    • Rispondi

    mi piacerebbe usare la SIM900 ma ho visto i costi che si aggirano sui 65 € e il mio budget non me lo consente, il progetto che sto realizzando è per l’esame di stato delle superiori grazie delle risposte. 🙂

    • francesco il 11 Gennaio 2016 alle 18:09
    • Rispondi

    buona sera mauro alfieri grazie delle tue risposte, ho trovato questa sim900 è la stessa che tu hai usato per il tuo progetto grazie
    [link rimosso perché di sito non conforme]

    1. Ciao Francesco,
      io ho provato solo la scheda che vedi le altre potrebbero essere tutte valide ma devi controllare che l produttore sia in grado di fornirti assistenza e documentazione adeguata a completare il progetto se dovessi riscontrare errori.
      Se non lo fa io eviterei l’acquisto e mi rivolgerei ad un rivenditore che possiede tali caratteristiche.
      Non saresti il primo a cercare di risparmiare e trovarsi con una scheda non utilizzabile dovendone acquistare poi una seconda dotata di documentazione.

        • francesco il 12 Gennaio 2016 alle 19:06
        • Rispondi

        ok grazie quindi il sito che ti ho fatto vedere nel ultimo post non è la stessa scheda che hai usato tu? grazie

        1. Ciao Francesco,
          non lo so perché i link non idonei sono eliminati da una regola del blog.
          Io di certo non ho acquistato da quel sito, acquisto tutto da robotics-3d.com in italia ed anche in questo caso verifico sempre la documentazione prima di acquistare.

            • francesco il 12 Gennaio 2016 alle 22:54

            ok grazie se quando hai tempo anche sulla pagina di facebook ti avevo inviato sul messaggio privato quel link grazie delle tue risposte 🙂

          1. Ciao Francsco,
            spero di essere chiaro definitivamente: se non ho provato la scheda non posso darti altro consiglio che non sia quello di verificare la documentazione che rilascia il produttore prima di acquistare.

    • francesco il 13 Gennaio 2016 alle 19:52
    • Rispondi

    ok grazie di tutto 😀 😀

    • Emanuele il 9 Febbraio 2016 alle 21:29
    • Rispondi

    Salve a tutti, scusate, ma ho un problema con questo shield GPRS della SimCom , non riesco a connetterlo ad arduino yun. Ho provato varie configurazione, ho anche seguito l’articolo su come configurare uno shield GSM con arduino yun, lenardo ecc ecc, ho provato a disabilitare il bridge, a usare pin diversi dal 2,3 ma niente, non riesco a instaurare la comunicazione seriale, sapreste indicarmi cosa sbaglio ?

    Grazie per l’aiuto
    Ema

    1. Ciao Emanuele,
      la shield mostrata in questo articolo non è della SimCom a meno che tu non ti riferisca solo al SIM900 il modem.
      Ogni shield, da mia esperienza, è differente e l’unica cosa saggia è utilizzare le librerie e gli esempi che rilascia il produttore per farla funzionare bene.

        • Emanuele il 10 Febbraio 2016 alle 21:35
        • Rispondi

        Ciao Mauro,
        innanzi tutto grazie per la pronta risposta, si scusa mi riferivo al solo modem sim900, la scheda è identica alla tua, mi ci sono intestardito e alla fine sono riuscito a instaurare una comunicazione seriale tra arduino e shield gsm.
        In pratica ho dovuto utilizare pin differenti per lo yun, nel mio caso ho usato 10 e 11 su yun e fatto un ponticello verso 2 e 3 sullo shield, una volta settati i rispettivi valori nella libreria sono riuscito a comunicare correttamente.

        Grazie di tutto, e complimenti per il bel lavoro che stai facedo , io sono alle prime armi ma è grazie a siti come questo che si impara 🙂

        Ciao

        1. Bravissimo Emanuele,
          indagherò su come sia possibile che i pin 2 e 3 non riescano, nella Yun/Leonardo, a lavorare con la SoftwareSerial per comunicare con la GPSR/GSM shield.

    • alessandro il 16 Febbraio 2016 alle 21:28
    • Rispondi

    ciao mauro!
    grazie ai tuoi consigli, sono riuscito a leggere dei sensori per una stazione meteo e visualizzarli su un lcd.
    ora sto studiando i tuoi tutorial per la scrittura su sd e la trasmissione gsm. la data loger shield è arrivata oggi ed ho già ordinato la shield sim900 di questo tutorial, per la trasmissione dati… ormai mi hai trasmesso il virus dell’arduinite!
    volevo chiederti un parere, per capire se sto andando nella direzione giusta e per capire come impostare lo sketch. la mia idea sarebbe quella di registrare una stringa di testo con i valori registrati ed ovviamente l’ora di registrazione, ogni tot minuti (1, 2, 5… da decidere) e ogni tot ore (meglio ogni ora, ma devo vedere i consumi di corrente, dato che sarà alimentata a batteria, con pannello solare per la ricarica) trasmettere il file di testo ad un database mysql (devo ancora capire come fare!), per la visualizzazione dei dati e la creazione dei grafici da una qualsiasi postazione internet.
    vorrei capire se questo approccio è corretto, ovvero se è fattibile scrivere su un file una riga ogni tot minuti e poi ad un certo punto “chiudere” il file e spedirlo via gsm ad un database.
    inoltre mi farebbe comodo avere dei riferimenti da cui studiare!
    grazie in anticipo e ciao,
    ale

    1. Ciao Alessandro,
      bravo .. ci stai davvero mettendo molto impegno e questo ti darà buoni risultati.
      La strada è una delle possibili e in linea generale mi sembra corretta, le difficoltà che potresti incontrare riguardano l’eventuale buffer del file che ogni ora ha 60 linee, non so di che dimensione, e la memoria di arduino non è infinita per cui ti consiglio di processarle linea per linea.
      Come riferimento cerca nel blog gli articoli dedicati ai datalogger e alle scritture su SD.

    • francesco il 8 Marzo 2016 alle 11:52
    • Rispondi

    Buon giorno io mi sono scaricato le librerie GSM GPRS GPS Shield, SIM908 & SIM900, IDE 1.00, Version 3.04, però ho visto che presentato degli errori che non riesco a risolvere adesso mi da un errore sul file HWSerial.cpp con questo testo: error: ‘prog_char’ does not name a type const prog_char *p = (const prog_char *)ifsh; non so come risolverlo grazie

    1. Ciao Francesco,
      stai usando la bersione 1.0 dell’IDE? Prova ad aggiornarla siamo alla 1.6.7

    • francesco il 13 Marzo 2016 alle 13:52
    • Rispondi

    ciao poi ci sono riuscito a risolvere cambiando in char e adesso funziona il programma l’ho inserito in arduino ma escono scritte strane per curiosità dove si dovrebbe aggiornare la versione? grazie

    1. Ciao Francesco,
      intendi quella dell’IDE ? a volte mi è difficile capire cosa scrivete senza maggiori dettagli.
      Se la risposta è “SI” allora scarica dal sito ufficiale arduino.cc la versione corrente dell’IDE.

    • francesco il 14 Marzo 2016 alle 23:12
    • Rispondi

    ok grazie sulle IDE il programma non mi da più errori quando l’ho compilato, quando lo si carica su arduino cosa dovrebbe accadere di preciso? grazie

    1. Ciao Francesco,
      quello che è scritto nell’articolo e nel codice, se non sai cosa accade leggi bene le spiegazioni dello sketch.

    • francesco il 15 Marzo 2016 alle 12:47
    • Rispondi

    si ho letto e visto l’immagine ma non mi compare nulla di simile mi crea scritte senza un senso e non capisco il perchè grazie

    1. Ciao Francesco,
      verifica nel codice per capire se ci sono differenze tra la tua versione di scheda e quella riportata nell’articolo.

    • francesco il 17 Marzo 2016 alle 22:26
    • Rispondi

    sera dove si vede il codice ?

    1. Ciao Francesco,
      quale codice?

    • francesco il 25 Marzo 2016 alle 22:19
    • Rispondi

    buona sera tu dici il codice arduino giusto? io ho fatto il copia incolla

    1. Ciao Francesco,
      prdonami ma è il caso di fermarci un attimo.
      Tu hai chiesto: “dove si vede il codice? ” ed io ti ho solo chiesto quale codice.
      Se vuoi che ti aiuti devi essere più esplicito e chiaro nelle richieste.

    • GiovanniS il 21 Giugno 2016 alle 14:45
    • Rispondi

    Ciao Mauro,
    che tipo di piano tariffario hai attivato per le connessioni GPRS? Con vodafone riesco a connettermi ma avendo l’offerta giga start mi fanno pagare questo tipo di traffico 6 euro al giorno..(con APN wap.omnitel.it). … con la wind non riesco invece a connettermi (APN internet.wind).. Qualche consiglio??
    Grazie

    1. Ciao Giovanni,
      quando ho eseguito i miei test ho usato una sim già in mio possesso con un piano tariffario in abbonamento mensile con altro operatore.
      Ti chiedo la cortesia di evitare nei commenti nomi di società a cui non vogliamo far pubblicità occulta 🙂

    • Giuseppe il 7 Luglio 2016 alle 11:14
    • Rispondi

    Ciao Mauro, seguo molte delle tue guide e ti faccio innanzitutto i complimenti per l’aiuto che fornisci.

    Vorrei chiederti aiuto per una questione spinosa da cui non riesco a districarmi:
    Usando un arduino UNO ed una shield sim900 sono riuscito a inviare una mail usando i comandi AT riportati in questo manuale: http://simcom.ee/documents/SIM900/SIM900_Email_AT%20Command%20Manual_V1.04.pdf

    Tuttavia non riesco ad allegare un file txt stipato su di una SD a questa email nonostante i comandi AT vi siano, fondamentalmente perché non c’è modo di definire il percorso da cui prendere il file.

    Mi potresti dare una mano spiegandomi come usare tali comandi?
    (parliamo di AT+SMTPFILE, AT+SMTPFT ecc ecc)

    Grazie 🙂

    1. Ciao Giuseppe,
      non ho mai provato l’invio di email mediante GPRS e comandi AT.
      Hai già verificato se esiste una libreria adatta a fare quello che ti occorre?

        • Giuseppe il 8 Luglio 2016 alle 16:37
        • Rispondi

        Purtroppo non sono riuscito a trovare una libreria già fatta che gestisca email con allegati.
        E per l’applicazione che devo realizzare è l’unica opzione che ho.
        Per caso conosci tu qualche altra soluzione?

        In ogni caso la problematica è che non riesco a passare in memoria della shield sim900 il file che ho sulla SD della shield ethernet ed usare quindi il relativo comando AT del SIM900 come da esempio nel file che ti ho linkato prima (c’è proprio un esempio di sequenza di comandi AT da dare per inviare una mail con allegato)

        1. Ciao Giuseppe,
          dovrei mettermi a studiare una soluzione non conoscendola già.
          Se riesco nei prossimi mesi cerco di raccogliere un po di info in merito e scrivere un articolo, non prometto nulla.

    • Daniele il 13 Novembre 2016 alle 16:39
    • Rispondi

    Ciao Mauro, complimenti per il tuo lavoro.
    Ho visto che è possibile collegare l’arduino Yun ad un modem 3g tramite USB.
    Mi chiedevo se è possibile creare una connessione internet(nell’interfaccia network)che riconoscesse il modulo SIM800L??
    GRAZIE

    1. Ciao Daniele,
      non ho compreso cosa vuoi realizzare.
      Puoi provare a spiegarmelo meglio?

    • giovanni il 21 Novembre 2016 alle 00:26
    • Rispondi

    ciao Mauro, complimenti e grazie per i tuoi articoli.
    ho incontrato qualche intoppo, mi spiego:
    io possiedo un modulo SIM800L, non è uno shield da innestare sopra arduino ma una board a parte.
    ho inizialmente tentato la compilazione ma ho riscontrato diversi errori.
    l’ide di arduino è la ver 1.6.9 e le lib le ultime disponibili ai link in articolo.
    di seguito ciò che risulta :

    /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp: In constructor ‘HWSerial::HWSerial()’:
    /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp:4:4: error: ‘Serial1’ was not declared in this scope
    Serial1.begin(9600);

    ^
    /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp: In member function ‘void HWSerial::end()’:
    /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp:12:3: error: ‘Serial1’ was not declared in this scope
    Serial1.end();

    ^
    /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp: In member function ‘virtual void HWSerial::begin(long int)’:
    /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp:24:3: error: ‘Serial1’ was not declared in this scope
    Serial1.begin(baud_rate);

    ^
    /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp: In member function ‘int HWSerial::peek()’:
    /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp:28:10: error: ‘Serial1’ was not declared in this scope
    return Serial1.peek();

    ^
    /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp: In member function ‘virtual size_t HWSerial::write(uint8_t)’:
    /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp:32:10: error: ‘Serial1’ was not declared in this scope
    return Serial1.write(byte);

    ^
    /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp: In member function ‘virtual int HWSerial::read()’:
    /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp:36:10: error: ‘Serial1’ was not declared in this scope
    return Serial1.read();

    ^
    /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp: In member function ‘virtual int HWSerial::available()’:
    /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp:40:10: error: ‘Serial1’ was not declared in this scope
    return Serial1.available();

    ^
    /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp: In member function ‘virtual void HWSerial::flush()’:
    /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp:44:3: error: ‘Serial1’ was not declared in this scope
    Serial1.flush();

    ^
    /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp: In member function ‘size_t HWSerial::print(const __FlashStringHelper*)’:
    /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp:54:9: error: ‘prog_char’ does not name a type
    const prog_char *p = (const prog_char *)ifsh;

    ^
    In file included from /home/giovanni/.arduino15/packages/arduino/hardware/avr/1.6.14/cores/arduino/Arduino.h:28:0,
    from /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.h:6,
    from /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp:1:
    /home/pippo/test/arduino/libraries/GSMSHIELD_TDG/HWSerial.cpp:57:37: error: ‘p’ was not declared in this scope
    unsigned char c = pgm_read_byte(p++);

    ^
    Più di una libreria trovata per “SIM900.h”
    Usata: /home/pippo/test/arduino/libraries/GSMSHIELD_TDG
    Non usata: /home/pippo/test/arduino/libraries/GSMSHIELD
    Non usata: /home/pippo/test/arduino/libraries/GSMSHIELD
    Non usata: /home/pippo/test/arduino/libraries/GSMSHIELD
    Non usata: /home/pippo/test/arduino/libraries/GSMSHIELD
    exit status 1
    Errore durante la compilazione per la scheda Arduino/Genuino Uno.

    cosa sto sbagliando ?

    1. Ciao Giovanni,
      premesso che questa libreria funziona per un SIM900 e non un SIM800 dovrai probabilmente usare una libreria adatta.
      L’errore che leggo riguarda un “Serial1” ( vedi prime linee ) che su arduino uno non esistono. Sei certo di aver selezionato la scheda corretta?

    • Alessandro il 24 Novembre 2016 alle 16:09
    • Rispondi

    ciao mauro, grazie per i tuoi tutorial!
    vorrei chiederti se puoi consigliarmi uno sketch da provare, per salvare i valori registrati da un sensore in un database, visualizzabili tramite pagina web.
    inoltre, mi piacerebbe inviare da arduino, tramite la shield sim900, un sms ogni tot tempo, oppure al raggiungimento di un valore specifico. una specie di “allarme”, insomma.
    non sono molto pratico di protocolli di trasmissione web, ma l’esempio di questo tutorial mi sembra che non faccia quello che serve a me.
    grazie!

    1. Ciao Alessandro,
      ti consiglio di leggere un po di articoli dedicati a questo argomento sul blog per comprendere meglio come trasmettere i dati, siccome non lo specifichi non saprei come hai pensato di farlo o come ti occorre farlo.
      In merito al SIM900 questo articolo non parla di invio SMS, mi sembra di aver trattato l’argomento in qualche altro articolo.

    • Filip il 23 Marzo 2017 alle 23:16
    • Rispondi

    ciao Mauro, seguo i tuoi tutorial da un po’, fantastici, mi sono stati utili innumerevoli volte.
    ho un problema con un gprs shield sim900 che potresti aiutarmi a capire:
    quando premo il pulsante del power per accenderlo il led status si accende, quello netlight inizia a lampeggiare, ma poi all’improvviso si spengono entrambi.
    sembra che vada in blocco appena aggancia la rete gsm, se stacco l’antenna continua a cercare la rete senza spegnersi.
    spero che la tua esperienza mi sia di nuovo d’aiuto
    grazie

    1. Ciao Filip,
      so che con alcune SIM moderne ci sono dei problemi con questi tipi di modem.
      Dovresti provare con altre SIM o verificare se riesci ad accedere in debug al modem per ricavare più info durante la fase di check della rete.

    • manuel il 10 Agosto 2017 alle 07:48
    • Rispondi

    Buongiorno . Sono curioso di sapere come è possibile realizzare un circuito tramite arduino che mi permette di comandare la luce sia manualmente(con un pulsante), che tramite controllo remoto utilizzando una sim. Vorrei inoltre, sapere quale è lo stato della luce quando io non sono a casa e poi di poterla comandare sia quando io sono a casa e sia quando io non ci sono, e se è possibile applicando questo sistema a più luci.
    Grazie mille 🙂

    1. Ciao Manuel,
      puoi trovare molte delle risposte in questo blog leggendo ed imparando da tutti gli sketch che ho pubblicato come fare.
      Esistono molti modi per farlo e tantissime tecniche e schemi.
      Ad esempio potrei consigliarti le schede Lemontech.cc ( http://www.lemontech.cc/lemontech-bluerelay-shield-per-arduino.html ) che ti permettono facilmente di gestire due luci da App via Bluetooth a cui puoi aggiungere una shield GPRS per comandare le luci quando sei fuori dalla portata bluetooth.

    • Federico il 4 Ottobre 2017 alle 19:49
    • Rispondi

    Salve Mauro,
    espongo rapidamente il mio problema. Dove utilizzerò Arduino con la shield sim900 non è dove ci sarà il computer che deve ricevere i dati. Dovrei inviare una stringa seriale al pc che crederà di avere Arduino collegata grazie ad un software che crea delle VSP (Virtual Serial Port). E’ possibile? Dovrebbe essere una connessione TCP/IP se non ho capito male.
    Grazie

    1. Ciao Federico,
      esistono tanti modi di risolvere il problema ed ognuno ha dei pro e dei contro.
      Prova a vedificare tecnologie come XBee o Bluetooth giusto per citare le prime due che non richiedono troppo impegno.

    • Antonello il 21 Marzo 2018 alle 10:16
    • Rispondi

    Ciao Massimo puoi aiutarmi ?
    sto collaudando la sim900 ed in generale funziona bene ma ho problemi con l’invio dei dati ad una pagina php con la funzione inet htpGET , non riesco a fargli passare dei valori che poi verranno caricati sul database, la pagina php funziona perfettamente e se digito sulla barra degli indirizzi tramite i il metodo get (pincopallino.altervista.org/arduino.php?nome=mario&Localita=parigi)’ tutto ok.
    ma sostituendo la riga
    numdata=inet.httpGET(“www.google.com”, 80, “/”, msg, 50);
    che funziona perfettamente
    con
    numdata=inet.httpGET(“www.pincopallino.altervista.org”, 80, /arduino.php?nome=mario&Localita=parigi”, msg, 50);
    non funziona….

    1. Ciao Antonello,
      premesso che la riga che hai incollato nei commenti presenta due errori, penso di battitura, manca un ” prima della parte in GET ed hai aggiunto un www. prima dell’URL rispetto a quello che usi sul browser, puoi controllare lato server cosa arriva nei log per capire se la chiamata arriva a buon fine e se ci siano errori di codifica o similia.

        • Antonello il 22 Marzo 2018 alle 17:51
        • Rispondi

        ok Mauro grazie dell ‘interessamento
        inet.httpGET(“www.pincopallino.altervista.org”, 80, “/arduino.php?Valore=2000&Localita=parigi”, msg, 50);
        questa la risposta :

        GSM Shield testing.

        status=READY
        TEST
        status=ATTACHED

        10.223.144.150

        Number of data received:
        0

        Data received:

        HTTP/1.1 400 Bad Request
        Date: Thu, 22 Mar 2018 16:35:07 GMT
        Server: Apache
        Content-Length: 268
        Connection: close
        Content-Type: text/html; charset=iso-8859-1

        Bad requestAnomalia nella richiesta al sito, se il problema persiste cancella i cookie, maggiori informazioni
        CLOSED

        se digito dalla barra degli indirizzi :
        http://www.pincopallino.altervista.org/arduino.php?nome=mario&Localita=parigi
        tutto ok

        1. Ciao Antonello, devi verificare lato server cosa accade in quel momento.
          Dal messaggio che hai postato leggi chiaramente: “Number of data received: 0” vuol dire che non ti ha risposto nulla.

    • Antonello il 26 Marzo 2018 alle 15:41
    • Rispondi

    Grazie Mauro…ma siccome non ne venivo a capo…alla fine ho risolto l ‘invio dei dati tramite un altro listato che usa il metodo ” sendGSM( “AT+HTTPPARA…link.php……..)i dati vengono inviati a cadenza regolare sul database.. il modulo sim900 dpo averlo testato su scheda arduino è stato interfacciato con plc “controllino”..

    1. Ottimo Antonello

    • adriano il 17 Agosto 2018 alle 16:19
    • Rispondi

    Ciao Mauro Alfieri,
    forse quello che ti chiedo è poco pertinente perché tu tratti Arduino e le sue librerie mentre io uso sempre schede arduino ma le programmo in basic con un vecchio compilatore che non è più usato da nessuno.
    So che tu conosci bene il Sim 800l e per questo ti chiedo se conosci qualche link o trattato o pagina di riviste o qualcosa in cui possa trovare esempi in cui, per inviare EMAIL si usino solo i comandi AT perché per me è l’unico modo per riuscire a controllare il modulo (come ho già fatto per la ricezione e invio degli Sms). Tu mi dirai di studiare il C lo so, ma ho cambiato così tante volte (67 anni) che le salite mi stancano ancor prima della prima pedalata . Ti ringrazio per qualche buono spunto che ho già preso dai tuoi articoli e per quello che riuscirai a fare circa questa mia richiesta.

    Adriano

    1. Ciao Adriano,
      l’invio email da un modulo SIM800 non l’ho mai fatto neppure con Arduino.
      Se la libreria che uso per arduino avesse questa possibilità potrebbe essere una buona base di partenza.
      Forse azzardo, hai provato a leggere come funziona il protocollo smtp da telnet, ci sono molti articoli su linux, e con i comandi AT non hai da far altro che usare i medesimi comandi .. non dico sia semplice ma forse è la strada migliore se non trovi librerie scritte in BASIC.

    • ANDREAS il 14 Gennaio 2019 alle 23:03
    • Rispondi

    salve
    ho arduino uno e vorrei fare andare home automation
    [[ link rimosso in automatico ]]
    1 uso sim800l che mi sempra non dovrebbe dare dei problemi
    2 carico il skech senza a connettere sim 800l pin su 0 e1 rx e tx su arduino
    stacco la usb da arduino rimetto i pin gps su arduino 0 e1 ma non funziona
    Ho provato mettere anche un nuovo chip atmega328p ma niente.
    se controllo le due uscite tx e rx con oscilloscopio al momento al invio di un sms vede che il segnale ce’
    Mi daresti una mano per capire cosa deve fare oppure cambiare.
    Spero tanto che mi rispondi
    grazie tante

    1. Ciao Andreas,
      ti chiedo la cortesia, come scritto nei miei articoli, di leggere e rispettare il regolamento non inserendo link o parti vietate nei commenti.
      Purtroppo non conosco home automation come progetto e posso solo ipotizzare si tratti di una inversione dei collegamenti tra Tx ed RX come la hai descritta.

      Potresti fare debug usando una seriale virtuale su arduino a cui connettere il SIM800, trovi dei tutorial sia sul blog sia online.

      In ultima analisi puoi chiedere supporto al sito del progetto che avrà certamente più chiaro come aiutarti.

    • Gianluca il 11 Maggio 2020 alle 16:03
    • Rispondi

    Ciao Mauro
    In primo luogo voglio farti i complimenti per il lavoro che hai svolto e che svolgi sul tuo blog; in secondo luogo vorrei porti una domanda sul modulo GPRS Sim900; ne ho uno anche io che utilizzo con un Arduino uno Rev3.
    La mia domanda è questa, è possibile utilizzare la shield come web server e farle pubblicare una semplicissima pagina in HTML, come si fa con la Ethernet shield?
    Ti dico che:
    1) mi sono fatto dare dal mio operatore telefonico un IP pubblico
    2) riesco tramite il browser a connettermi all’indirizzo IP
    3) sul serial monitor leggo :
    STATE: SERVER LISTENING
    ATT: CONNECT OK
    SERVER OK
    4) mi collego con il mio browser all’indirizzo IP ottenuto, e sul serial monitor leggo:
    ATT: CONNECT OK
    15:52:34.731 -> RIC:
    15:52:34.731 -> REMOTE IP: 2.236.137.25
    15:52:34.731 -> GET / HTTP/1.1
    15:52:34.766 -> Host: 2.192.195.52
    5) ma sulla pagina web, che vorrei creare non leggo nulla
    6) per inviare il codice HTML uso il metodo della classe Sim900 ,gsm.SimpleWriteln(F(“HTTP/1.1 200 OK”));
    Sperando in una tua delucidazione in merito , ti ringrazio anticipatamente.
    Saluti
    Gianluca

    1. Ciao Gianluca,
      non ricordo se sia possibile, probabilmente dovrai verificare nella documentazione della libreria o nei suoi esempi se esiste qualcosa che ti permetta di farlo.
      In alternativa ti consiglio di cercare qualche libreria che faccia al caso tuo e ti offra questa possibilità

    • Cristian il 15 Luglio 2020 alle 11:00
    • Rispondi

    Ciao Mauro,
    Ti ringrazio per i continui aggiornamenti sul mondo di arduino.
    Io sto utiluzzando arduino nano con il modulo gsm SIM800L e ho reaizzato una bilancia che su mio comando tramite sms mi invia peso, temperatura e umidità.
    Alimento tutto tramite una batteria tampone al litio e relativo piccolo pannello fotivoltaico.
    Avrei bisogno che quando la batteria scende sotto una determinata tensione, il modulo gsm venga spento per poi riaccendersi una volta ricaricata.
    Ecco la mia domanda è : esiste un comando che faccia spegnere il modulo, lasciando ovviamente operativo arduino, in modo tale che possa poi possa riaccenderlo una volta che rileva la giusta tensione…?
    Grazie mille.

    1. Ciao Cristian,
      in modo specifico non so se esista un comando che consenta lo spegnimento del modulo o anche solo della componente GSM.
      Potrei suggerirti di controllare direttamente l’alimentazione del modulo da un pin Arduino, magari con un circuito adatto, potendo quindi spegnere e accendere il modulo solo quando ti serve.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.