redes de Área local e interconexión de redes · 7. para verificar la conexión pc-módem...

15
1 Los profesores agradecen la colaboración de Vicente Sancho Guijarro en la realización de la práctica. Redes de Área Local e Interconexión de Redes Práctica 5 Control PC de un móvil mediante comandos Hayes (AT+) 1.- Introducción El auge de los últimos años en la telefonía celular permite que hoy en día cualquier usuario pueda comunicarse y conectar con Internet desde prácticamente cualquier punto de nuestra geografía. Los móviles actuales (2.5G, 3G) no solo dan servicio de telefonía, son también agendas, reproductores multimedia, cámara de fotos… y permiten el acceso a Internet a velocidades hasta hace poco reservadas a líneas ADSL. Una utilidad de los móviles actuales poco conocida es la posibilidad que tienen de ser utilizados como módem. Pueden ser usados para transmitir datos de un PC a Internet o a otro móvil utilizando la red celular. Los móviles GSM (denominados de segunda generación o 2G) funcionan como módems de 9.6 Kbps. Una velocidad lenta para los requerimientos actuales, pero suficiente para mandar “pequeños mensajes de texto” o SMS (Small Message System). Más actuales, los móviles 2.5G (GPRS) pueden funcionar como módems de 40Kbps de bajada y 9.6Kbps de subida de datos y los móviles 3G (UMTS) pueden funcionar como módems de hasta 2Mbps en condiciones ideales de funcionamiento.

Upload: others

Post on 21-Apr-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

1 Los profesores agradecen la colaboración de Vicente Sancho Guijarro en la realización de la práctica.

Redes de Área Local e Interconexión de Redes

Práctica 5

Control PC de un móvil mediante comandos Hayes (AT+)

1.- Introducción

El auge de los últimos años en la telefonía

celular permite que hoy en día cualquier usuario pueda comunicarse y conectar con Internet desde prácticamente cualquier punto de nuestra geografía. Los móviles actuales (2.5G, 3G) no solo dan servicio de telefonía, son también agendas, reproductores multimedia, cámara de fotos… y permiten el acceso a Internet a velocidades hasta hace poco reservadas a líneas ADSL.

Una utilidad de los móviles actuales poco conocida es la posibilidad que tienen de ser utilizados como módem. Pueden ser usados para transmitir datos de un PC a Internet o a otro móvil utilizando la red celular.

Los móviles GSM (denominados de segunda generación o 2G) funcionan como módems de 9.6 Kbps. Una velocidad lenta para los requerimientos actuales, pero suficiente para

mandar “pequeños mensajes de texto” o SMS (Small Message System). Más actuales, los móviles 2.5G (GPRS) pueden funcionar como módems de 40Kbps de bajada y 9.6Kbps de subida de datos y los móviles 3G (UMTS) pueden funcionar como módems de hasta 2Mbps en condiciones ideales de funcionamiento.

Redes de Área Local e Interconexión de Redes – DISCA - UPV

2

2.- Objetivos de la práctica

La práctica tiene por objetivo el control módem de un móvil desde un

ordenador personal mediante comandos Hayes. Estos comandos pueden ser enviados al móvil desde el PC mediante un cable, conexión IrDA o mediante enlace inalámbrico BlueTooth. Utilizaremos esta última opción.

Como ejercicio práctico se propone configurar un PC al que se le conecta un sensor/alarma por la puerta paralelo y un móvil (modem) por la puerta BlueTooth. Hay que desarrollar un programa que detecte si salta la alarma del sensor y entonces mandar un SMS a través del módem.

Atención: La realización de esta práctica requiere el uso de un teléfono

móvil. Para algunos ejercicios, no todos, se requiere que el móvil pueda acceder a la red celular (para hacer una llamada, para mandar un SMS, etc.). Estos accesos a la red celular, algunos al menos, tienen un coste económico que DEBE SER ASUMIDO POR EL ALUMNO propietario del móvil. Dado que el laboratorio de redes no proporciona móviles con acceso a la red celular, el alumno es libre de decidir si quiere o no hacer los ejercicios propuestos. Una alternativa razonable, si no se quiere asumir ningún coste económico por error

de programación, es utilizar el móvil habiéndole quitado el módulo SIM

del operador telefónico (no todos los teléfonos móviles son operativos cuando se les quita el SIM).

Redes de Área Local e Interconexión de Redes – DISCA - UPV

3

3.- Conexión PC-móvil y verificación

1. Arranque Windows XP e instale el adaptador BlueTooth en el PC.

XP indicará “Nuevo Hardware encontrado… listo para utilizarse”.

2. Active el BlueTooth en el móvil y seleccione la opción “Teléfono visible”.

3. En el PC; Inicio Configuración Panel de Control Dispositivos BlueTooth. En la pestaña “Dispositivos” pulsar agregar. El PC iniciará un escaneado para ver cuales dispositivos están en sus inmediaciones. Esto puede llevar un par de minutos. Seleccione <su móvil> y pulse siguiente.

4. El asistente para agregar dispositivos BlueTooth le preguntará si quiere/debe utilizar una clave de paso para poder vincular el dispositivo al PC. Utilice una clave de paso. Puede usar la opción “Deseo elegir mi propia clave”. Utilice una clave de al menos 8 dígitos y no utilice secuencias triviales como “12345678”. Tenga en cuenta que en el laboratorio sus compañeros hacen la misma práctica.

5. El móvil le pedirá que introduzca la clave de paso para la vinculación con el PC. Tiene un tiempo limitado para meter la clave (unos 30 segundos). Si todo va bien, el móvil se vincula al PC y este le informa de los puertos serie (COM) asignados al móvil.

Redes de Área Local e Interconexión de Redes – DISCA - UPV

4

No todos los móviles tienen la capacidad de actuar como “modem estándar con vínculo BlueTooth”, que es en nuestro caso el servicio requerido. Y tampoco todos los móviles, aunque den el servicio de “modem estándar”, aceptan todos los comandos Hayes.

6. Para ver si nuestro móvil tiene propiedades de módem: Inicio Configuración Panel de Control Opciones de teléfono y módem. Vamos a la pestaña de Modem. Podemos ver si aparece listado nuestro modem y a que puerta está vinculado. Pulsando en el botón Propiedades y seleccionando la pestaña Diagnóstico podemos pulsar el botón Consultar módem. Esto manda una secuencia de comandos al módem e informa al usuario si los comandos son soportados por el modem.

7. Para verificar la conexión PC-módem utilizaremos el hyperterminal de Windows. Inicio Programas Accesorios Comunicaciones Hyperterminal. Este programa se limita a sacar por la puerta serie lo que tecleemos. Debemos indicar como puerta serie la COMxx de salida asignada al móvil. (ver punto 5). También podemos seleccionar Módem estándar con vínculo BlueTooth del menú desplegable. (ver imagen).

Redes de Área Local e Interconexión de Redes – DISCA - UPV

5

8. Teclee “AT” (sin comillas) y pulse <intro>. El modem debe contestar OK. Puede ser que al pulsar sobre el teclado no tenga eco en la pantalla. Pruebe a teclear “ATE1” <intro> . El modem volverá a contestar OK y activará el “modo ECHO-on”. A partir de ahora podrá ver en la pantalla lo que va tecleando. Si tiene problemas con la comunicación con el móvil a través de esa puerta serie, puede probar alguna de estas opciones:

a. Intente utilizar el otro puerto COM que se asignó a su móvil. Inténtelo también con “modem estándar con vinculo BlueTooth”

b. En Archivo Propiedades vaya al menú desplegable en Conectarse usando y seleccione “Modem estándar con vínculo BlueTooth”. En la misma ventana de diálogo, pulse el botón Configurar… y seleccione como velocidad del puerto 9600 bit/seg. Vuelva a configurar como puerto serie el COM saliente. Intente ahora el comando AT

c. Si el hyperterminal se cuelga en alguna de las pruebas, es muy probable que la puerta COM se quede bloqueada. Re-arranque Windows.

Redes de Área Local e Interconexión de Redes – DISCA - UPV

6

4.- Comandos Hayes

La mayoría de los módems (tanto telefónicos como celulares) se controlan

y responden a caracteres enviados a través del puerto serie. El lenguaje de comandos para módem más extendido es de los comandos Hayes.

Todos los comandos Hayes empiezan con la secuencia AT. La excepción es

el comando A/. Tecleando A/ se repite el último comando introducido. El código AT consigue la atención del módem. Lo que venga a continuación es el comando que el modem debe ejecutar.

Por ejemplo, los comandos: AT+CGMI Pide al móvil que identifique el fabricante AT+CGSN Pide al móvil el número de serie AT+CIMI Pide al móvil el IMSI (International Mobile Subscriber

Identity) (no es el IMEI, el IMEI puede obtenerlo tecleando en el

móvil *#06#)

Ejercicio-1

Pruebe los comandos anteriores tecleándolos en el hyperterminal. Pruebe, además, los comandos: AT+CSQ - Devuelve el estado de calidad de la señal de cobertura. - Sintaxis: AT+CSQ | +CSQ: <rssi>,<ber> <rssi> = 0 indica -113 dBm o menos = 1 indica -111 dBm = 2..30 indica -109..-53 dBm = 31 indica -51dBm o más = 99 indica desconocido <ber> = 99 indica porcentaje desconocido - Respuesta: +CSQ: 13,99 AT+CBC - Devuelve el estado de carga de la batería. - Sintaxis: AT+CBC | +CBC: <bcs>, <bcl> <bcs> = 0 indica que el teléfono está conectado a una batería. <bcl> = 0 indica que el teléfono tiene la batería agotada. = 1..100 indica el porcentaje de carga que aún queda por agotar. - Respuesta: +CBC:0,56 AT+CPBR=<indice inicial> [,<indice final>] - Leer una entrada de la agenda de contactos. - Sintaxis: AT+CPBR=<indice inicial> [,<indice final>] | +CPBR: <índice>, <número>, <tipo>, <texto> <índice> indica el índice de la agenda de contactos.

Redes de Área Local e Interconexión de Redes – DISCA - UPV

7

<número> indica el número de teléfono almacenado en el índice. <tipo> indica el tipo de tipo de número de teléfono. Por defecto, 129 o 145 si incluye el prefijo internacional +. <text> indica el texto asociado al número de teléfono, normalmente, el nombre del contacto. - Respuesta a AT+CPBR=8: +CPBR: 8,"646123456",129,"Gospel"

Ejercicio-2

Atención: El comando a continuación hará que el móvil realice una llamada telefónica. Si no se descuelga el terminal llamado, este ejercicio no supondrá coste económico alguno. En cualquier caso es responsabilidad del propietario del móvil realizar o no este ejercicio. Para el ejercicio se requiere que el móvil esté conectado a una red celular (por lo tanto, debe tener el SIM instalado) ATD<numero> - Inicia una llamada telefónica al número indicado. - Sintaxis: ATD123456789 para una llamada de Datos. ATD123456789; para una llamada de Voz. (Importante la notación ';') ATD>"Pepe"; para llamar al contacto almacenado en la agenda con el texto

asociado Pepe.

Ejercicio-3 Atención. Los comandos a continuación harán que el móvil mande un SMS. El envío de SMSs no es gratuito. El coste depende del operador de telefonía celular. (Coste típico 0,15€). Es responsabilidad del propietario del móvil realizar o no este ejercicio. No todos los móviles aceptan estos comandos. Este ejercicio está probado en un Nokia 6600 y debería funcionar bien al menos en móviles de este fabricante. Con Siemens (modelo SL-55) el ejercicio no funcionó. AT+CMGF=1 {modo texto} AT+CMGS="<num. Teléfono>" {incluya las comillas} > escriba el texto del SMS y termine con <CTRL-Z>

Redes de Área Local e Interconexión de Redes – DISCA - UPV

8

5.- Ejemplo de aplicación práctica

Todas las librerías, programas, y código fuente para la realización de este

ejercicio se encuentran en la web de la asignatura. El objetivo es desarrollar una aplicación que compruebe el estado de un

pin concreto del puerto paralelo de un equipo informático. Cuando este pin se ponga a alto nivel deberá mandar un comando por Bluetooth a un teléfono móvil para que éste realice una llamada.

La solución a este problema podría servir, por ejemplo, para implementar un sistema de alarma, en el cual un sensor estuviera conectado al puerto paralelo y pusiera un pin del puerto paralelo a alto nivel cuando éste se activara. Al activarse el sensor, el teléfono móvil conectado por Bluetooth al ordenador podría llamar a un número, o bien, mandar un mensaje (SMS) al número que le indiquemos para avisarnos de la activación del sensor.

La aplicación LPT1XP

Para simular el sensor y hacerlo más cómodo de activar, se ha utilizado una

aplicación en la cual podemos modificar el estado de los pines de nuestro puerto paralelo sin necesidad de manipularlo físicamente o de conectar algún periférico a él.

Dicha aplicación se llama LPT1XP y tiene licencia freeware, la cual está

descrita en el fichero Licencia.txt que acompaña a la aplicación. Está escrita en Visual Basic y viene acompañada por su código fuente. Para el desarrollo de esta aplicación se ha usado la librería la librería io.dll, que es la misma que se usará en la aplicación a desarrollar, por lo que nos puede servir de ejemplo del uso de esta librería en otro lenguaje de programación como es Visual Basic.

Redes de Área Local e Interconexión de Redes – DISCA - UPV

9

Pantalla principal de LPT1XP

Como muestra la figura, podemos ver el estado de los puertos que

componen el puerto paralelo. Los marcados en verde se corresponden con el puerto de entrada de datos. Podemos cambiar el estado de dichos pines simplemente pulsando sobre ellos.

En la barra de botones nos aparecen tres botones. El primero de ellos, el del

círculo rojo con un aspa roja en su interior, sirve para cerrar el programa. Con el botón de en medio podemos cambiar la visión del puerto paralelo, pudiendo conmutar entre la visión del conector hembra y la del conector macho. En la barra de estado nos aparece cual estamos viendo actualmente. Por último, si pulsamos el botón de la interrogación nos aparecerá ayuda sobre el funcionamiento del puerto paralelo mostrándonos su funcionamiento interno, así como los nombres que se le da a cada uno de los pines.

Explicación de la solución

Para la implementación de la solución se ha optado por usar el lenguaje C

usando para ello la plataforma MS Visual C++ 6.0. Los ficheros de código adjuntados son los siguientes:

• io.h / io.cpp Se trata de una librería usada para la comunicación con los puertos

paralelos y serie desde Windows. En este caso se ha usado únicamente para la comunicación con el puerto paralelo. Para el correcto funcionamiento de la librería, el fichero io.dll debe ubicarse en el directorio C:\Windows\System\ ó bien en la misma carpeta que el ejecutable. Se requieren permisos de administrador para la primera ejecución de esta librería.

• serial.h / serial.cpp Con la ayuda de esta librería se ha accedido al puerto serie virtual

(BlueTooth serializado) que está enlazado al teléfono móvil de una manera fácil. Esta librería puede ser usada tanto desde Windows como desde Linux.

• StdAfx.h / StdAfx.cpp

Redes de Área Local e Interconexión de Redes – DISCA - UPV

10

Esta librería es requerida por io.h y es utilizada durante el precompilado. • Principal.cpp Este fichero contiene el código de la aplicación que a continuación

pasaremos a comentar. Para empezar, se han cargado las librerías necesarias. Las dos primeras ya

se han comentado antes y nos dan la interfaz necesaria para poder comunicarnos con los puertos serie y paralelo de nuestro equipo. La libraría stdio.h es la estándar de entrada/salida y la usamos principalmente para poder mostrar mensajes por pantalla (printf).

#include "io.h" #include "serial.h" #include <stdio.h>

Seguidamente definimos las constantes que usaremos. La primera se corresponde con la dirección base del puerto paralelo, la cual suele ser 0x378. La segunda constante es el nombre del puerto virtual creado para la comunicación Bluetooth. En este caso el puerto era el COM4, pero se deberá cambiar al nombre del puerto asociado al móvil en cada caso, el cual será de la forma COMx.

#define PORTADDRESS 0x378 #define PUERTOBT "COM4"

Ya dentro de la función main, nos disponemos a abrir la comunicación con el puerto paralelo. Para ello llamamos a LoadIODLL(), la cual simplemente carga la librería io.dll, y a isDriverInstalled(), la cual comprueba que el controlador (driver) del puerto paralelo está instalado para que podamos acceder correctamente a él. Si estas dos funciones fallaran, devolverían un 0, por lo que se nos devolvería un error por pantalla y saldría del programa.

if(LoadIODLL() == 0 && IsDriverInstalled() == 0) { printf("\n**ERROR** No se ha podido inicializar el driver."); getchar(); exit(1); }

Si todo ha ido bien, ya podemos leer del puerto paralelo. Para ello usamos la función GetPortBit, la cual recibe como parámetros la dirección base del puerto (PORTADDRESS) y el número de bit de entrada a leer, devolviendo el valor de dicho bit. Devolverá 0 si está activo y -1 si no lo está. En este caso hemos puesto que compruebe el primer bit de entrada (D0).

Nótese que esta comprobación se ejecuta continuamente, ya que está

dentro de un bucle, el cual sólo ejecuta esa comprobación. Cuando se active el bit saldrá del bucle y seguirá avanzando en el código.

printf("Esperando a que se active la entrada 1 del puerto paralelo..."); while(GetPortBit(PORTADDRESS,0) == 0); printf("\nPuerto 0 *ACTIVO*\n");

Una vez ha llegado la activación del bit que interesa, se tiene que abrir el puerto serie dedicado a la conexión Bluetooth y mandar el comando AT

Redes de Área Local e Interconexión de Redes – DISCA - UPV

11

correspondiente. Para abrir el puerto se ha creado un objeto de tipo CSerial, cuya clase está definida en serial.h. En el constructor de dicha clase hay que pasarle dos argumentos. El primero es el nombre del puerto, el cual lo hemos definido en la constante PUERTOBT, y la velocidad del puerto. Al ser una conexión Bluetooth, le podemos poner una velocidad de 115200 bps (B115200).

Una vez abierto el puerto, se llama al método Write del objeto que

acabamos de crear pasándole como argumento la cadena a mandar. En este caso mandamos el comando ATD123; que se encarga de llamar al número 123. De esta forma el móvil se pondrá a llamar al número 123.

printf("\nLlamando..."); CSerial puerto = CSerial(PUERTOBT,B115200); puerto.Write("\nATD123;\r");

Para probar el programa deberemos arrancar primero la aplicación LPT1XP y desactivar todas las entradas del puerto paralelo (D0-D7) ya que por defecto aparecen activadas. Una vez hecho esto ya podemos ejecutar el código explicado. Éste se quedara a la espera de que activemos la entrada D0. Para activarla pinchamos sobre ella (2ª de la fila superior empezando por la derecha) en el programa LPT1XP. Una vez activa observamos que nuestro programa ha salido del bucle y está mandando el comando AT al móvil.

Redes de Área Local e Interconexión de Redes – DISCA - UPV

12

Apéndice-A: Comandos Hayes de Nokia

NOKIA GSM AT COMMAND SET

Call Control ATA Answer Command ATD Dial Command ATH Hang Up Call ATL Monitor Speaker Loudness ATM Monitor Speaker Mode ATO Go On-Line ATP Set Pulse Dial as Default ATT Set Tone Dial as Default AT+CSTA Select Type of Address AT+CRC Cellular Result Codes

Data Card Control Commands ATI Identification ATS Select an S-register ATZ Recall Stored Profile AT&F Restore Factory Settings AT&V View Active Configuration AT&W Store Parameters in Given Profile AT&Y Select Set as s Powerup Option AT+CLCK Facility Lock Command AT+COLP Connected Line Identification Presentation AT+GCAP Request Complete Capabilities List AT+GMI Request Manufacturer Identification AT+GMM Request Model Identification AT+GMR Request Revision Identification AT+GSN Request Product Serial Number Identification

Phone Control Commands AT+CBC Battery Charge AT+CGMI Request Manufacturer Identification AT+CGMM Request Model Identification AT+CGMR Request Revision Identification AT+CGSN Request Product Serial Number Identification AT+CMEE Report Mobile Equipment Error AT+CPAS Phone Activity Status AT+CPBF Find Phone Book Entries AT+CPBR Read Phone Book Entry AT+CPBS Select Phone Book Memory Storage AT+CPBW Write Phone Book Entry AT+CSCS Select TE Character Set AT+CSQ Signal Quality

Computer Data Card Interface Commands ATE Command Echo ATQ Result Code Suppression ATV Define Response Format ATX Response Range Selection AT&C Define DCD Usage AT&D Define DTR Usage

Redes de Área Local e Interconexión de Redes – DISCA - UPV

13

AT&K Select Flow Control AT&Q Define Communications Mode Option AT&S Define DSR Option AT+ICF DTE-DCE Character Framing AT+IFC DTE-DCE Local Flow Control AT+IPR Fixed DTE Rate

Service AT+CLIP Calling Line Identification Presentation AT+CR Service Reporting Control AT+DR Data Compression Reporting AT+ILRR DTE-DCE Local Rate Reporting

Network Communication Parameter Commands ATB Communications Standard Option AT+CBST Select Bearer Service Type AT+CEER Extended Error Report AT+CRLP Radio Link Protocol AT+DS Data Compression

Miscellaneous Commands A/ Re-Execute Command Line AT? Command Help AT*C Start SMS Interpreter AT*T Enter SMS Block Mode Protocol AT*V Activate V.25bis Mode AT*NOKIATEST Test Command AT+CESP Enter SMS Block Mode Protocol

SMS Commands SMS Text Mode AT+CSMS Select Message Service AT+CPMS Preferred Message Storage AT+CMGF Message Format AT+CSCA Service Centre Address AT+CSMP Set Text Mode Parameters AT+CSDH Show Text Mode Parameters AT+CSCB Select Cell Broadcast Message Types AT+CSAS Save Settings AT+CRES Restore Settings AT+CNMI New Message Indications to TE AT+CMGL List Messages AT+CMGR Read Message AT+CMGS Send Message AT+CMSS Send Message from Storage AT+CMGW Write Message to Memory AT+CMGD Delete Message

SMS PDU Mode AT+CMGL List Messages AT+CMGR Read Message AT+CMGS Send Message AT+CMGW Write Message to Memory

Redes de Área Local e Interconexión de Redes – DISCA - UPV

14

Apéndice B: Capacidad de mandar/recibir SMS con comandos AT+

Redes de Área Local e Interconexión de Redes – DISCA - UPV

15

Apéndice C: Referencias

• http://www.activexperts.com/files/activsms/manual.htm#CHAP_GSMOUT SMS and Pager Toolkit by ActiveXperts Software para añadir capacidades de manejo de SMS a aplicaciones

VBasic.NET, C#.NET, Visual C++, ASP.NET, PHP, Java,… • http://foro.elhacker.net/index.php?topic=161120.0 Comandos AT para Nokia 8310. Algunos son específicos de este móvil y sólo

funcionan en él, pero la mayoría son genéricos y funcionan en la mayoría de los móviles con BlueTooth.

• http://www.solocodigo.com/index.php?opt=viewitem&id=339&type=1&n

ode=27 Programa LPT1XP