Llamadas y SMS con Sim900, Python y Raspberry Pi

By Tutoriales Raspberry Pi, , With 44 comments

Conoceis el proyecto PiPhone de David Hunt?. PiPhone es un teléfono móvil creado con una Raspberry Pi y un módulo GSM. Aunque se encuentre a años luz de un Iphone o un Samsung Galaxy, este teléfono ‘do it yourself’ es capaz de enviar y recibir mensajes cortos (SMS) y de realizar y recibir llamadas mediante comandos ‘AT’ y todo ello con una interfaz táctil gracias a una pantalla TFT/LCD (touchscreen) del fabricante Adafruit.

En este tutorial aprenderemos a enviar llamadas y SMS con un módulo EfCom Pro v1.0, Python y Raspberry Pi, para empezar vamos a ver el módulo Efcom Pro con más detalle.

EFComPro1
ElecFreaks EfCom Pro v1.0

Características del módulo EfCom Pro

Este módulo ultracompacto está basado en el chipset Sim900, un emisor-receptor GSM/GPRS quatribanda (850/ 900/ 1800/ 1900 MHz) con soporte para comandos ‘AT’ (GSM 07.07 ,07.05 y SIMCOM AT) gracias a un controlador UART .

Mide 5’5cm (largo) x 6cm (ancho) x 5’5cm (alto con antena montada) y ya viene perforado para poder poner 4 tornillos y fijarlo. Dispone de una entrada y una salida de audio para las llamadas en formato Jack 3’5 donde podemos conectar cualquier auricular con micrófono de los que se usan para jugar (gamer) o para hablar por Skype.

La tarjeta SIM va montada en un zócalo negro de plástico, podéis usar cualquier tarjeta de tamaño normal o una microSIM con adaptador pero cuidado, algunos adaptadores son un poco más gruesos de lo normal y al cerrar la tapa del zócalo podéis romperla ya que es de plástico endeble.

El módulo GSM EfCom Pro tiene 2 botones soldados a la placa (power y reset), el primero activa y desactiva el modo standby de la placa y el segundo la resetea reiniciando así todo el proceso de registro en la red móvil. También lleva soldado un conector para montar la antena SMA incluida en el paquete, disponer de un conector de antena estándar nos ahorrará todo el trabajo de soldadura en caso de necesitar una antena más potente para nuestro proyecto.

Preparación de la Raspberry Pi

Nuestra Raspbery Pi se comunicará con el módulo GSM a través del puerto série /dev/ttyAMA0 pero este puerto viene bloqueado por defecto ya que viene configurado como una consola de entrada y salida así que tendremos que liberarlo, para ello abriremos el archivo /boot/cmdline.txt con derechos de administrador y cambiamos:

por:

El paso siguiente es abrir el archivo /etc/inittab, también con derechos de administrador, y en la última línea poner un ‘#’ para desactivarla hay que cambiar:

Por:

Para que estos cambios tengan efecto debemos reiniciar la Raspberry, podemos hacerlo desde el icono del escritorio o tecleando en la terminal el comando:

Una vez hecho esto ya tendremos el puerto série preparado para usarse.

Esquema y cableado

Este módulo dispone de 6 pins I/O, enumerados como VCC, GND, Tx, Rx, PWR y RST. Se alimenta de 3 a 5V y puede ir conectado directamente a la Raspberry Pi sin necesidad de una fuente de alimentación externa siempre y cuando alimentemos la Raspberry con un transformador de 2A mínimo. Los pines Tx y Rx van conectados a los de la Raspberry pero cruzados y los pines ‘PWR’ y ‘RST’ pueden ir conectados a cualquier pin GPIO y sirven para lo mismo que los botones que vienen soldados pero para llamar a su función a través de software.

Llamadas y SMS con Sim900, Python y Raspberry Pi

Prueba de conexión

Una vez que hemos modificados los archivos de la Raspberry Pi mencionados anteriormente y conectado el módulo GSM tal como indica el esquema vamos a instalar Minicom un programa que hará de terminal y desde donde enviaremos comandos al módulo GSM. Para instalar Minicom tecleamos en la consola:

Una vez instalado Minicom vamos a realizar una prueba de conexión, tecleamos en consola:

com_1

Una vez conectados escribimos ‘AT’ y pulsamos ENTER, si recibimos ‘OK’ el módulo esta bien conectado y todo esta funcionando perfectamente.

Ejemplos de código Python

 
Enviar SMS mediante comandos AT

 

Recibir SMS mediante comandos AT

 

Enviar y recibir llamadas mediante comandos AT