Esta entrada esta dedicada a uno de mis juguetes nuevos. Aunque en realidad ya tiene un buen rato que lo recibí, realmente llevo poco camino recorrido con el. Se trata del módulo GSM/GPS modelo GM862-GPS de la firma Italiana Telit. Este módulo es bastante popular, ya que lo comercializa también Sparkfun. Por lo tanto ya hay varios proyectos que hacen uso de este dispositivo y será bastante fácil encontrar información para empezar a trabajar con el.

El kit que adquirí, además del GM862-GPS, viene con las antenas para GSM/GPS y  la tarjeta de desarrollo que incluye una fuente de alimentación conmutada (SMPS) y circuitos auxiliares para la traducción de niveles lógicos en los pines TXD, RXD, CTS, RTS; ya que el módulo se alimenta con 4 volts y los pines de I/O trabajan con niveles lógicos CMOS de 2,8 Volts.  La fuente de alimentación para este dispositivo debe estar diseñada para soportar picos de corriente de hasta 2 Amperes según el fabricante, por lo que requiere de una fuente conmutada cuyos componentes no se consiguen tan fácilmente (al menos en México). Conviene, por lo tanto, adquirir algún kit en vez del módulo suelto.

 

El módulo Telit GM862-GPS.

El módulo Telit GM862-GPS permite integrar a nuestros dispositivos capacidad de comunicaciones de voz y datos mediante el uso de la red de telefonía celular GSM. Mediante este módulo se pueden lograr varias formas de comunicación, como lo son los mensajes de texto (SMS), llamadas de voz y de datos (CSD – Circuit Switched Data),  así como el acceso a redes de datos de conmutación de paquetes, como lo es internet a través del servicio GPRS (PSD – Packet Switched Data). El módulo esta pensado para poder ser usado en cualquier parte del mundo, ya que soporta las cuatro bandas de frecuencia de GSM (850, 900, 1800 y 1900 Mhz).

Este módulo, al igual que la mayoría de los productos de la marca telit ofrece algunas ventajas que lo convierten en un producto bastante versátil:

  • Posee un intérprete de lenguaje Python, por lo que el módulo en si puede programarse para tener cierta “inteligencia” y podemos eliminar un microcontrolador externo en algunas aplicaciones.
  • Posee un stack TCP/IP incorporado, este es un punto bastante importante al elegir un módem GSM. Al tener el stack TCP/IP dentro del módulo, la aplicación que desarrollaremos queda en la capa de aplicación del modelo TCP/IP, evitándonos tener que hacer uso de una pila TCP/IP externa.
  • Soporta los protocolos SMTP y FTP mediante comandos AT, por lo que se pueden transferir archivos y enviar correos electrónicos con un par de comandos.
  • Incluye un receptor GPS bastante bueno de 20 canales con salida NMEA independiente y también accesible mediante comandos AT y desde el interprete de python.
  • El interprete de python tiene librerías dedicadas a implementar los protocolos I2C y SPI, por lo que conectar otros dispositivos al módulo es relativamente fácil. Además incluye otras librerías para manejar el hardware interno (GPS, Timer, UART, etc).
  • Finalmente, el modelo GM-862 es bastante usado en proyectos de internet, por lo que la información sobre este módulo es abundante.

 

Comandos AT: El lenguaje para comunicarse con los módems y módulos GSM.

Los comandos AT son instrucciones para controlar módems, el nombre viene de la abreviación de ATtention. Cada comando comienza con AT o at. Muchos de los comandos se usaron en su tiempo para controlar y configurar módems alámbricos (land-line) como ATD (Dial-marcar), ATA (Answer – contestar), ATH (hook – colgar). Una buena parte de ellos son soportados aún por módems GSM/GPRS y teléfonos móviles. Además de este juego básico de comandos, los módems GSM tienen sus comandos propios que incluyen operaciones para el envío de mensajes SMS, transferencia de datos y otros tantos específicos proporcionados por el fabricante del módulo.

Tarjeta de desarrollo para el módulo GM862-GPS con sus antenas conectadas

Los siguientes son algunos de los comandos que soporta el GM862-GPS para sus operaciones básicas. Hay que aclarar que el módulo soporta muchos otros comandos que no son tratados en esta página. Los que se tratan aquí se pueden usar para comenzar a probar las capacidades y el funcionamiento del módulo. Para una referencia completa de los comandos soportados se puede consultar el documento “AT Commands Reference”, disponible en el sitio web de Telit.

  • ATD <number>[;] – Comando de marcación al módem GSM (Dial), si se coloca un punto y coma después del número, se realizará una llamada de voz, si se omite, se trata de una llamada de datos.
  • ATH – Termina la llamada telefónica actual (Hook).
  • ATA – Contesta la llamada entrante actual (Answer).
  • AT+GMI – Obtener la cadena de identificación del fabricante del dispositivo.
  • AT+GMM – Obtener cadena de identificación con el modelo del dispositivo.
  • AT+CSQ – Obtiene un valor de intensidad de señal, nos permite conocer la calidad del enlace de radio.
  • AT+CREG? – Verificar si el módulo se encuentra registrado en la red y la manera en que lo reporta al microcontrolador y/o PC.
  • AT+CMGS – Comando para enviar un mensaje SMS, se pueden realizar envíos de mensajes en modo PDU o en modo Texto.
  • AT+CMGF – Comando para seleccionar el modo de entrada SMS: PDU o Texto.
  • AT+CPIN? – Verificar si el SIM esta presente en el dispositivo.
  • AT+CPIN=<pin> – Enviar el PIN para obtener acceso al SIM.

Para las primeras pruebas en mi país (México), estoy utilizando SIMs de Telcel y Telefónica Movistar con éxito para enviar mensajes de texto y hacer llamadas de voz.

 

Formato de los comandos y formato de las respuestas.

Los comandos AT, siempre empiezan con el prefijo AT y terminan con el carácter retorno de carro (0x0D), mientras que la  respuesta desde el dispositivo incluye los caracteres hexadecimales retorno de carro <cr> (0x0D) y nueva linea <lf> (0x0A) ambos caracteres juntos delimitan tanto el inicio como el final de la respuesta que envía el módulo. Veámoslo mediante el siguiente ejemplo en el que se envía al módulo el comando AT+GMM (obtener el modelo del equipo terminal). La estructura de los datos que esperamos ver el el puerto serial es la siguiente:

Enviar: AT+GMM<cr>

Recibir: <cr><lf>GM862-GPS<cr><lf>

En este ejemplo se envía en comando AT+GMM que obtiene desde el módulo la cadena “GM862-GPS”, que es el modelo que identifica nuestro hardware. Habitualmente este es el tipo de respuesta que obtendremos desde el puerto serial del Telit.

 

Sobre la tarjeta de Mikroelektronika Smart GM862 GPS.

La tarjeta de mikroelektronika dista mucho de ser una plataforma completa para evaluar los módulos Telit, sin embargo, es mucho más barata que la solución que nos ofrece el fabricante: el EVK2. He tenido la oportunidad de ver el kit EVK2 de Telit en persona en un evento al que asistí y si alguien se desarrolla profesionalmente en el mercado M2M, seguramente valdrá cada peso de la inversión, por que también podemos trabajar con los módems UMTS/HSDPA de la marca.

Volviendo a la tarjeta de mikroelektronika, esta no es pretenciosa en lo absoluto: solo encontraremos el hardware más básico para hacer funcionar el módulo y comunicarlo con un microcontrolador que utilice 3.3 o 5 volts en su alimentación. De hecho el único indicador luminoso que encontraremos en es el LED que indica si la tarjeta esta recibiendo alimentación. Si alguien me pregunta, se echa de menos un segundo led conectado al pin de estado del Telit. El cual indica, precisamente, el estado del módulo (registrado o no registrado, roaming, etc.).

También sería bueno que se añadieran un par de traductores de niveles extra (como los usados en los pines RX,TX,CTS,RTS) que uno pudiera conectar a voluntad a cualquier PIN. Sin duda con esto se añadiría bastante valor a la herramienta sin incrementar mucho el costo. Fuera de eso, la calidad del PCB, antenas, presentación del producto y los componentes es bastante buena.

Finalmente hay que agregar que esta tarjeta NO servirá para conectar el Telit a la PC, si queremos hacer esto, habrá que lidiar por nuestra cuenta con la conversión de niveles de CMOS a RS-232 o USB (no mucho problema). Si solamente deseamos conectar el telit a un microcontrolador funcionando a 3.3 o 5 volts, es la tarjeta adecuada.

A todos nuestros clientes: Por festividades de fin de año nuestro servicio de tienda virtual operará de forma limitada en la semana del 24 de diciembre al 2 de enero. Agradecemos su compresión y les deseamos felices fiestas. Ignorar