El primero problema fue que la version de la libreria que encontre en la documentacion del shield era muy antigua y no funcionaba correctamente en las versiones actuales del IDE de Arduino. La version mas actual de esta libreria mantenida por Marco Martines es esta:
https://github.com/MarcoMartines/GSM-GPRS-GPS-Shield
Una vez instalada la libreria debemos conectarla con la placa Arduino y hacer algunos ajustes en los ficheros.
Tal y como indicaba la placa en la que ira pinchado el shield es la Mega. La manera de conectar los pines para la comunicacion serie es el RX del shield con el pin 18 del Arduino y el TX con el 19 (fijarse en la imagen).
Posteriormente debemos acudir al directorio donde tengamos la libreria y realizar las siguientes modificaciones:
vim GSM.h: (comentar la del UNO y descomentar la del MEGA)
Código: Seleccionar todo
//#define UNO
#define MEGA
vim HWSerial.h (descomentar la linea)
Código: Seleccionar todo
#define MEGA
En este momento ya deberia compilar sin embargo al intentarlo se muestra un error similar a este:
Código: Seleccionar todo
GSMSHIELD2/HWSerial.cpp:55:9: error: 'prog_char' does not name a type
const prog_char *p = (const prog_char *)ifsh;
Código: Seleccionar todo
//const prog_char *p = (const prog_char *)ifsh;
const char *p = (const char *)ifsh;
Para testear que todo es correcto conectaremos la placa (*) y pulsaremos el boton S_PWR durante algunos segundos para activarla (se encendera el led STA) y enviaremos el sketch.
Abriremos el terminal serie e introduciremos los siguientes comandos AT (muestra del dialogo con el comando que introduzco y la salida):
Código: Seleccionar todo
AT
OK
AT+CPIN="****"
OK
Call Ready
AT+COPS?
+COPS: 0,0,"EUSKALTEL"
OK
(*) El modulo SIM900 con el que cuenta el shield consume bastante asi que para evitar errores aleatorios que pueden volverte loco es recomendable proveer al conjunto con una fuente que pueda entregar al menos 1 amperio.