Control de teléfono GSM con comandos AT y Arduino (Hacking GSM phone with Arduino)


We are going to use an old GSM phone like a GSM shield to connect our system to cellular network. This is a simple, confidence and cheap way to do it.
In this particular case we have a Motorola w375 but it is possible to every GSM phone , not smart. Just need to search the pinouts or test points. In general, they are in a visible place rear the battery.
This project or idea is ideal to connect arduino to de GSM network.

En este artículo vamos a ver cómo podemos usar un viejo celular o teléfono GSM como modem GSM.  Es decir, podemos utilizar un Arduino para llamar, recibir o enviar mensajes por medio de la red celular.
Este es un método barato o gratis prácticamente, de otro modo necesitaríamos un módulo GSM o GSM Shield.


Hay otras posibilidades para enviar información por internet, y que llegué a nuestro Smartphone o teléfono celular, por ejemplo usando un módulo WIFI o Ethernet.
La ventaja de utilizar una red celular (GSM) para comunicarnos y no INTERNET es que este último no es tan fiable ya que depende de la conexión a internet, y de la red eléctrica. Si se corta la conexión o nos quedamos sin energía eléctrica no se podría producir la comunicación, en cambio la red celular siempre está disponible.


Es de resaltar que hoy en día una conexión a internet es muy fiable y existen maneras para que sea más confiable. Aun así, sigue siendo la comunicación por GSM la más confiable.
En este caso en particular utilizamos un Motorola W375, el que teníamos disponible. Sin embargo, se puede utilizar para cualquier tipo de celular, por ejemplo, Nokia, Sony Ericsson, ZTE, entre otros celulares viejos que no son SMART. Tener en cuenta que cada marca en particular y a veces cada modelo puede tener una forma de conexión diferente o una distribución de pines diferentes.

Componentes:
·         Módulo Arduino: si es uno del cual se puede extraer el chip mejor sino puede hacerse con cualquier tipo, pero tenemos que utilizar un pequeño código para simular el puerto serial.
·         Adaptador UART- TTL a USB (opcional).
·         Celular o teléfono GSM (no Smart)
·         Datasheet, PCB, Test Points ó Pinouts (Distribución de pines o pines de Programación).
·         Plug de audio 2.5 mm.
·         Cables varios, soldador de estaño, pines de conexión, etc.

En nuestro ejemplo vamos a utilizar un Arduino Uno (sin Chip) y un adaptador de UART-TTL a USB. Básicamente este último para ver que funciona aún sin el Arduino, es opcional si no lo tenemos no es necesario.
Por otro lado, en este ejemplo no vamos a utilizar ningún tipo de código grabado en el Arduino ya que lo utilizamos sin Chip, en otro artículo podremos ver cómo hacerlo con el chip. Si desean verlo pueden buscar en internet “¿cómo conectar Arduino y GSM Shield o SIM800L?” ya que es básicamente lo mismo, pero utilizamos puertos virtuales con la librería “SoftwareSerial”.
El objetivo de Este artículo es utilizar un modem GSM para hacer una llamada o enviar un SMS por la red celular. Entonces vamos a ver cómo ser haría la conexión si fuéramos a usar por ejemplo un SIM800L.

Módulo GSM SIM800L


En la imagen anterior se omitió mostrar la alimentación o la fuente para el módulo, no se puede alimentar directamente desde el Arduino ya que no se le puede sacar los mA (miliampers) necesarios para alimentar el modulo. En algunos blogs muestran que es posible pero lo cierto es que es inestable. Es necesario utilizar una batería externa o fuente para cubrir los picos de consumo, sobre todo cuando está transmitiendo.  En el datasheet del módulo están todos los datos.
El módulo se conecta al Arduino utilizando una conexión UART que es un protocolo de comunicación serial asincrónica. Esto básicamente significa que solo necesitamos 3 cables para realizar la conexión, un pin RX, un pin con TX y GND.  El sistema de comunicación o la tecnología se llama TTL que significa básicamente que las señales digitales manejan el voltaje entre 0 a 5 volts.
La conexión es simple, al conectarlo a un Arduino sin chip y conectar por USB el Arduino a la computadora podemos comunicarnos directamente con el módulo vía monitor Serial. Es decir, si abrimos el monitor Serial del IDE de Arduino y conectamos el módulo en el puerto COM correspondiente y una velocidad de por ejemplo 115200 baudios, el módulo responde. Por ejemplo, escribimos y enviamos “AT” y nos responde con un “Ok”, esto quiere decir que están comunicados. A partir de allí sabemos que el módulo funciona y podemos utilizar todos los comandos.
Si tenemos un conversor UART a USB también podemos probar el módulo SIM800L conectado a la PC de la misma manera que con el Arduino.

Modem GSM con Motorola W375
En el caso particular del Motorola W375, trae puerto “micro USB” es decir que podemos conectarnos con un cable, el teléfono, a la PC. Esto era para descargar imágenes, etc.
Además esto permitía comunicarnos con el puerto de comunicaciones COM. Si tenemos el cable podemos probar la comunicación abriendo el Monitor Serial del IDE Arduino y veremos que cuando nos conectamos a un puerto (115200 baudios) nos muestra un mensaje que dice “AT Command Interpreter”. Es decir que puede interpretar los comandos AT.


Este método no lo podemos utilizar con un Arduino porque no podemos conectarnos vía USB, necesitamos comunicarnos desde el teléfono a los pines del Arduino.
Los celulares GSM viejos venían de fábrica con pines de comunicación solo que no estaban disponibles para el usuario común de una manera sencilla o práctica. Estos pines ,pinouts o puntos de prueba (test points) se usaban por los fabricantes de diferentes maneras, por ejemplo, para desbloquear el terminal, programación, etc.
En nuestro caso disponíamos de un Motorola w375, un hermoso celular que te da mucha nostalgia. En este caso anda perfecto, pero estaba olvidado en algún cajón, decidimos utilizarlo para darle un uso moderno. El único problema es que para este celular no disponíamos mucha información del fabricante ni tampoco encontramos mucha información en internet.
Este tipo de celulares permitía usar estos pines desde el plug o conector de audio, en este caso no fue posible (suponemos que debido a un bloqueo de fabrica o porque un componente se rompió y dejo de funcionar) pero en el esquemático está bien claro que debería ser posible. No quedó más remedio que utilizar los pines de atrás. En otros casos, hay unos ejemplos en internet donde es posible.



En la imagen anterior mostramos la conexión con el plug que en nuestro caso no funciono pero debería funcionar.
Después de un arduo trabajo de investigación logramos conseguir los planos de la placa, con los componentes y un esquemático del circuito electrónico con los datos que necesitamos. En el caso de otros celulares es más sencillo y la información es fácilmente encontrada, la foto con los pines, incluso hay programas para ciertas marcas como Nokia donde nos muestra los pines para cada terminal.
En nuestro terminal, sacando la batería vemos unos pines que están accesibles, pero sin planos es imposible saber que es cada pin, por suerte lo conseguimos y tenemos los 3 pintes que necesitamos, RX, TX y GND.



En la imagen anterior vemos los pines ya identificados detrás de la batería.



Entonces tuvimos que recurrir a un método más invasivo. Tuvimos que desarmar el teléfono para tener un acceso más franco a estos pines. Luego de encontrarlos, y saber la denominación de cada uno, soldamos unos cables para que sea práctico utilizarlos. Hay que asegurar que quede firme, y hay que tener cuidado con las pistas ya que son muy sensibles y si las quemamos no las podemos utilizar más.


Listo, una vez que tenemos todo conectado podemos probar y el teléfono responde frente a los comandos AT, podemos por ejemplo realizar una llamada con los simples comandos.
ATD+”número”; >> llama al número
ATH >> cuelga.
En otro artículo podemos ver la utilidad que se le puede dar a este sistema, como por ejemplo para un avisador de alarmas.



Conclusiones:
En resumen, obtenemos un modem GSM que nos permite una interfaz de comunicación desde nuestro teléfono hasta el sistema que tengamos desarrollado, puede ser una alarma, un control de ingreso, etc.
Lo mejor de todo es que es un sistema barato y confiable, sobre todo lo segundo porque los módulos SIM800L, si no eres un experto, no son tan confiables. El teléfono por si solo gestiona toda la conexión y mantiene la señal para asegurar la conexión a la red celular. En cambio, con el módulo hay que programar todas las posibles situaciones y si queremos escuchar el micrófono o usar el altavoz tenemos que agregar elementos y ni hablar de la antena (elemento crítico).

Referencias:
A continuación, dejamos una lista de enlaces con otros proyectos similares que hemos encontrado.

·         Tutorial: Send SMS from your Arduino using an old Motorola cell phone by Jeff Murchison - http://murchlabs.com/send-sms-from-your-arduino/
·         Arduino hacked ericsson mobile phone GSM remote control by Konstantinos Kokoras - https://www.youtube.com/watch?v=Aeov5kAk6PE
·         Interfacing Old Mobile Phone (Siemens,Nokia,Sony Ericsson) With Pic Or Arduino. (Cheapest GSM Project) by Aymen LACHKHEM - https://letselectronic.blogspot.com/2016/07/interfacing-old-mobile-phone.html

Keys:
·         Enviar SMS con teléfono GSM y Arduino
·         Controlar celular GSM con comandos AT
·         Arduino Hacking GSM phone
·         GSM Phones communication pinouts
·         GSM serial communication (UART-TTL)
·         Send SMS from Arduino using Motorola, Nokia, ZTE, Sony Ericsson, etc.
·         GSM module or GSM caller
·         How To Use An Old Nokia To Send Text Messages From An Arduino
·         How to use Nokia F-bus to send an SMS message


Entradas populares de este blog

Mi primer proyecto IoT con Wemos y Blynk (how to create my first Iot Project)

DIY automatic Pet feeder IoT (alimentador automático de mascotas)