gsm gprs shield WAVECOM

Buongiorno,
gentilmente c'e' qualcuno fra di voi esperti che riesce a darmi un aiuto per far funzionare questa shield gsm/gprs della Wavecom e che dovrebbe, almeno stando a chi me l'ha venduta, essere compatibile con Arduino ? Non so veramente da dove partire, ho fatto i 4 collegamenti previsti tra shield e arduino ( + 5 volt-ground-tx e rx ) ed ho collegato arduino al pc.Ma a questo punto veramente non so come andare avanti.Sul monitor seriale son solo riuscito ad un certo punto a far comparire la scritta "READY" segno probabilmente che qualcosa di buono avevo fatto finora, ma da qui a inviare comandi tramite chiamata o sms non saprei proprio come fare.Non comprendo inoltre come interagire a livello hardware con un rele' che mi apra e chiuda un contatto per accendere ad esempio semplicemente una lampadina.
Vi ringrazio tanto e .....siate pazienti ma soprattutto non infierite su di me che sono purtroppo parecchio permaloso. ROCCO 4.
allego foto shield WAVECOM.

a2873f1227bb2408dda577f67a504e85.jpg

ciao
qui sotto un esempio con parentesi da controllare., lo uso per aprire una porta
PS non è una buona idea comprare cose e poi chiedere aiuto e non mi importa se sei permaloso

/*
per apertura e chiusura
*/
#define rele 12 //pin rele apertura

#include <SoftwareSerial.h> //per la comuncazione con il modem
#include <string.h> //per le stringhe

char incoming_char = 0; //Will hold the incoming character from the Serial Port.

String stringOne,substringa;

SoftwareSerial cell(4,5); //Create a 'fake' serial port. cell(RX,TX)

void setup()
{
pinMode(rele,OUTPUT);
digitalWrite(rele,LOW);

incoming_char = 0; //inizializza
stringOne = ""; //inizializza
substringa = ""; //inizializza

Serial.begin(9600); //Initialize serial ports for communication.
cell.begin(9600); //Initialize serial ports for communication.

do
{
delay(1000);
cell.print("AT+CREG?;\r\n"); //verificare se questa istruzione funziona
delay(1000);

while(cell.available() > 0)//verifica la presenza di segnali
{
delay(100); //pausa
incoming_char = cell.read(); //Get the character from the cellular serial port.
stringOne += String(incoming_char); //compone la stringa
stringOne.trim(); //compatta la stringa tagliando le formattazioni
//Serial.print(incoming_char); //Print the incoming character to the terminal.
// Serial.println(stringOne); //stampa di controllo
}
Serial.println(stringOne); //stampa di controllo dopo il trim

substringa = stringOne.substring(9,18);
Serial.println(substringa);//stampa controllo substringa

if(substringa == "+CREG:0,1")
{
Serial.println("GSM registrato");
}
else
{
Serial.println("GSM non registrato");
}
stringOne = "";
incoming_char = 0;
}
while(substringa != "+CREG:0,1");

while(cell.available() > 0)//svuota la memoria
{
delay(50);
cell.read();
}

delay(1000); //pausa

cell.print("AT+CLIP=1 \r\n");
delay(1000); //pausa

while(cell.available()>0) //svuota i messaggi dal modem
{
delay(50); //pausa
cell.read();
// Serial.print(incoming_char); //stampa di controllo
}
delay(1000);
}

void loop()
{
/*
//verifica la registrazione del modem
delay(1000);
cell.print("AT+CREG?;\r\n");
delay(1000);

while(cell.available()>0)//verifica la presenza di segnali
{
delay(100); //pausa
incoming_char=cell.read(); //Get the character from the cellular serial port.
stringOne+=String(incoming_char); //compone la stringa
stringOne.trim(); //compatta la stringa tagliando le formattazioni
//Serial.print(incoming_char); //Print the incoming character to the terminal.
// Serial.println(stringOne); //stampa di controllo
}
//Serial.println(stringOne); //stampa di controllo dopo il trim

substringa=stringOne.substring(9,18);
Serial.println(substringa);//stampa controllo substringa

if(substringa=="+CREG:0,1")
{
Serial.println("GSM registrato");
}
else
{
Serial.println("GSM non registrato");
}
stringOne="";
incoming_char=0;

while(cell.available()>0) //svuota i messaggi dal modem
{
delay(50); //pausa
cell.read();
// Serial.print(incoming_char); //stampa di controllo
}

*/
//verifica la chiamata in arrivo
while(cell.available() > 0) //while a character is coming from the terminal to the Arduino
{
delay(50); //pausa
incoming_char = cell.read();

stringOne += String(incoming_char);
stringOne.trim();

//Serial.println(stringOne); //stampa di controllo

substringa = stringOne.substring(11,24);
}
Serial.println(substringa); //stampa di controllo
delay(1000);

if(substringa == "+39xxxxxxxxxx")//tuo numero di telefono
{
cell.println("ATH\r\n"); //per interruzione chiamata
delay(500); //pausa

digitalWrite(rele,HIGH); //preme pulsante aperura
delay(1000); //pausa
digitalWrite(rele,LOW); //rilascia pulsante apertura
delay(500); //pausa

while(cell.available() > 0) //svuota i messaggi dal modem
{
delay(50); //pausa
cell.read();
// Serial.print(incoming_char); //stampa di controllo
}
}

/*
//If a character is coming from the the Arduino to the terminal
if(Serial.available()>0)
{
incoming_char=Serial.read(); //Get the character coming from the terminal
cell.print(incoming_char); //Send the character to the cellular module.
}
}

Grazie mille !

ciao
ma almeno funziona?