Problema GSM shield invio sms

Salve a tutti, dovrei progettare per l'esame di maturità un progetto composto da un sensore di temperatura e da un sensore di fumo. I dati prelevati dai sensori, vengono visualizzati su un display 2x16. Vorrei però aggiungere un modulo GSM affinchè il sistema possa inviare un sms quando si supera una certa soglia di gas. Vorrei degli aiuti, premettendo che in ambito GSM sono inesperto. Mi servirebbero dei consigli sia hardware (come collegare il modulo GSM con arduino uno), ma anche softeare. In rete ho letto che i piedini digitali 2 3 e 7 non possono essere utilizzati dallo sketch, in quanto sono essenziali per la comunicazione tra modulo e arduino. E già qui ho dei problemi, in quanto questi pin, sono collegati proprio col display.
Grazie a chi mi aiuterà in questo progetto :slight_smile:

I pin occupati dal display li puoi cambiare se usi la libreria liquid crystal.
Basta dichiarare quelli che usi all'inizio dello sketch.
Che scheda gsm usi/pensi di usare?

Avrei pensato di usare la simcom sim900, compatibile con arduino uno e non troppo costosa. Quindi i pin del display li posso impostare, perfeto. Di seguito, vi è lo sketch che arduino propone per il modulo gsm. Dovrebbe funzionare, basterebbe collegare il modulo e inserire il numero del destinatario in remotenumber, vero?

/*
 SMS sender
 
 This sketch, for the Arduino GSM shield,sends an SMS message 
 you enter in the serial monitor. Connect your Arduino with the 
 GSM shield and SIM card, open the serial monitor, and wait for 
 the "READY" message to appear in the monitor. Next, type a 
 message to send and press "return". Make sure the serial 
 monitor is set to send a newline when you press return.
 
 Circuit:
 * GSM shield 
 * SIM card that can send SMS
 
 created 25 Feb 2012
 by Tom Igoe
 
 This example is in the public domain.
 
 http://arduino.cc/en/Tutorial/GSMExamplesSendSMS
 
 */

// Include the GSM library
#include <GSM.h>
char remoteNumber;

#define PINNUMBER ""

// initialize the library instance
GSM gsmAccess;
GSM_SMS sms;

void setup()
{
  // initialize serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
  
  Serial.println("SMS Messages Sender");

  // connection state
  boolean notConnected = true;

  // Start GSM shield
  // If your SIM has PIN, pass it as a parameter of begin() in quotes
  while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("Not connected");
      delay(1000);
    }
  }
  
  Serial.println("GSM initialized");
}

void loop()
{

  Serial.print("Enter a mobile number: ");
  char remoteNum[20];  // telephone number to send sms
  readSerial(remoteNum);
  Serial.println(remoteNum);
    
  // sms text
  Serial.print("Now, enter SMS content: ");
  char txtMsg[200];
  readSerial(txtMsg);
  Serial.println("SENDING");
  Serial.println();
  Serial.println("Message:");
  Serial.println(txtMsg);
  
  // send the message
  sms.beginSMS(remoteNum);
  sms.print(txtMsg);
  sms.endSMS(); 
  Serial.println("\nCOMPLETE!\n");
}

/*
  Read input serial
 */
int readSerial(char result[])
{
  int i = 0;
  while(1)
  {
    while (Serial.available() > 0)
    {
      char inChar = Serial.read();
      if (inChar == '\n')
      {
        result[i] = '\0';
        Serial.flush();
        return 0;
      }
      if(inChar!='\r')
      {
        result[i] = inChar;
        i++;
      }
    }
  }
}

@10alessandro:

Prima di tutto, essendo questi i tuoi primi post, ti consiglio di presentarti QUI (spiegando quali conoscenze hai di elettronica e di programmazione) e di leggere con attenzione il REGOLAMENTO ...

... così poi scoprirai che al punto 7 del regolamento è chiaramente indicato che il codice DEVE essere racchiuso tra i tag CODE.

Cortesemente quindi edita il tuo post. Grazie.

Guglielmo