Si como yo, has estado jugando un poco con tu Arduino, tarde o temprano llega un momento donde es necesario conectarlo al mundo exterior. Lo mas usual es conectarlo mediante Ethernet o WiFi si te dá el presupuesto, para poder enviar información hacia el mundo exterior.
Pero estas no son las únicas opciones de comunicación. En esta ocasión, vamos a revisar el Shield GPRS/GSM EF-Com fabricado por la Elekfreaks, y distribuido por www.dx.com.
Este shield, permite que nuestro arduino opere como un teléfono GSM, obviamente debiendo programar todas las funciones del mismo. Dentro del hardware de este shield, podemos encontrar los siguientes dispositivos:
- Modem GSM/GPRS basado en el chip SIM900
- Conectores de entrada y salida de audio (para realizar o recibir llamadas)
- Reloj RTC, con batería de respaldo
- Varios pines de GPIO libres controlables mediante comandos AT
- Opción para conexión RS232 via hardware o software
Contenido del paquete
Al recibir el paquete, pude notar inicialmente, que el empaque era bastante grande para un shield de Arduino, por lo que definitivamente debía tener varios items en su interior. Dentro del paquete, al abrirlo pude encontrar:
- Shield GSM / GPRS
- Antena externa
- Adaptador de 9V / 1A
- Display Nokia 5100 con backlight Azul
El display es un extra inesperado. En el sitio web no indica que se incluye este display, pero el Shield tiene un header instalado propiamente para éste. Es un extra que da valor agregado al producto.
Operación
El adaptador de 9V es necesario, porque alimentando directamente al Arduino y al Shield desde el puerto USB, éste no alcanza a proveer la corriente necesaria para su operación. Según el fabricante, el módulo en picos de consumo de corriente, puede superar 1A facilmente.
Algo a tomar muy en cuenta, es la posición del display LCD en el shield. Lastimosamente no existen marcas del Pin 1 del header, y en el Wiki del fabricante, menciona que el LCD con backlight azul (existen 2 versiones, una con backlight azul y otra con backlight blanco) debe ir como se muestra en las fotos, con el display sobre el chip SIM900. Esta posición es incorrecta, ya que el display con backlight azul debe ir montado en la posición exterior del Shield. Esto lo veremos en las imágenes posteriores.
Programación
Como lo mencionabamos, el Shield GPRS funciona como un modem GSM serial, es decir, para su uso, únicamente requerimos los pines Rx, Tx y Gnd del puerto serie de nuestro arduino, o de un puerto serial por Software, en los pines que nosotros definamos
Tomando en cuenta esto, vamos a programar un pequeño Sketch, que ejecutará las siguientes tareas:
- Mostrará un mensaje de bienvenida en el LCD Nokia 5100
- Esperará un caracter en el puerto serial del Arduino
- Mediante un Puerto Serial de Software inicializará la comunicación con el Shield GSM
- Enviará un mensaje de texto (SMS) a un número colocado en el software
El código que vamos a usar en nuestro arduino es el siguiente:
#include <"lcd5110_graph.h"> #include <"softwareserial.h"> LCD5110 myGLCD(9,10,11,12,13); extern uint8_t SmallFont[]; #define rxPin 2 #define txPin 3 SoftwareSerial mySerial(rxPin, txPin); char *init1="AT+IPR=19200"; // configuracion del modulo para 19200bps char *init2="AT+CMGF=1"; // configuracion para modo ascii unsigned char CR=13; // caracter de retorno de linea void setup() { myGLCD.InitLCD(); myGLCD.setFont(SmallFont); mySerial.begin(19200); // Velocidad de conexion por defecto del Shield Serial.begin(19200); // Velocidad del puerto serie Serial.println("Conexion Serial Ok."); myGLCD.clrScr(); myGLCD.print("Prueba del", CENTER, 0); myGLCD.print("GPRS Shield ", LEFT, 12); myGLCD.print("patolin.com ", LEFT, 30); myGLCD.update(); } void loop() { // inicializamos el shield mySerial.write(init1); mySerial.write(CR); delay(1000); mySerial.write(init2); mySerial.write(CR); delay(1000); myGLCD.clrScr(); myGLCD.print("SMS", CENTER, 0); myGLCD.print("Esperando", LEFT, 12); myGLCD.print("caracter al ", LEFT, 24); myGLCD.print("RS232", LEFT, 36); myGLCD.update(); // esperamos un caracter cualquiera en el puerto serie if (Serial.available()) { if (mySerial.available()) Serial.write(mySerial.read()); // limpiamos el buffer de lectura Serial.read(); // enviamos el sms myGLCD.clrScr(); myGLCD.print("SMS", CENTER, 0); myGLCD.print("Enviando....", LEFT, 12); myGLCD.update(); mySerial.write("AT+CMGS=\"099XXXXXXX\""); // reemplace por el numero de celular de destino mySerial.write(CR); delay(1000); mySerial.write("Prueba de SMS desde Arduino!"); mySerial.write(CR); delay(1000); mySerial.write(26); // Ctrl+Z para finalizar el mensaje y enviar myGLCD.print("enviado!", LEFT, 30); myGLCD.update(); } }
Bastante sencillo cierto? El código se explica solo. Basta con configurar la comunicación con el Shield a la misma velocidad (19200bps en este caso) y enviar los respectivos comandos. Al ser un modem GRPS, responde a una amplia variedad de comandos AT, que podemos revisarlos en este manual propio del fabricante.
Les dejo un video de la prueba de este código sobre mi Arduino.
[HTML1]
Para concluir, las aplicaciones para este Shield son varias! Desde una alarma de seguridad de hogar con notificaciones por SMS, hasta un dispositivo remoto que pueda contestar llamadas y devolver información.
Para concluir, podemos resumir las características de este Shield, en las siguientes:
- Shield GSM/GPRS Quad-Band 850/900/1800/1900 MHz, con el chip SIM900 GSM
- Compatible con Arduino Uno / Mega
- Voltaje de Operación 5Vcc
- Socket plástico para el Chip GSM ubicado en la parte inferior del Shield
- Antena externa, en L para mayor facilidad de ubicación
- Adaptador de alimentación incluido
- Jacks de Entrada y Salida de Audio, para la generación de llamadas telefónicas via celular
- Reloj en tiempo real incluido
- Display LCD Nokia 5100 incluido
Para los entusiastas de la electrónica y del Arduino, puedo comentarles que el precio de este Shield es un poco elevado. El costo es de USD. 57,70 incluido el envío desde China. Si descontamos el valor del LCD y del adaptador, podríamos llegar a los USD. 50,00 que sigue siendo algo elevado, tomando en cuenta el costo del Arduino. Pero si vamos a usar este Shield en una aplicación profesional, Si resulta muchísimo más barato que otras soluciones de comunicación GSM que existen en el mercado.
Les dejo algunos enlaces correspondientes a este producto. Espero les sean de interés
- Arduino GSM / GPRS Shield Wireless Extension Board Module w / antena / adaptador
- GSM Shield WIKI
- SIM900 AT Command Reference
Deja un comentario
Lo siento, debes estar conectado para publicar un comentario.