
Tutorial GSM
GSM (Global System for Mobile) es una tecnología de comunicación remota. GSM nos permite comunicación de voz y datos (GPRS – General Packet Radio Service). Primero experimentaremos con llamadas telefónicas. Finalmente pasaremos a transmisión de datos via GPRS.
Requisitos:
- Computadora (mac)
- Arduino MEGA (u otra variante Arduino) o incluso Arduino clone, Edison, Raspberry… Este tutorial en particular usa una Arduino MEGA.
- Modulo SIM900 GSM/GPRS
- Arduino IDE (https://www.arduino.cc/en/Main/Software)
Estaremos usando el modulo SIM900 GSM/GPRS para nuestra comunicación:

Como podemos ver, el modulo tiene un pin 5V, 2 pines GND y los típicos 2 pines para Rx y Tx. Por ende la conexión es bastante sencillo. Sin embargo nuevamente si vamos a subir las instrucciones a la UNO via el Serial 0 & 1 como Rx y Tx, no podremos usarlos para comunicación con el modulo Sim900 así que tendremos que definir pines de Rx y Tx via software, usando la libreria SoftwareSerial como hicimos en el tutorial WiFi.
En el caso de la MEGA conectamos el Rx al pin 18 y el Tx al pin 19. NOTA: La libreria traer varios archivos y algunos con la instrucción especifica de comentar/des-comentar ciertas lineas especialmente entre el uso de la UNO vs la MEGA. Esto es debido a que la UNO utilizar los pines 0 & 1 como los Hardware Serial para Tx & Rx mientras que la MEGA usa varios pines distintos (especificamente el 18 & 19). Por ejemplo los archivos HWSerial & GSM contienen varias secciones donde se explica cuales lineas comentar o des-comentar. También es posible que sea necesario incrementar un timeout para dar mas chance a que el modulo SIM900 se logre conectar a la red.

Veamos un ejemplo sencillo:
#include "SIM900.h" //libreria para el modulo
#include <SoftwareSerial.h>
#include "call.h" //Acceso a funciones de llamada
CallGSM call; //Creamos un objeto de llamada
char number[]="+50499991234"; //almacenaremos un numero a llamar
void setup(){
Serial.begin(9600); //Iniciamos el monitor
if (gsm.begin(2400))//Iniciamos el modulo gsm
Serial.println("\nstatus=READY");
else Serial.println("\nstatus=IDLE");
};
void loop(){
if(call.CallStatus()!= CALL_ACTIVE_VOICE){
// Si no hay llamada activa...
Serial.println("Call");
call.Call(number); //Llamamos usando call.Call()
delay(10000);//Esperamos 10mil milisegundos
}
}
Aquí estamos haciendo una llamada con la función .Call() del objeto call que creamos al inicio. Asegurarte que tu linea tenga saldo. Deja la SIM900 conectada un rato mientras se logra registrar a la red de Tigo/Claro. Puede ser necesario poner la chip SIM en un teléfono para asegurarse que se logra conectar a la red de tu proveedor e incluso lo ideal es confirmar haciendo una llamada con el chip SIM ingresado. Una vez verificado, procede a instalar la chip SIM en tu modulo SIM900 y sube el código a la UNO.
Al correr el codigo deberiamos ver en el Monitor Serial algunos comandos de debug como:
ATT, RIC, OK
ELSE, CORRECT BR, ATE0
CPMS, SHUT OK, Status=ready
Call o Call Active…
Ese proyecto se puede ver aquí:
Que podemos hacer con esta tecnología:
- Utilizar GPRS para transmitir datos entre nuestro proyecto Arduino y la nube. Por ejemplo parse datos en nuestros proyectos de servicios web como twitter o servicios meteorológicos.
- Postear datos remotamente desde nuestros proyectos así como crear proyectos que actúen como servidores de información en la nube.
- Enviar instrucciones a proyectos y controlarlos via llamadas o SMS.
Ahora podemos dar a nuestro robot habilidades realmente avanzadas!