Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki

Arduino: Enviar SMS y hacer llamadas desde placa Arduino con módulo GPRS
Hardware


Explicamos cómo conectar un módulo GPRS a una placa Arduino UNO para dotarla de conexión a la red móvil. Este módulo nos permitirá enviar SMS desde Arduino, hacer y recibir llamadas e incluso conectarnos a Internet. Explicamos todos los requisitos hardware necesarios para este proyecto hardware de ejemplo.



Requisitos para enviar SMS y hacer llamadas desde placa Arduino

En este proyecto hardware de ejemplo usaremos un módulo GPRS específico para Arduino, nos permitirá disponer de un módem GSM con tarjeta SIM de móvil, por lo que podremos realizar cualquier operación como si de un módem GSM se tratase (hacer llamadas, recibir llamadas, enviar SMS, recibir SMS, conectarnos a Internet, etc.) todo ello con comandos AT (Hayes). En el siguiente artículo explicamos estos comandos más en profundidad y cómo usar un módem GSM:

Cómo enviar SMS desde un PC usando un módem GSM con Visual Basic .Net

Lo explicado en el artículo anterior será válido para este, salvando las distancias obvias entre VB.Net y Arduino.

Indicamos a continuación los requisitos hardware para enviar SMS y hacer llamadas con nuestra placa Arduino de forma autónoma (sin necesidad de cables ni conexión al PC):

  • Módulo GPRS (unos 75 euros) , en nuestro caso hemos adquirido un GPRS Sagem Quadband Module for Arduino:

Requisitos para enviar SMS y hacer llamadas desde placa Arduino

Para la conexión a la red móvil del módulo GPRS necesitaremos una tarjeta SIM normal (como la de los móviles) activa y disponible para enviar SMS y hacer llamadas.

  • Placa Arduino UNO (unos 25 euros) :

Requisitos para enviar SMS y hacer llamadas desde placa Arduino

  • Como siempre, para cualquier proyecto con Arduino necesitaremos disponer de un cable USB de tipo A-B para conectar Arduino con el PC y necesitaremos el IDE de desarrollo y los drivers (si usamos Microsoft Windows 7, en Linux no son necesarios). En el siguiente artículo explicamos los primeros pasos para conectar Arduino con el PC:

Primer proyecto hardware con Arduino, encender un LED

Cómo conectar módulo GPRS a placa Arduino UNO

Prepararemos en primer lugar el módulo GPRS que cuando lo adquirimos incorpora una antena externa que hay que conectar. Por un lado el conector que va al microchip del módulo:

Cómo conectar módulo GPRS a placa Arduino UNO

Conectaremos el chip con la antena al módulo GPRS como se muestra en la imagen:

Cómo conectar módulo GPRS a placa Arduino UNO

Insertaremos también una tarjeta SIM activa, a ser posible sin PIN para evitar tener que enviárselo por comando AT (aunque se puede hacer):

Cómo conectar módulo GPRS a placa Arduino UNO

A continuación conectaremos el módulo GPRS a la placa Arduino, dicho módulo es específico para Arduino por lo que encajará en los pines correspondientes sin problema, con un poco de presión:

Cómo conectar módulo GPRS a placa Arduino UNO

El módulo GPRS quedará perfectamente anclado y conectado a la placa Arduino:

Cómo conectar módulo GPRS a placa Arduino UNO

Todo el hardware conectado (antena externa, módulo GPRS y placa Arduino):

Cómo conectar módulo GPRS a placa Arduino UNO

Consideraciones importantes a tener en cuenta antes de enviar el programa a Arduino para usar el módulo GPRS

Hay que tener en cuenta que el módulo GPRS tiene "dos posiciones" para la conexión con Arduino:

1. Por un lado hay que indicarle al módulo GPRS cuándo está conectado al PC por el puerto USB (serie emulado), esto se hace colocando dos jumpers que incorpora en la parte superior de la siguiente forma:

Considereciones importantes a tener en cuenta antes de enviar el programa a Arduino para usar el módulo GPRS

Es muy importante tener esto en cuenta, cuando queramos enviar el programa a Arduino, los dos jumpers deben estar como se indica en la imagen anterior, si no es así el Upload (envío) del programa dará error.

El error que nos mostrará el IDE de desarrollo de Arduino si no hemos colocado los jumpers correctamente será:

avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

2. Para probar el programa de envío de SMS, de llamadas o cualquier otra tarea que hayamos programado con Arduino y el módulo GPRS deberemos desconectarlo del USB del PC y alimentarlo externamente. Además, deberemos cambiar los jumpers mencionados anteriormente a esta nueva posición:

Considereciones importantes a tener en cuenta antes de enviar el programa a Arduino para usar el módulo GPRS

Programar Arduino para enviar SMS a móvil

A continuación mostramos el programa para enviar un SMS desde Arduino usando un módulo GPRS, básicamente usa comandos AT para realizar el proceso, como si de un módem GSM se tratase:

/*
 *  Programa para enviar un SMS usando un módulo GPRS
    con placa Arduino por AjpdSoft
 */

int pinLED = 13;
int pinActivarGPRS = 2;  // pin para activar el módulo GPRS

int numeroSMSEnviar = 1; // numero de SMS a enviar
int contador = 0; //para solo repetir una vez el loop

//procedimiento para activar el módulo GPRS
void activarModuloGPRS()
{
  digitalWrite(pinActivarGPRS, HIGH);
  delay(2000);
  digitalWrite(pinActivarGPRS, LOW);
}

void setup()
{
  pinMode(pinLED, OUTPUT);
  pinMode(pinActivarGPRS, OUTPUT);

  Serial.begin(19200); //velocidad de conexión con módulo GPRS
    
  activarModuloGPRS(); //activar el módulo GPRS
  
  delay(20000); //esperamos 20 segundos a que se active el módulo GPRS
  
  Serial.println("AT+CMGF=1"); //activamos el modo SMS
}

void loop()
{
  while (contador < numeroSMSEnviar)
  {
    delay(1500);
    Serial.print("AT+CMGS="); // comando AT para enviar SMS
    Serial.print(34, BYTE);   // enviar caracter "
    Serial.print("numero_movil"); // numero de movil receptor del SMS
    Serial.println(34, BYTE);  //  enviar caracter "
    delay(1500); 
    Serial.print("Envio SMS desde Arduino AjpdSoft"); //texto del SMS
    delay(500);
    Serial.print(0x1A,BYTE); // final del SMS, comando 1A (hex)
       
    delay(10000);        

    contador++;    
  }

  if (contador == numeroSMSEnviar){
    Serial.println("AT*PSCPOF");  // desactivar el módulo GPRS
    contador++;
  }
}

Verificaremos la sintaxis del programa, como siempre, pulsando en el botón "Verify" del IDE de Arduino, si todo es correcto nos lo indicará con el mensaje "Done compiling":

Programar Arduino para enviar SMS a móvil

Recordamos que para enviar el programa a Arduino necesitaremos colocar los jumpers del módulo GPRS como indicamos aquí. Una vez colocados los jumpers en su posición correcta pulsaremos en botón "Upload" del IDE de desarrollo de Arduino para enviar el programa, si todo es correcto y el programa ha sido enviado a la memoria Flash de Arduino nos lo indicará con el mensaje "Done uploading":

Programar Arduino para enviar SMS a móvil

Para probar el programa y verificar que envía el SMS correctamente al número de móvil indicado habrá que desconectar Arduino del puerto USB, cambiar los jumpers como indicamos aquí y alimentar Arduino con un adaptador como mostramos en la imagen:

Programar Arduino para enviar SMS a móvil

Una vez alimentado Arduino se iniciará el programa y, tras unos 20 segundos (el tiempo de espera que hemos programado), nos llegará el SMS al número de móvil indicado en el programa:

Programar Arduino para enviar SMS a móvil

Programar Arduino para hacer llamadas a móvil

Al igual que hemos explicado cómo enviar SMS con Arduino y el módulo GPRS, mostramos ahora el código para hacer una llamada perdida desde Arduino a un móvil:

/*
 *  Programa para realizar una llamada perdida a un movil
    usando un modulo GPRS con placa Arduino por AjpdSoft
 */

int pinLED = 13;
int pinActivarGPRS = 2;  // pin para activar el módulo GPRS

int timesToSend = 1;  // numero de llamadas a realizar
int contador = 0;  //para solo repetir una vez el loop

void activarModuloGPRS()
{
  digitalWrite(pinActivarGPRS, HIGH);
  delay(2000);
  digitalWrite(pinActivarGPRS, LOW);
}

void setup()
{
  pinMode(pinLED, OUTPUT);
  pinMode(pinActivarGPRS, OUTPUT);

  Serial.begin(19200);   //velocidad de conexión con módulo GPRS GSM
    
  activarModuloGPRS();   //activamos el modo GPRS GSM
 
  delay(20000);  //esperamos 20 segundos a que se active el módulo GPRS  
}

void loop()
{
  while (contador < timesToSend)
  {
    delay(1500);
    Serial.println("ATDnumero_movil;"); //numero_movil numero al que realizaremos la llamada
    delay(12000); 
    Serial.println("ATH"); //colgaremos y finalizaremos la llamada
       
    delay(5000);        

    contador++;    
  }

  if (contador == timesToSend)
  {
    Serial.println("AT*PSCPOF");    // desactivar el módulo GPRS
    contador++;
  }
}

Realizando las mismas operaciones que hemos indicado para enviar el programa y para probarlo en el caso del SMS, si todo es correcto, Arduino realizará una llamada perdida al número de móvil indicado:

Programar Arduino para hacer llamadas a móvil

Conclusión sobre el módulo GPRS y Arduino

Con estas opciones probadas de envío de SMS y llamada perdida y todas las posibles gracias al módem GSM (módulo GPRS) y los comandos AT, podremos dotar a nuestro proyecto hardware con Arduino de una potente herramienta para numerosas funcionalidades: por ejemplo, si desarrollamos una estación meteorológica podremos avisar por SMS a uno o varios números de móvil cuando se den unas determinadas condiciones (temperatura más baja de un valor preestablecido, etc.). Podremos conectarnos, desde Arduino, a cualquier página web y enviar parámetros, podremos incluso hacer una llamada perdida a un móvil cuando se produzca un determinado evento (así ahorramos el coste del SMS), podremos navegar a una URL y obtener determinado código HTML.

Como hemos demostrado se trata de un módulo muy sencillo de conectar y de programar. De hecho hemos desarrollado este proyecto hardware de uso de módulo GPRS sin necesidad de conocimientos en electrónica ni sistemas.

Sin duda Arduino se está convirtiendo en una herramienta muy útil, al alcance de cualquiera por su bajo precio y con una infinidad de funcionalidades, con la gran ventaja de acercar el hardware conectado al PC para usuarios sin apenas conocimientos en electrónica y sistemas.

Artículos relacionados

Créditos

Artículo realizado íntegramente por Alonsojpd miembro fundador del Proyecto AjpdSoft, con la inestimable colaboración de Antonio RN de RS.

Artículo en inglés.



Nota: Revisado por Antonio RN de RS el 28-10-2011.

Anuncios


Enviado el Domingo, 16 octubre a las 23:08:10 por ajpdsoft
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A