Posicionador Satelital

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 124

Universidad Tecnolgica Nacional

Facultad Regional Villa Mara

Posicionador Satelital
Comunicado Por Telefona Celular
Ricardo Romitelli

Ctedra de Proyecto Final - 2006

Posicionador Satelital
Comunicado Por Telefona Celular

Ricardo Romitelli
Departamento de Ingeniera Electrnica
Ctedra de Proyecto Final
Universidad Tecnolgica Nacional
Facultad Regional Villa Mara

2006

ndice de contenidos

1. PRLOGO ................................................................................................................... 1
1.1. Objetivos generales................................................................................................................................................ 1
1.2. Esquema general del proyecto.............................................................................................................................. 2

2. SISTEMA GPS ............................................................................................................ 3


2.1. Introduccin........................................................................................................................................................... 3
2.2. Configuracin del sistema..................................................................................................................................... 4
2.2.1. Segmento espacial ........................................................................................................................................... 4
2.2.2. Segmento de control ........................................................................................................................................ 5
2.2.3. Segmento del usuario....................................................................................................................................... 5
2.3. Principio de funcionamiento................................................................................................................................. 6
2.4. Seales del sistema GPS ........................................................................................................................................ 9
2.4.1. Frecuencias duales L1 y L2............................................................................................................................... 9
2.4.2. Tratamiento de la seal GPS. Proceso de adquisicin. .................................................................................. 10
2.4.3. Tratamiento de la seal GPS. Proceso de seguimiento. ................................................................................. 10
2.4.4. Fuentes de error en la seal............................................................................................................................ 10
2.5. Referencias bibliogrficas................................................................................................................................... 11

3. MDULO RECEPTOR GPS FV-12 ........................................................................... 12


3.1. Introduccin......................................................................................................................................................... 12
3.2. Receptores GPS ................................................................................................................................................... 12
3.3. Receptor FV-12.................................................................................................................................................... 14
3.4. Antena .................................................................................................................................................................. 17
3.5. Referencias bibliogrficas................................................................................................................................... 18

2006

Posicionador Satelital Comunicado Por Telefona Celular

Posicionador Satelital
Comunicado Por
Telefona Celular

4. PROTOCOLO NMEA 0183........................................................................................ 19


4.1. Introduccin......................................................................................................................................................... 19
4.2. Interfaz Elctrica ................................................................................................................................................. 20
4.3. Definiciones .......................................................................................................................................................... 22
4.4. Estructura general de las sentencias .................................................................................................................. 23
4.5. Sentencias ............................................................................................................................................................. 25
4.5.1 GGA ............................................................................................................................................................... 26
4.5.2 RMC ............................................................................................................................................................... 27
4.5.3 GSV ................................................................................................................................................................ 28
4.5.4 GSA ................................................................................................................................................................ 29
4.5.5 GLL ................................................................................................................................................................ 30
4.5.6 VTG................................................................................................................................................................ 30
4.6. Referencias bibliogrficas................................................................................................................................... 31

5. TELEFONA CELULAR ............................................................................................. 32


5.1. Introduccin......................................................................................................................................................... 32
5.2. Tecnologa celular................................................................................................................................................ 33
5.2.1. Red celular ..................................................................................................................................................... 33
5.2.2. Sistema GSM ................................................................................................................................................. 34
5.2.3. SMS ............................................................................................................................................................... 35
5.3. La unidad telefnica mvil.................................................................................................................................. 37
5.3.1. Estructura general .......................................................................................................................................... 37
5.3.2. Conectividad .................................................................................................................................................. 38
5.3.3. Eleccin de la unidad telefnica .................................................................................................................... 39
5.4. Referencias bibliogrficas................................................................................................................................... 39

6. PROTOCOLO F-BUS DE NOKIA.............................................................................. 40


6.1. Introduccin......................................................................................................................................................... 40
6.1.1. Estableciendo la comunicacin con el celular ............................................................................................... 41
6.1.2. Los comandos F-BUS ...................................................................................................................................... 41
6.2. Versin de hardware y software......................................................................................................................... 42
6.3. Estructura general de las tramas F-BUS ............................................................................................................. 45
6.4. Estado de batera del telfono mvil .................................................................................................................. 47
6.5. Instrucciones SMS ............................................................................................................................................... 48
6.5.1. Empaquetado de SMS.................................................................................................................................... 48
6.5.2. Envo de SMS ................................................................................................................................................ 51
6.5.3. Lectura de los SMS guardados en el telfono................................................................................................ 53
6.6. Otras instrucciones.............................................................................................................................................. 57
6.6.1. IMEI .............................................................................................................................................................. 57
6.6.2. Operador de servicio...................................................................................................................................... 57
6.6.3. Agenda........................................................................................................................................................... 58

2006

ndice de contenidos

II

Posicionador Satelital
Comunicado Por
Telefona Celular

6.7. Mtodo de determinacin de instrucciones ....................................................................................................... 59


6.8. Cable de datos F-BUS ........................................................................................................................................... 61
6.9. Referencias ........................................................................................................................................................... 62
6.9.1. Referencias bibliogrficas.............................................................................................................................. 62
6.9.2. Software......................................................................................................................................................... 62

7. UNIDAD MVIL ......................................................................................................... 63


7.1. Introduccin......................................................................................................................................................... 63
7.2. Bloque de control................................................................................................................................................. 64
7.2.1. PIC 16F877.................................................................................................................................................... 64
7.2.2. Configuracin inicial ..................................................................................................................................... 65
7.2.3. Comunicacin serial ...................................................................................................................................... 66
7.2.4. Base de tiempo............................................................................................................................................... 69
7.3. Bloque de visualizacin ....................................................................................................................................... 71
7.4. Software del microcontrolador........................................................................................................................... 74
7.5. Referencias ........................................................................................................................................................... 83
7.5.1. Referencias bibliogrficas.............................................................................................................................. 83
7.5.2. Software......................................................................................................................................................... 83

8. APLICACIN DE VISUALIZACIN EN PC .............................................................. 84


8.1. Introduccin......................................................................................................................................................... 84
8.2. Entorno de programacin y bases de datos....................................................................................................... 85
8.2.1. Principales caractersticas de DELPHI ............................................................................................................ 85
8.2.2. La estructura de un proyecto de aplicacin.................................................................................................... 85
8.2.3. Bases de datos Paradox.................................................................................................................................. 86
8.3. Descripcin de la aplicacin................................................................................................................................ 89
8.3.1. Formulario principal ...................................................................................................................................... 89
8.3.2. Conexin con el celular ................................................................................................................................. 91
8.3.3. Recepcin de SMS......................................................................................................................................... 95
8.3.4. Formulario secundario ................................................................................................................................... 98
8.4. Referencias ......................................................................................................................................................... 106
8.4.1. Referencias bibliogrficas............................................................................................................................ 106
8.4.2. Software....................................................................................................................................................... 106

2006

ndice de contenidos

III

Posicionador Satelital
Comunicado Por
Telefona Celular

9. ANLISIS DE COSTO ............................................................................................. 107


9.1. Introduccin....................................................................................................................................................... 107
9.2. Costos de la telefona celular ............................................................................................................................ 107
9.3. Costo de la unidad mvil................................................................................................................................... 108
9.4. Costo de la unidad fija ...................................................................................................................................... 108
9.5. Clculo del costo total ....................................................................................................................................... 109
9.6. Referencias ......................................................................................................................................................... 109

10. CONCLUSIONES .................................................................................................. 110


10.1. Desempeo del equipo ..................................................................................................................................... 110
10.2. Tareas pendientes ............................................................................................................................................ 113
10.3. Conclusiones finales......................................................................................................................................... 115

2006

ndice de contenidos

IV

Posicionador Satelital
Comunicado Por
Telefona Celular

2006

ndice de contenidos

1
Prlogo
1.1. Objetivos generales
El propsito del presente proyecto es desarrollar un sistema que permita la localizacin de un
vehculo dentro del rea urbana local, esto es en el radio que abarcan las vecinas localidades de
Villa Mara y Villa Nueva. Para ello se utilizan las seales brindadas por la red de satlites GPS
(Global Positioning System) las cuales son tomadas por un pequeo mdulo desarrollado para
captar y decodificar dichas seales. A su vez, se utiliza el sistema de mensajera de la red de
telefona celular GSM para la transmisin de los datos recogidos por el mdulo GPS situado en el
vehculo hacia un sitio fijo en donde dicha informacin de posicin es transformada en un punto
sobre un plano de un programa informtico.

Figura 1: Plano e imagen satelital de las ciudades de Villa Mara y Villa Nueva.

El grueso del trabajo consiste entonces en la conversin de datos entre un bloque y otro del
proyecto para lo que se utilizar un circuito basado en un microcontrolador para la unidad mvil,
y una aplicacin desarrollada en lenguaje DELPHI para la unidad fija.
Las motivaciones del desarrollo de este proyecto son las de poder brindarle a los pequeos y
medianos comercios y empresas de servicios locales, una alternativa tecnolgica de
aprovechamiento logstico de sus unidades, permitiendo una mejor distribucin geogrfica de los
mviles lo que trae aparejado un ahorro de tiempo de las tareas que realizan y un ahorro de dinero
por el menor kilometraje desarrollado ante una buena planificacin de los recorridos a seguir, por
el conocimiento preciso de la posicin del vehculo a lo largo de la jornada laboral. Claro est
que, con el uso de este tipo de aplicacin, los principales beneficiados son los clientes o usuarios
2006

Posicionador Satelital Comunicado Por Telefona Celular

Posicionador Satelital
Comunicado Por
Telefona Celular

finales del servicio, por las menores demoras en la llegada de su solicitud. Supongamos por
ejemplo, que el sistema es aplicado a una compaa de taxis: el operador de la oficina central,
ante la solicitud de un determinado cliente, puede optar rpidamente por el vehculo que se
encuentra en el lugar ms cercano al usuario, con solo echar un vistazo a la pantalla de una
computadora.
De modo adicional, con un desarrollo un poco ms cuidadoso del proyecto (algo que en principio
excede los alcances de este trabajo), el sistema puede ser utilizado como elemento de seguridad
para aquellas empresas que transportan elementos valiosos o que desarrollan su actividad en
condiciones de riesgo.

1.2. Esquema general del proyecto


Red GPS

Red GSM

Mdulo
GPS

Celular

Celular

Cable
de datos

Circuito con
microcontrolador

Programa de
visualizacin

Unidad mvil
Figura 2: Diagrama de bloques del trabajo.

Antes de la descripcin del trabajo en concreto, se expone en este informe las principales
caractersticas de los sistemas GPS y de telefona celular, as como los correspondientes
protocolos utilizados para el vnculo entre las partes.

2006

Prlogo

2
Sistema GPS
2.1. Introduccin
El Sistema de Posicionamiento Global (Global Positioning System) es un mtodo de navegacin
basado en satlites, adoptado a partir de una red de 24 satlites localizados en rbita por el
Departamento de Defensa de los Estados Unidos. Originalmente fue proyectado para aplicaciones
militares, pero a principio de la dcada de 1980, el gobierno lo hizo disponible para usos civiles.
El sistema trabaja bajo cualquier condicin climtica, en cualquier lugar del mundo, las 24 horas
del da y no tiene tarifa de suscripcin ni cargos por establecimiento al uso del GPS.
Los satlites GPS circundan la tierra dos veces al da en rbitas muy precisas, transmitiendo
seales de informacin. Los receptores toman dicha informacin y triangulan los datos para
calcular la localizacin exacta del usuario. Esencialmente, los receptores GPS comparan el tiempo
en que la seal fue transmitida por un satlite con
el tiempo en que la seal fue recibida. La
diferencia entre estos tiempos le informa al
receptor cuan alejado del satlite est. Con la
medida de distancia de algunos satlites ms,
puede determinar la posicin del usuario.
Un receptor GPS debe estar enlazado en la seal
de al menos tres satlites para calcular la posicin
en dos dimensiones (latitud y longitud) y la traza
del movimiento. Con cuatro o ms satlites a la
vista, el receptor puede determinar la posicin 3D
(latitud, longitud y altitud) del usuario. Una vez
obtenida la posicin, la unidad GPS puede
calcular otra informacin tal como velocidad,
curso, distancias, etctera.
Hoy en da los receptores GPS son extremamente
precisos, gracias a su diseo multi-canal en
paralelo,
enganchndose
rpidamente
al
encenderse y manteniendo la recepcin de la
seal an bajo denso follaje o edificaciones
urbanas elevadas, aunque ciertos factores
atmosfricos como la lluvia, y otras fuentes de
error, pueden afectar su precisin.
2006

Posicionador Satelital Comunicado Por Telefona Celular

Posicionador Satelital
Comunicado Por
Telefona Celular

2.2. Configuracin del sistema


2.2.1. Segmento espacial
Los 24 satlites del sistema GPS orbitan la tierra a una altura aproximada de 20000 kilmetros.
Tienen una inclinacin respecto al plano del ecuador de 55. Las rbitas de los satlites son casi
circulares, con una excentricidad de 0,03 a 0,3. La separacin entre las rbitas es de 60. Estn
constantemente en movimiento, su perodo es de 11 horas con 58 minutos, viajando a velocidades
superiores a los 11000 kilmetros por hora.
Al principio se pens que slo eran necesarios 18 satlites (ms 3 de emergencia por si acaso
alguno fallaba). Sin embargo ms tarde se comprob que con este nmero la cobertura en algunos
puntos de la superficie terrestre no era buena. As pues se pasaron a utilizar 21 satlites (ms 3 de
reserva como antes) repartidos en 6 rbitas, de forma que hay 4 satlites por rbita. El sistema
est diseado de tal forma que sobre cualquier punto de la superficie terrestre se ven al menos 4
satlites.

Figura 1: Constelacin GPS.

Estos satlites estn alimentados por energa solar, aunque tienen respaldo de batera para
mantenerlos funcionando cuando estn eclipsados. Su potencia de transmisin es de solo 50
vatios, o menos. El peso de los satlites GPS es de 900 kilogramos y el largo, incluyendo los
paneles solares, es de 5 metros. Tienen pequeos cohetes impulsores que los mantienen volando
en el camino correcto. El primero fue lanzado en 1978 y tienen una vida cercana a los 10 aos.
Cada satlite est equipado con receptores y emisores de ondas de radio que transmiten con una
frecuencia de entre 1200-1500 MHz. Las ondas de radio viajan a la velocidad de la luz
(300.000.000 m/s) en el vaco, y disminuyen su velocidad cuando atraviesan la atmsfera
terrestre. La antena de cada satlite es un array helicoidal con polarizacin derecha y ganancia de
15 dB.
Los satlites tambin estn equipados con relojes atmicos, que mantienen el tiempo en base a
vibraciones naturales peridicas dentro de los tomos. Estos relojes increblemente precisos son
un componente crtico que hacen posible el uso de satlites para navegacin y mapeo. Cada
satlite cuenta con cuatro relojes, dos de cesio y dos de rubidio, a pesar de que uno sera
suficiente, de esta forma se evita el riesgo de rotura o prdida de precisin por alguno de los
relojes.
2006

Sistema GPS

Posicionador Satelital
Comunicado Por
Telefona Celular

2.2.2. Segmento de control


Existe una estacin maestra de control sita en Colorado Spring (USA), que se encarga de calcular
las efemrides de cada uno de los satlites.
Hay tambin, tres estaciones de carga situadas en las islas Diego Garca (ocano ndico),
Ascensin (ocano Atlntico) y Kwajalein (ocano Pacfico), las cuales transmiten mensajes de
navegacin y reciben las seales que los satlites envan a estas estaciones, empleando la banda S
(canal ascendente: 1783.74MHz, canal descendente: 2227.5 MHz)

Figura 2: Red de control del sistema GPS.

Adems hay cinco estaciones monitoras que se encuentran en Hawaii y Colorado Spring, y
controlan el estado y posicin de los satlites. Reciben las seales transmitidas por los satlites y
a partir de ellas obtienen informacin que es transmitida a la estacin maestra de control, la cual
se encarga en calcular las efemrides y obtener as la posicin de los satlites.

2.2.3. Segmento del usuario


Este segmento est formado por los receptores GPS. Entre sus principales funciones se
encuentran las de sintonizar las seales emitidas por los satlites, decodificar el mensaje de
navegacin, medir el retardo de la seal, a partir de los cuales calculan la posicin, presentar la
informacin de la posicin en la que se encuentra (en 3D o en 2D); adems de otras funciones
complementarias como: presentacin ms sofisticada (sobre mapas), ayuda en la navegacin,
almacenamiento de datos, etctera.
Las principales caractersticas de estos dispositivos son:

Determinacin de la posicin en menos de tres minutos.

Actualizaciones de la posicin de 0,5 a 1 segundo.

Precisin en la posicin en torno a los 15 metros.

Medida de la velocidad del usuario con una precisin de 0,1 m/s aproximadamente.

Referencia temporal con precisin de 100 ns aproximadamente.

2006

Sistema GPS

Posicionador Satelital
Comunicado Por
Telefona Celular

2.3. Principio de funcionamiento


El sistema GPS se basa en la medida simultnea de la distancia entre el receptor y al menos cuatro
satlites para el posicionamiento en tres dimensiones. Las distancias entre el receptor y el satlite
se obtienen por medio del retardo temporal entre que el satlite enva la seal hasta que el
receptor la recibe.
Los satlites emiten dos portadoras a la misma frecuencia. Estas portadoras estn moduladas en
fase (BPSK) por diferentes cdigos pseudo-aleatorios. El receptor GPS calcula la correlacin
entre el cdigo recibido y el cdigo del satlite cuya seal pretende detectar, de esta forma se
pueden separar las seales de los diferentes satlites, y finalmente se obtiene el retardo temporal.
Cuando un receptor quiere averiguar su posicin se comunica con un satlite y deduce que la
distancia que los separa es de 20400 km, por ejemplo. Esto significa que el receptor se encuentra
en algn punto de la superficie de una esfera con centro en el satlite y un radio de 20400 km.

Figura 2: El receptor est en algn lugar sobre la superficie de la esfera.

Si simultneamente se conoce la distancia a un segundo satlite, de por ejemplo 22200 km se


reduce la localizacin del receptor a un crculo en la interseccin de las 2 esferas.

Figura 3: Dos mediciones ubican al receptor en algn punto del crculo de intercepcin.

2006

Sistema GPS

Posicionador Satelital
Comunicado Por
Telefona Celular

Si se realiza la medicin de distancia desde un tercer satlite se reduce la ubicacin posible del
receptor a dos puntos en el espacio, dnde la tercera esfera intercepta el crculo formado por la
primera con la segunda. Para decidir cul de esos dos puntos es la ubicacin correcta hay dos
opciones: o hacer una cuarta medicin desde otro satlite o hacer una suposicin.

Figura 4: Tres mediciones ubican al receptor en uno de dos puntos.

Generalmente uno de los dos puntos es una ubicacin ridcula, o no se encuentra sobre la
superficie terrestre o tiene una velocidad imposiblemente alta. Los programas dentro de los
receptores de GPS tienen varias tcnicas para distinguir el punto correcto del que no lo es.
Aunque bastara con solo tres satlites para determinar la posicin, esto exigira una precisin
muy buena y una gran estabilidad de los relojes, tanto del satlite como del receptor. Si bien los
satlites cumplen estas dos condiciones, pues incorporan un reloj atmico (que son muy precisos
y muy estables), este no es el caso de los receptores puesto que su precio sera desorbitado.
La solucin a este problema es introducir una nueva incgnita en el sistema, debido a la deriva
que existe entre el reloj del satlite y el reloj del usuario, por lo que se utilizan cuatro satlites.
Si llamamos Ri a la distancia entre el satlite i, y el receptor; la distancia real es:
Ri = t c
Si Ri es la pseudo-distancia que mide el receptor, tenemos que:
Ri = tmedido c
Donde el tiempo medido es:
tmedido = t +
Como la pseudo-distancia es la distancia real ms la deriva entre relojes, tenemos:
Ri = Ri +
Siendo el error producido por la deriva existente entre el reloj del satlite y el reloj del receptor:
=c
As pues, la distancia real (que es la que nos interesa) es:
Ri = Ri c
2006

Sistema GPS

Posicionador Satelital
Comunicado Por
Telefona Celular

Si las coordenadas (xi,yi,zi) para cuatro satlites son conocidas, tenemos un sistema de cuatro
ecuaciones con cuatro incgnitas de la siguiente forma:
(x1 Ux)2 + (y1 Uy)2 + (z1 Uz)2 = (R1 c )2
(x2 Ux)2 + (y2 Uy)2 + (z2 Uz)2 = (R2 c )2
(x3 Ux)2 + (y3 Uy)2 + (z3 Uz)2 = (R3 c )2
(x4 Ux)2 + (y4 Uy)2 + (z4 Uz)2 = (R4 c )2
Siendo (Ux, Uy, Uz) las coordenadas de la posicin del receptor y la cuarta incgnita a
determinar con los datos del cuarto satlite.
(x2,y2,z2)
(x1,y1,z1)

(x3,y3,z3)
(x4,y4,z4)

(Ux,Uy,Uz)
Figura 5: Coordenadas de posicionamiento.

Si hay ms de cuatro satlites visibles se calculan las pseudo-distancias respecto a todos los
satlites visibles, obteniendo as un sistema con ms ecuaciones que incgnitas, lo que simplifica
el clculo de la posicin. El sistema est diseado para que sobre cualquier punto de la superficie
terrestre haya al menos cuatro satlites visibles. El sistema GPS adems de la posicin nos ofrece
una referencia temporal muy exacta, esto permite:

Sincronizar los relojes locales (lo que tiene muchas aplicaciones, como la sincronizacin
en transmisiones).
Medir la velocidad a la que se desplaza el usuario a travs del desplazamiento Doppler. En
GPS, este trmino hace referencia al cambio aparente de la frecuencia de una seal por
causa del movimiento relativo de la fuente de emisin con respecto al receptor. Si el
emisor se desplaza hacia el receptor, la frecuencia aparenta ser menor; si el emisor se aleja
del receptor, la frecuencia aparenta ser mayor.

Algunos detalles del sistema GPS:

2006

El sistema GPS requiere sistemas de medidas de retardo muy precisos.


El reloj del satlite tambin puede sufrir alguna deriva (al cabo de varios aos). El GPS
enva al receptor una serie de modelos para corregir estas derivas.
Puede suceder que el receptor slo sea capaz de recibir las seales de 3 satlites. En este
caso se pide al usuario que introduzca la altura y se emplea el GPS en 2D.
La seal tarda unas centsimas de segundo en llegar al receptor, la posicin del satlite
que hay que considerar para calcular la posicin del usuario es la que tena en el momento
de transmitir la seal.
Sistema GPS

Posicionador Satelital
Comunicado Por
Telefona Celular

2.4. Seales del sistema GPS


2.4.1. Frecuencias duales L1 y L2.
Los satlites GPS transmiten dos seales radioelctricas de baja potencia, denominadas L1 y L2,
en la banda UHF. Las seales viajan a travs de la lnea visual, pasando a travs de nubes, vidrios
y plsticos, pero no a travs de objetos ms slidos como edificaciones y montaas.
Una seal GPS contiene tres tipos diferentes de informacin binaria que son: un cdigo pseudoaleatorio, datos de efemrides y datos de calendario. El cdigo pseudo-aleatorio es simplemente
un cdigo de identificacin del satlite transmisor. Los datos de efemrides le informan al
receptor GPS donde estar cada satlite en cualquier momento del da. Cada satlite transmite su
propia informacin de efemrides y de todos los dems satlites del sistema. Los datos de
calendario, transmitidos constantemente por cada satlite, contienen informacin importante
acerca del estado del satlite, adems de la fecha y hora actuales. Esta es la parte esencial de la
seal utilizada para determinar la posicin del receptor.
Para poder calcular el tiempo de viaje de la seal de radio, tanto el satlite como el receptor
generan cdigos sincronizados. Esto es que ambos generan el mismo cdigo al mismo tiempo.
Entonces cuando llega una onda al receptor este determina el tiempo transcurrido desde que ste
gener el mismo cdigo. La diferencia de tiempo es lo que tard la onda en llegar.
Tanto el satlite como el receptor generan un juego de cdigos digitales que responden a un
criterio binario. Ese juego de cdigos digitales llevan el nombre de pseudo-aleatorios y estn
diseados de forma tal que puedan ser fcilmente comparados, en forma rpida y sin
ambigedades. La secuencia pseudo-aleatoria se repite en el orden de los milisegundos.
El elemento clave de la precisin del sistema, es el hecho de que los componentes de la seal
estn controlados por relojes atmicos muy precisos. Estas normas de frecuencia altamente
precisas, presentan su frecuencia fundamental en la banda L (10,23Mhz). A partir de esta
frecuencia fundamental, se derivan coherentemente dos seales, las ondas de portadora L1 y L2,
que se generan multiplicndolas por 154 y 120 respectivamente, con lo que producen:
L1 = 1.575,42 Mhz (19 cm)
L2 = 1.227,60 Mhz (24 cm)
Estas frecuencias duales son esenciales para eliminar el error causado por la refraccin
ionosfrica. Las pseudo-distancias que se obtienen a partir del tiempo de viaje de la seal, medido
desde cada satlite al receptor, emplean dos cdigos de ruido pseudo-aleatorios (PRN) modulados
(sobrepuestos) sobre las frecuencias L1 y L2.
Existen adems, dos cdigos que viajan a travs de dichas frecuencias. El primer cdigo es el C/A
(cdigo de adquisicin imprecisa), designado tambin como servicio estndar de determinacin
de la posicin (SPS: Standard Position Service); que se dispone para usos civiles. Este cdigo
tiene una longitud de onda de 293,1 metros y est modulado solamente sobre L1, omitido a
propsito de L2.
El segundo es el cdigo P (cdigo de precisin), tambin designado como servicio preciso de
determinacin de la posicin (PPS: Precise Position Service), reservado para uso militar
estadounidense y para otros usuarios autorizados. Este cdigo tiene una longitud de onda de 29,31
metros y est modulado sobre ambas portadoras L1 y L2.

2006

Sistema GPS

Posicionador Satelital
Comunicado Por
Telefona Celular

2.4.2. Tratamiento de la seal GPS. Proceso de adquisicin.


Al encender el receptor GPS ste puede encontrarse en dos estados distintos:
Perdido (el calendario tiene una fecha muy antigua). El aparato prueba con distintos
satlites hasta que reciba una seal con una relacin seal-ruido aceptable. Cuando logra
engancharse con un satlite, de-modula el mensaje de navegacin y consigue as el
calendario y la referencia temporal GPS. Esta fase de prueba y error puede durar hasta
unas decenas de minutos.
Memorizado (hace poco que hemos usado el aparato GPS y el calendario almacenado
sirve para saber la posicin de todos los satlites) El aparato se engancha con los cuatro
satlites que tiene visibles.
Cuando el receptor ya est enganchado con un satlite se asigna el canal/es a los cdigos de los
satlites que estn visibles y se inicia el proceso de enganche con cada satlite.

2.4.3. Tratamiento de la seal GPS. Proceso de seguimiento.


Cuando el receptor est sincronizado con dada uno de los satlites, tras realizar la correlacin,
detecta los picos que superan un determinado umbral en cada seal y a partir de ellos obtiene el
retardo temporal y con esto la ecuacin de un esferoide donde est el usuario. Repitiendo este
proceso para cuatro satlites, el receptor obtiene la posicin del usuario.
Luego, el dispositivo debe seguir los picos que superan el umbral para ver como vara esa
distancia. A esto se le llama lazo de seguimiento al cdigo. Tambin hay un lazo de seguimiento a
la portadora. Este tiene como misin estar continuamente enganchado a las portadoras que emite
el satlite.

2.4.4. Fuentes de error en la seal


Los factores que pueden degradar la seal GPS y afectar la precisin del sistema son los
siguientes:

Retardos en la ionosfera y en la troposfera. La seal satelital se desacelera en su paso por


la atmsfera. El sistema GPS utiliza un modelo integrado que calcula una cantidad
promedio de retardo para corregir parcialmente este tipo de error.

Seal de trayectoria mltiple. Este error ocurre cuando la seal GPS es reflejada por
superficies naturales elevadas o edificaciones antes de llegar al receptor, incrementando el
tiempo de viaje de la seal.

Errores en el reloj del receptor. El reloj integrado del receptor no es tan preciso como los
relojes atmicos satelitales, en consecuencia puede haber ligeras diferencias temporales.

Errores orbitales o de efemrides. Son imprecisiones en la localizacin reportada por los


satlites.

Cantidad de satlites visibles. Cuanto ms sean los satlites que un receptor pueda ver,
mayor ser su precisin. El terreno, las edificaciones, interferencia electrnica o el follaje
denso puede bloquear la recepcin de la seal, provocando errores en la posicin.
Generalmente las unidades GPS no operan en interiores, debajo del agua o bajo tierra.

2006

Sistema GPS

10

Posicionador Satelital
Comunicado Por
Telefona Celular

Geometra satelital/oscurecimiento. Se refiere a la posicin relativa de los satlites en un


momento dado. La geometra ideal ocurre cuando los satlites estn localizados en
ngulos amplios en relacin a los dems. Se presenta una geometra pobre cuando los
satlites estn localizados en lnea o en un agrupamiento estrecho.

Degradacin intencional de la seal satelital. La disponibilidad selectiva o selective


availability (SA) es una degradacin intencional de la seal impuesta por el Departamento
de Defensa de Estados Unidos, proyectada para prevenir el uso militar de las seales
altamente precisas por sus adversarios. El gobierno estadounidense desactiv la SA en
mayo del 2000, lo que mejor significativamente la precisin de los receptores GPS de
uso civil.

2.5. Referencias bibliogrficas


Jess ngel del Pozo Domnguez, Sistema NAVSTAR-GPS,
http://www.tel.uva.es/personales/jpozdom/telecomunicaciones/portadagps.html,
1998.
Garmin International Inc., What is GPS?, www.garmin.com, 1996-2006.
Axel von Martn, Mario Bragachini, Agustn Bianchini, Sistemas de Posicionamiento,
www.agriculturadeprecision.org, Proyecto Agricultura de Precisin INTA
Manfredi, 2004.
Instituto Nacional de Estadstica Geogrfica e Informtica (Mxico), Sistema de
Posicionamiento Global (GPS), http://www.inegi.gob.mx, 2006.
Gabriel Ortiz, Diccionario de Sistemas de Informacin Geogrfica, www.gabrielortiz.com,
2003-2006.
Ferrel G. Stremler, Introduccin a los Sistemas de Comunicacin, Ed. Addison-Wesley
Iberoamericana, Tercera edicin 1993.

2006

Sistema GPS

11

3
Mdulo Receptor GPS FV-12
3.1. Introduccin
Los avances recientes en la tecnologa del silicio y del software, han permitido el desarrollo de
receptores GPS muy pequeos y de bajo costo. Uno de estos dispositivos es la placa GPS de doce
canales modelo FV-12, de San Jose Navigation Inc.
Este mdulo GPS de alto desempeo, incluye una sealizacin de tiempo real de un pulso por
segundo, comunicacin serie de velocidad elegible, entrada para GPS diferencial, salida NMEA
0183 y memoria no voltil.
Su forma de conectar es sumamente simple. Un conector de veinte pines contiene todas las
conexiones elctricas necesarias para la interfase principal. Para obtener un correcto
posicionamiento, solo se requiere conectar 0 VDC, 5 VDC, y la salida de informacin (TXA).
Como todo GPS, requiere de una antena, que en este caso es pasiva, y algo ms pequea que el
mismo GPS. Tiene en su parte inferior, un potente imn, el cual permite fijar la antena a la
carrocera del vehculo, quedando a la intemperie sin ningn tipo de inconveniente.

3.2. Receptores GPS


Desde que se lanzaron los primeros satlites GPS, numerosas compaas han estado trabajando
para reducir el tamao y el costo de estos complejos receptores, preparndolos para su eventual
integracin en un gran nmero de aplicaciones en donde la posicin y/o el tiempo deban ser
determinados. Desde los primeros dispositivos de principio de la dcada de 1980, la tecnologa ha
progresado hasta el punto en que pueden obtenerse receptores multi-canales del tamao de una
tarjeta de crdito a un precio relativamente bajo.
La seal GPS C/A (descripta en el captulo anterior) es transmitida en los 1575,42 MHz y llega a
la tierra con un nivel de potencia mnimo, de -10 dBm. Es una seal espectro ensanchado
modulada con un cdigo pseudo-aleatorio de 1023 MHz, especfico de cada satlite.
Adicionalmente, se le suma un flujo de datos de 50 bps para transmitir la posicin del satlite, el
tiempo de transmisin, y todos los datos necesarios para que el receptor calcule su posicin.
Los receptores GPS actuales incluyen entre ocho y doce canales. Generalmente estos canales
estn dinmicamente asignados dependiendo del nmero de satlites a la vista, como as tambin
de la funcin que est realizando el GPS.
El diagrama de bloques de la figura 1, en la pgina siguiente, indica los componentes tpicos de
los receptores GPS actuales.
2006

Posicionador Satelital Comunicado Por Telefona Celular

12

Posicionador Satelital
Comunicado Por
Telefona Celular

Estos receptores estn basados en un juego de chips SiRFstarI/LX, compuesto de un reductor de


frecuencia integrado (GRF1, figura 2) seguido de un ASIC DSP adaptado especficamente
(GSP1/LX, figura 3). El DSP realiza la traduccin final a la banda base, la generacin de los
cdigos PRN, la correlacin y diversos controles adicionales. El microprocesador corre el cdigo
que le entrega el DSP e implementa el canal de rastreo, las funciones de de-modulacin de datos y
los clculos de navegacin.

Figura 1: Diagrama de bloques de un receptor GPS.

Figura 2: GRF1.

2006

Figura 3: GSP1/LX.

Mdulo Receptor GPS FV-12

13

Posicionador Satelital
Comunicado Por
Telefona Celular

El tiempo necesario para llegar al primer valor de posicin, luego de encendido el receptor, se
denomina TTFF por Time To First Fix. Para llegar a un menor TTFF, los receptores GPS
requieren la posicin de los satlites en funcin del tiempo (el calendario), la hora aproximada
(para saber donde deberan estar los satlites en el momento del encendido), y una estimacin de
la posicin del usuario (usada para saber que satlites deberan estar a la vista). En un receptor
GPS tpico estos parmetros almacenados en la memoria RAM, junto con un reloj en tiempo real
(RTC), permiten el TTFF ms corto.
El juego de chips SiRFstar incluyen varias caractersticas que le permiten combatir las
dificultades en la recepcin de las seales satelitales debidas a las caractersticas del entorno
urbano.

3.3. Receptor FV-12


El modelo de diseo de este dispositivo implementado como receptor GPS independiente dentro
de un simple paquete, solo requiere alimentacin externa, la conexin de la antena y la conexin
de la salida de datos NMEA. Debido a que la tpica seal GPS de espectro ensanchado es de nivel
bajo, el receptor es extremadamente sensible al ruido de conmutacin digital, ya sea en el sector
de la seal de IF o en el oscilador de referencia. Para combatir los problemas de una potencial
interferencia electromagntica, debe utilizarse un cuidadoso blindaje en las conexiones del
circuito.

Figura 4: Receptor GPS FV-12.

Entre las principales caractersticas del juego de chips SiRFstar incluido en este modelo de
receptor se encuentran las siguientes:

2006

SnapLock Signal Acquisition: renueva la posicin satelital dentro de una dcima de


segundo despus de emerger de una regin bloqueada. Esto es crtico en el
reestablecimiento preciso de la posicin ante las interferencias del entorno urbano.
SingleSat Positioning: permite al receptor proveer informacin de posicin en intervalos
en que solo un satlite es visible.
Dual Multipath Rejection: elimina efectivamente datos derivados de seales que han
tomado un camino indirecto por reflexin en objetos cercanos y/o lejanos.
Mdulo Receptor GPS FV-12

14

Posicionador Satelital
Comunicado Por
Telefona Celular

Las principales especificaciones del mdulo completo son:


- Funcionamiento global:
Arquitectura: 12 canales.
Frecuencia: banda L1, 1575,42 MHz.
Cdigo C/A: 1,023 MHz.
- Construccin fsica:
Tamao: 71 mm (L) x 41 mm (A) x 8 mm (P).
Peso: 23 g.
Conector de la antena: conector MCX incorporado.
Conector de interfaz: 20 pines x 2 lneas, separacin 2 mm.
- TTFF:
Tiempo de readquisicin: 100 ms.
Encendido en caliente promedio: < 40 segundos. I
Encendido en fro promedio: < 1 minuto.
- Precisin:
Posicin: 25 metros.
Velocidad: 0,1 m/s.
Tiempo: 1 microsegundo, sincronizado al tiempo GPS.
- Condiciones dinmicas:
Altitud: 18000 metros, mximo.
Velocidad: 515 m/s (1000 nudos), mximo.
Aceleracin: 4g., mximo.
- Caractersticas elctricas:
Alimentacin: +5V DC, +/ 5%.
Consumo: 180 mA, tpica.
Alimentacin de respaldo: +2,5V DC a +4,5V DC.
Corriente de respaldo: 10 A, tpica.
Reset externo: activo a nivel bajo.
- Interfaz:
Compatibilidad: TTL serial full-duplex.
Frecuencia de datos: De 1200 a 38400 kbps.
Formato: SiRF binario y NMEA 0183 versin 2.00. II
Sentencias NMEA: CGA, GLL, GSA, GSV, RMC y VTG.
Salida por defecto: todas las sentencias NMEA, a 4800 baudios.

El comienzo en caliente hace referencia al encendido del mdulo despus de un tiempo tal en que el receptor posea
en su memoria la informacin de efemrides lo suficientemente actualizada como para que estn presentes los datos
orbitales de dicho momento de encendido. El lapso entre el apagado y el encendido en caliente puede llegar a varias
horas, dependiendo da la cantidad de informacin almacenada. Cuando el lapso es mayor, estamos ante un encendido
en fro.
II
Para el presente proyecto se utiliza el formato NMEA 0183.

2006

Mdulo Receptor GPS FV-12

15

Posicionador Satelital
Comunicado Por
Telefona Celular

- Salida de 1 pulso por segundo:


Nivel: TTL.
Duracin del pulso: 100 ms.
Referencia de tiempo: en el flanco negativo del pulso.
Medida: Alineado al tiempo GPS, +/ 1 ms.
- Especificaciones ambientales:
Temperatura de operacin: de 40 C a +85 C.
Temperatura de almacenamiento: de 55 C a +100 C.
Finalmente, el terminal de 20 pines presenta el siguiente conexionado:
1.
2.
3.
4.
5.

+5 Antena PWR - Alimentacin para antenas activas.


+5 VCC PWR-IN - Tensin de alimentacin.
Battery PWR - Batera de respaldo.
+3 VCC PWR-IN (Opcin) - Alimentacin para modelos de 3vdc.
Board Reset-In - Reset externo para comenzar una bsqueda de satlites. Debe
conectarse a 5Vdc si no se usa.
6. Sin uso.
7. Sin uso.
8. Sin uso.
9. Sin uso.
10. GND
11. TXA (TTL SERIAL) - Salida de informacin y datos.
12. RXA (TTL SERIAL) - Entrada para recibir comandos de software.
13. GND
14. Sin uso.
15. DGPS Input (RTCM) - Entrada auxiliar para GPS diferencial.
16. GND
17. Sin uso.
18. GND
19. 1PPS Output - Marca de tiempo de 1 pulso por segundo.
20. Sin uso.

Figura 5: Conexionado bsico tpico.

2006

Mdulo Receptor GPS FV-12

16

Posicionador Satelital
Comunicado Por
Telefona Celular

3.4. Antena
En el presente proyecto se utiliz para el mdulo FV-12, el modelo de antena SM-66. Esta antena
GPS de montaje externo, provee una seal continua en la banda L1 con alta ganancia y bajo
consumo. Es una unidad integrada compuesta de una placa-antena y de un amplificador de bajo
ruido en un conjunto compacto y sumergible.

Figura 6: Antena SM-66.

La unidad provee una excelente amplificacin de seal con una alimentacin de 3 a 5 voltios. Su
pequeo tamao es una ventaja para las necesidades de mantenimiento de la estabilidad de la
seal an en rudas condiciones ambientales para las aplicaciones actuales.
Sus principales caractersticas son:
- Especificaciones globales:
Frecuencia central: 1575,42 MHz, +/ 1,023 MHz.
Polarizacin: R.H.C.P. (circular derecha).
Ganancia absoluta en el cenit: +5 dBi, tpico.
Ganancia a 10 de elevacin: 1 dBi, tpico.
Radio axial: 3 dB, mximo.
Impedancia de salida: 50 .
Cable: RG174/U, 5 metros.
Conector: MCX.
- Amplificador de bajo ruido:
Frecuencia central: 1575,42 MHz, +/ 1,023 MHz.
Ganancia: 30 dB, tpica.
Ancho de banda: 2 MHz, mnimo.
Figura de ruido: 2,0, mxima.
Atenuacin de la banda externa: 20 dB mnimo, @ f0 +/ 50 MHz.
Alimentacin: De + 4,5 a 5,5 V DC.
Consumo: 28 mA +/ 3mA.
Impedancia de salida: 50 .
2006

Mdulo Receptor GPS FV-12

17

Posicionador Satelital
Comunicado Por
Telefona Celular

- Construccin fsica:
Arquitectura: cpula de poli-carbonato en la parte superior, carcasa de fundicin
imantada en la parte inferior, junta de goma intermedia para el aislamiento al agua.
Montaje estndar: montaje magntico y/o con tornillos en los dos agujeros roscados
de la parte inferior.
Dimensiones: 58 mm (L) x 48 mm (A) x 15 mm (P).
Peso: 63 gramos (excluyendo al cable y al conector).
- Especificaciones ambientales:
Temperatura de operacin: de 40 C a +85 C.
Temperatura de almacenamiento: de 50 C a +90 C.
Humedad relativa: 95%, no condensada.
Resistencia al agua: 100% impermeable.

3.5. Referencias bibliogrficas


San Jose Navigation Inc., FV-12 GPS Engine Board Datasheet, www.sanav.com, 2001.
San Jose Navigation Inc., SM-66 Mobile GPS Antenna with LNA Datasheet,
www.sanav.com, 2001.
Steven E. Moore, A Low Cost GPS Receiver for In-Vehicle Navigation, SiRF Technology,
www.sirf.com, 2001.
Electrocomponentes S.A., FV-12 GPS Engine Board Gua de Usuario,
www.electrocomponentes.com, 2001.

2006

Mdulo Receptor GPS FV-12

18

4
Protocolo NMEA 0183
4.1. Introduccin
El estndar NMEA es un estatuto para la interconexin de dispositivos electrnicos mayormente
utilizado en equipos de navegacin y fue elaborado por la organizacin estadounidense National
Marine Electronics Association. I
La interfaz es un estndar industrial voluntario y fue desarrollada para permitir la rpida y
satisfactoria comunicacin entre instrumentos electrnicos marinos, equipos de navegacin y
equipamiento de comunicacin interconectado por medio de un sistema apropiado; minimizando
la interpretacin incorrecta entre fabricantes y asistiendo a los compradores en la seleccin de
equipamiento compatible.
La comunicacin de los receptores GPS est definida dentro de esta especificacin. La mayora
de los programas de computacin que proveen informacin de posicin en tiempo real son
compatibles con el formato NMEA. La idea del protocolo es enviar una lnea de datos, denominada
sentencia, la cual es totalmente autnoma e independiente de otras sentencias. Hay sentencias
estndares para cada categora de dispositivo y se permite la definicin de sentencias propietarias
para distintas compaas.
El protocolo est proyectado para soportar transmisin de datos seriales en una va, desde un
nico emisor hasta uno o ms receptores. Estos datos pueden incluir informacin como posicin,
velocidad, profundidad, asignacin de frecuencia, etc. Un mensaje tpico puede tener una longitud
de entre 20 y 80 caracteres y generalmente requiere una transmisin no ms frecuente de un
mensaje por segundo.
Los datos en s mismo, son cadenas de texto en formato ASCII y pueden extenderse a lo largo de
mltiples sentencias en ciertas instancias especiales, aunque normalmente estn incluidos
totalmente en una nica sentencia de longitud variable. La informacin puede variar de acuerdo a
la precisin que contenga el mensaje. Se provee una suma de control o checksum en cada
sentencia que puede o no ser controlada por la unidad que lee la informacin.
Las definiciones elctricas del estndar no pretenden acomodarse a aplicaciones de alto ancho de
banda como imgenes de radar o video, o aplicaciones de transferencia intensiva de archivos o
bases de datos.
Debido a que no provee garantas en la entrega de mensajes y que solo tiene una limitada
capacidad de comprobacin de errores, el estatuto debe ser utilizado con precaucin en
aplicaciones crticas.

National Marine Electronics Association: Asociacin Nacional de Electrnica Marina (www.nmea.org).

2006

Posicionador Satelital Comunicado Por Telefona Celular

19

Posicionador Satelital
Comunicado Por
Telefona Celular

4.2. Interfaz Elctrica


El estndar NMEA 0183, cuya primera versin data de marzo de 1983, ha sido actualizado
regularmente con el paso del tiempo, siendo su versin ms reciente la 3.01 de enero de 2002.
El estatuto define los requerimientos de la seal elctrica, el protocolo de transmisin de datos,
los tiempos y los formatos de las sentencias especficas para un canal serial de 4800 baudios. Es
compatible con la interfaz RS232 y presenta la siguiente configuracin:
Velocidad
Bits de datos
Bits de parada
Paridad
Handshake

4800 baudios
8
1
No
No

Debido a las diferencias de velocidades y otros parmetros de transmisin, los datos NMEA 0183
no son compatibles con estatutos anteriores como el NMEA 0182 o el 0180. La variacin 0183-HS
introduce el uso de una interfaz de tres cables que permite una velocidad de hasta 38400 baudios.
Este tipo de interfaz no ser discutida aqu.
Ntese que a una velocidad de 4800 baudios, puede fcilmente enviarse una cantidad suficiente
de informacin que llena un tiempo de un segundo. Por esta razn, algunas unidades solo envan
actualizaciones cada dos segundos o envan cierta informacin en un determinado segundo,
dejado otro tipo de informacin para el segundo siguiente. En suma, algunas sentencias pueden
tener datos actuales, mientras que otras pueden tener datos de segundos anteriores. Generalmente
se enva un campo con el tiempo, por lo que sencillo determinar que lo que est realizando un
dispositivo en particular.
A 4800 baudios pueden enviarse 480 caracteres en un segundo, y como una sentencia tiene una
longitud de hasta 82 caracteres, pueden enviarse hasta seis sentencias diferentes en dicho lapso de
tiempo, dependiendo del formato de cada sentencia.
Los datos se transmiten asincrnicamente en serie de acuerdo con los estndares ANSI. II
start

D0 D1 D2 D3 D4 D5 D6 D7

stop

bits de datos

stop bit

start bit

El primer bit de la cadena es el de inicio o start bit, seguido por los bits de datos con el bit menos
significativo primero, finalizando con el de parada o stop bit.
Todos los datos transmitidos deben ser interpretados como caracteres ASCII. En consecuencia, el
bit ms significativo del carcter de 8 bits es siempre nulo (D7 = 0).

II

American National Standards Institute, referencias:


ANSI X 3.15 1976 ANSI Character Structure and Character Parity Sense for Serial-by-Bit Communication.
ANSI X 3.16 1976 ANSI for Bit Sequencing of the ANS Code or Information Interchange in Serial-By-Bit Data
Transmission.
ANSI X 3.14 1977 ANSI Code for Information Interchange.

2006

Protocolo NMEA 0183

20

Posicionador Satelital
Comunicado Por
Telefona Celular

El conjunto de caracteres ASCII vlidos consisten en aquellos imprimibles (del 0x20 al 0x7E)
exceptuando aquellos definidos como reservados, consignados en rojo en la tabla 1.

D3

D2

D1

D0

D6
D5
D4
Hexa

0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1

0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1

0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F

0
0
0
0

LF

CR

0
0
1
1

0
1
0
2
SP
!
"
#
$
%
&
'
(
)
*
+
,
.
/

0
1
1
3
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?

1
0
0
4
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O

1
0
1
5
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_

1
1
0
6
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o

1
1
1
7
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~

Tabla 1: Conjunto de caracteres ASCII del protocolo NMEA 0183.

Los caracteres reservados son utilizados para propsitos especficos en el formato de las
sentencias y no deben ser usados en los campos de datos. La definicin de cada uno de ellos es la
que sigue:
<CR>
<LF>
$
*
,
!
\
^
~

0x0D
0x0A
0x24
0x2A
0x2C
0x21
0x5C
0x5E
0x7E

Delimitador de fin de sentencia (Retorno de carro)


Delimitador de fin de sentencia (Avance de lnea)
Delimitador de comienzo de sentencia
Delimitador de campo Checksum
Delimitador de campo
Reservado para uso futuro
Reservado para uso futuro
Reservado para uso futuro
Reservado para uso futuro
Tabla 2: Caracteres ASCII reservados.

Los valores ASCII no especificados dentro de los caracteres vlidos y reservados se excluyen y
no deben ser transmitidos en ningn momento.

2006

Protocolo NMEA 0183

21

Posicionador Satelital
Comunicado Por
Telefona Celular

4.3. Definiciones
Un EMISOR es cualquier dispositivo que enva informacin a otros dispositivos dentro de esta
especificacin. El tipo de EMISOR est identificado por dos caracteres como se indica en la tabla 3
de la pgina 24.
Un RECEPTOR es cualquier dispositivo que recibe datos de otro dispositivo dentro de esta
especificacin.
Un campo consiste en una cadena de caracteres vlidos, o en su defecto la ausencia de caracteres
(campo nulo), localizada entre dos apropiados delimitadores de caracteres.
El campo de direccin es el primero de la cadena, est precedido del delimitador $ y se utiliza
para definir la sentencia. El campo de direccin no puede ser nulo y los caracteres dentro de el, se
limitan a dgitos y letras en mayscula.
Solo pueden ser transmitidas sentencias con los siguientes tres tipos de campo de direccin:
Campo de direccin aprobado: consta de cinco caracteres definidos por el estndar.
Los primeros dos son los identificadores del EMISOR, listados tabla 3. Los otros tres
caracteres crean el formador de sentencia, usado para definir el formato y el tipo de
datos. En la tabla 4 de la pgina 25, se enumeran los formadores de sentencia
aprobados.
Campo de direccin de bsqueda: consta de cinco caracteres y se usa para transmitir el
requerimiento de una sentencia especfica en un canal separado desde un EMISOR
identificado. Los dos primeros caracteres son los identificadores del EMISOR del
dispositivo que requiere la informacin, los dos siguientes son los identificadores del
EMISOR del dispositivo que est siendo diseccionado y el ltimo es el carcter de
bsqueda Q.
Campo de direccin propietario: consta del carcter propietario P seguido de un
cdigo de tres caracteres pertenecientes al fabricante, utilizado para identificar al
EMISOR que publica una sentencia propietaria.
Los campos de datos en las sentencias aprobadas estn precedidas del delimitador , y contiene
caracteres vlidos de acuerdo a la tabla 1 de la pgina anterior. Debido a la presencia de campos
de datos variables y campos nulos, un campo de datos especfico solo puede ser localizado dentro
de una sentencia, observando el delimitador de campo ,. En consecuencia es esencial para el
RECEPTOR localizar los campos contando los delimitadores en lugar de contar el nmero total de
caracteres recibidos desde el comienzo de la sentencia. As como algunos campos de datos son de
tamao fijo, muchos otros son de longitud variable para permitirle a los dispositivos proveer
informacin con mayor o menor precisin, de acuerdo a la capacidad o requerimientos del
equipamiento en particular. Los campos de datos pueden ser alfanumricos o numricos y estos
ltimos pueden tener separador de decimales, que en todos los casos ser el carcter . (0x2E).
Un campo nulo es un campo de longitud cero, no se transmite ningn carcter en el campo y es
usado cuando no hay valores disponibles o son poco confiables. Los campos nulos con sus
delimitadores pueden tener la siguiente apariencia, dependiendo en donde se encuentren en la
sentencia: ,,, ,* o ,<CR><LF>.

2006

Protocolo NMEA 0183

22

Posicionador Satelital
Comunicado Por
Telefona Celular

Un campo checksum puede transmitirse opcionalmente en cualquier sentencia. Sin embargo,


algunas sentencias aprobadas requieren especficamente el campo checksum. Este campo es el
ltimo en una sentencia y est precedido de su correspondiente carcter delimitador *.
El checksum se obtiene realizando la operacin O exclusiva (XOR) de los 8 bits (sin los bits de
start o stop) de todos los caracteres en la sentencia, incluyendo el delimitador ,, pero sin incluir
los delimitadores $ y *. El valor hexadecimal de los 4 bits ms significativos y de los 4 bits
menos significativos del resultado se convierten en dos caracteres ASCII (0..9, A..F),
transmitindose el carcter ms significativo primero.
El cableado de interconexin recomendado por el protocolo NMEA 0183, es el de par trenzado
blindado, con el blindaje conectado solamente al chasis del EMISOR. Se recomienda una salida del
EMISOR de acuerdo con la norma EIA RS-422, esto es, un sistema diferencial con dos lneas de
seales A y B, el cual no tiene referencia a tierra y es ms inmune al ruido. Sin embargo, una
lnea con niveles TTL referida a masa (single-ended) es igualmente aceptada. En la prctica, la
mayora de los productos ms recientes en el mercado, como los receptores GPS, no tienen salida
diferencial RS-422, sino que presentan una salida convencional compatible con niveles TTL o
CMOS de 5 voltios.

4.4. Estructura general de las sentencias


Una sentencia debe tener hasta 82 caracteres, con un mximo de 79 caracteres entre el delimitador
de comienzo $ y los de fin de sentencia <CR><LF>. Cada sentencia debe tener al menos un
campo, siendo el primero el de direccin, conteniendo el identificador del EMISOR y el formador
de sentencia que especifica la cantidad de campos de datos, el tipo de informacin que contiene y
el orden en que son transmitidos los datos. La cantidad mxima de campos en una sentencia nica
solo est limitada por el mximo de 82 caracteres. Si la informacin de algn campo no est
disponible, debe utilizarse un campo nulo.
Las sentencias aprobadas, las de bsqueda y las propietarias son las nicas vlidas. Sentencias en
cualquier otra forma no son vlidas y no deben transmitirse por el canal.
Las sentencias aprobadas diseadas para uso general y detalladas por el estndar 0183, contienen
los siguientes elementos:
$
<campo de direccin>

,<campo de datos>
M
,<campo de datos>
*<campo checksum>
<CR><LF>

0x24,

comienzo de sentencia
Identificador del EMISOR y formador de sentencia
0x2C + campo de datos
0x2C
0x24
0x0D

+ campo de datos
+ campo checksum opcional
+ 0x0A, fin de sentencia

Como se rese anteriormente, el identificador del EMISOR en el campo de direccin tiene dos
caracteres y en la tabla 3 de la pgina siguiente, se consignan sus posibles valores junto a los
EMISORES (en ingls) a que corresponde cada par de letras.

2006

Protocolo NMEA 0183

23

Posicionador Satelital
Comunicado Por
Telefona Celular

EMISOR

AUTOPILOT: General
Magnetic
COMMUNICATIONS: Digital Selective Calling (DSC)
Receiver / Beacon Receiver
Satellite
Radio-Telephone (MF/HF)
Radio-Telephone (VHF)
Scanning Receiver
DECCA Navigation
Direction Finder
Electronic Chart Display & Information System (ECDIS)
Emergency Position Indicating Beacon (EPIRB)
Engine Room Monitoring Systems
Global Positioning System (GPS)
HEADING SENSORS: Compass, Magnetic
Gyro, North Seeking
Gyro, Non-North Seeking
Integrated Instrumentation
Integrated Navigation
LORAN: Loran-A
Loran-C
OMEGA Navigation System
Proprietary Code
Radar and/or ARPA
Sounder, depth
Electronic positioning system, other/general
Sounder, scanning
Turn Rate Indicator
TRANSIT Navigation System
VELOCITY SENSORS: Doppler, other/general
Speed Log, Water, Magnetic
Speed Log, Water, Mechanical
Weather Instruments
TRANSDUCER
TIMEKEEPERS, TIME/DATE: Atomic Clock
Chronometer
Quartz
Radio Update

Identificador
AG
AP
CD
CR
CS
CT
CV
CX
DE
DF
EC
EP
ER
GP
HC
HE
HN
II
IN
LA
LC
OM
P
RA
SD
SN
SS
TI
TR
VD
VM
VW
WI
YX
ZA
ZC
ZQ
ZV

Tabla 3: Identificadores de EMISOR.

Para el presente proyecto en que utilizamos un mdulo receptor GPS, todas las sentencias
0183 a usar tendrn el identificador GP.

2006

Protocolo NMEA 0183

NMEA

24

Posicionador Satelital
Comunicado Por
Telefona Celular

4.5. Sentencias
El protocolo ha cambiado levemente con el correr de las versiones y la cantidad y los tipos de
sentencia pueden ser diferentes dependiendo de la revisin. La mayora de los receptores GPS
convencionales entienden la versin 2 del estndar NMEA 0183, por lo que se describirn las
sentencias en particular en base a dicha versin.
Los tres caracteres de los formadores de sentencia aprobados en el campo de direccin, se
presentan en la tabla 4, junto a la definicin en ingles de los tipos de datos a que hacen referencia
cada uno de ellos, todo esto de acuerdo a la revisin NMEA 0183 versin 2.00 de enero de 1992.
En negrita se resaltan los formadores de sentencia utilizados por el mdulo receptor GPS del
presente proyecto.
Form.

AAM
ALM
APB
ASD
BEC
BOD
BWC
BWR
BWW
DBT
DCN
DPT
FSI
GGA
GLC
GLL
GSA
GSV
GXA
HDG
HDT
HSC
LCD
MTW
MWV
OLN
OSD

Tipo de datos
Waypoint Arrival Alarm
GPS Almanac Data
Autopilot Sentence "B"
Autopilot System Data
Bearing & Distance to Waypoint, Dead Reckoning
Bearing, Origin to Destination
Bearing & Distance to Waypoint, Great Circle
Bearing & Distance to Waypoint, Rhumb Line
Bearing, Waypoint to Waypoint
Depth Below Transducer
Decca Position
Depth
Frequency Set Information
Global Positioning System Fix Data
Geographic Position, Loran-C
Geographic Position, Latitude/Longitude
GPS DOP and Active Satellites
GPS Satellites in View
TRANSIT Position
Heading, Deviation & Variation
Heading, True
Heading Steering Command
Loran-C Signal Data
Water Temperature
Wind Speed and Angle
Omega Lane Numbers
Own Ship Data

Form.

RMA
RMB
RMC
ROT
RPM
RSA
RSD
RTE
SFI
STN
TRF
TTM
VBW
VDR
VHW
VLW
VPW
VTG
WCV
WNC
WPL
XDR
XTE
XTR
ZDA
ZFO
ZTG

Tipo de datos
Recommend Minimum Specific Loran-C Data
Recommend Minimum Navigation Information
Recommend Minimum Specific GPS Data
Rate of Turn
Revolutions
Rudder Sensor Angle
RADAR System Data
Routes
Scanning Frequency Information
Multiple Data ID
TRANSIT Fix Data
Tracked Target Message
Dual Ground/Water Speed
Set and Drift
Water Speed and Heading
Distance Traveled through the Water
Speed, Measured Parallel to Wind
Track Made Good and Ground Speed
Waypoint Closure Velocity
Distance, Waypoint to Waypoint
Waypoint Location
Transducer Measurements
Cross-Track Error, Measured
Cross-Track Error, Dead Reckoning
Time & Date
UTC & Time from Origin Waypoint
UTC & Time to Destination Waypoint

Tabla 4: Formadores de sentencia aprobados.

Se describen ahora las sentencias utilizadas en el presente proyecto, con su correspondiente


formato completo.

2006

Protocolo NMEA 0183

25

Posicionador Satelital
Comunicado Por
Telefona Celular

4.5.1 GGA
La sentencia GGA, Global Positioning System Fix Data o datos GPS de posicin, indica la hora y
los datos esenciales relativos a la ubicacin en tres dimensiones de un receptor GPS. La que sigue
es su estructura:
1

5 6

10 11 12 13

14

15

{ $GPGGA,hhmmss.sss,ggmm.mmmm,a,gggmm.mmmm,a,x,xx,x.x,x.x,M,x.x,M,ss,xxxx*hh
<CR><LF>

Donde el significado de cada campo de datos es:


1.

Hora en formato UTC III, brindada de modo tal que los dos primeros caracteres presentan la
hora, los dos siguientes los minutos y los seis ltimos los segundos, con precisin de
milsimas (hhmmss.sss).

2.

Latitud de la posicin. Los dos primeros caracteres corresponden a los grados y los siete
restantes indican los minutos en la forma mm.mmmm.

3.

N o S. Indica si la latitud del valor del campo 2 corresponde al hemisferio Norte o Sur.

4.

Longitud de la posicin. Los tres primeros caracteres corresponden a los grados y los siete
restantes indican los minutos en la forma mm.mmmm.

5.

E o W. Indica si la longitud del campo 4 es Este u Oeste (West).

6.

Indicador de calidad de posicionamiento GPS, sus valores posibles son:


0 - localizacin no disponible.
1 - GPS posicionado normalmente.
2 - posicionamiento por el sistema diferencial.
3 - localizacin por el sistema de posicionamiento preciso.
4 - posicionamiento cintico en tiempo real.
5 - posicionamiento cintico en tiempo real con coma flotante.
6 - ubicacin por clculo estimado.
7 - modo de entrada manual.
8 - modo simulacin.

7.

Nmero de satlites a la vista. Valores posibles, de 00 a 12.

8.

Disolucin de precisin horizontal, de 1.0 a 99.9.

9.

Altitud de la antena sobre el nivel del mar.

10.

Unidad de la altitud. Siempre es M por metro.

11.

Separacin geoidal. Diferencia entre el elipsoide terrestre WGS-84 y el nivel del mar. -
significa que el nivel del mar est por debajo del elipsoide.

12.

Unidad de la separacin geoidal. M por metro.

III

Universal Time Coordinated: Tiempo Universal Coordinado. Base horaria uniforme mundial de uso civil que
reemplaza al GMT. Es mantenida por varios laboratorios alrededor del mundo y determinada utilizando relojes
atmicos de altsima precisin. Cuando es 0 UTC, es medianoche en Greenwich (Inglaterra), en la lnea meridiana de
la longitud cero. Aqu en Argentina el huso horario oficial es UTC 3 horas.

2006

Protocolo NMEA 0183

26

Posicionador Satelital
Comunicado Por
Telefona Celular

13.

Tiempo en segundos desde la ltima actualizacin de datos GPS diferenciales. Es un campo


nulo si no se utiliza GPS diferencial.

14.

Identificador de la estacin diferencial de referencia, de 0000 a 1023.

15.

Checksum opcional.

Esta sentencia es la nica que reporta la altitud. Si el sistema no encuentra el nivel del mar, la
altitud no es ofrecida.
Se ofrece ahora una muestra particular de la sentencia:
$GPGGA,143953.999,3225.3381,S,06315.0254,W,1,06,1.3,217.8,M,,,,0000*05

Se observa en el ejemplo, que el dispositivo se encuentra posicionado por medio del sistema
normal de funcionamiento a las 14:39:54, en la latitud 322520 Sur y en la longitud 63151,5
Oeste. Hay 6 satlites visibles, la disolucin de precisin horizontal es 1,3 y la altitud es de 217,8
metros sobre el nivel del mar.

4.5.2 RMC
La sentencia RMC, Recommend Minimum Specific GPS Data o datos GPS especficos mnimos
recomendados, provee fecha, hora, posicin, velocidad y curso del receptor. El campo checksum
es obligatorio en esta sentencia que es transmitida en intervalos no mayores a dos segundos. Se
proveen todos los datos posibles, utilizndose campos nulos solamente cuando la informacin no
est disponible. Su formato es el siguiente:
1

10 11 12

{ $GPRMC,hhmmss.sss,a,ggmm.mmmm,a,gggmm.mmmm,a,x.x,x.x,ddmmaa,x.x,a*hh<CR><LF> }
Donde el significado de cada campo de datos es:
1.

Hora en formato UTC.

2.

Advertencia de posicin de navegacin. Puede tener la letra A (active) para una posicin
vlida, o la letra V (void) que indica que el dato de posicin es nulo o muy poco preciso.

3.

Latitud de la posicin en grados y minutos.

4.

N o S. Indica si la latitud del valor del campo 3 corresponde al hemisferio Norte o Sur.

5.

Longitud de la posicin en grados y minutos.

6.

E o W. Indica si la longitud del campo 5 es Este u Oeste (West).

7.

Velocidad sobre la superficie, indicada en nudos (1 nudo = 1,852 km/h). IV

8.

ngulo de la direccin verdadera de navegacin (curso), en grados. El curso verdadero es el


ngulo que se mide en sentido de las agujas del reloj, desde el norte geogrfico hasta la lnea
que conecta dos sitios, sin tener en cuenta la declinacin magntica.

IV

La unidad de velocidad conocida como nudo o knot, que deriva de un antiguo proceso de medicin de velocidad en
una nave, es utilizada tanto para navegacin martima como area y tambin en meteorologa para medir la velocidad
de los vientos. Equivale a una milla nutica por hora o a 1,852 kilmetros por hora.

2006

Protocolo NMEA 0183

27

Posicionador Satelital
Comunicado Por
Telefona Celular

9.

Fecha. Los dos primeros caracteres brindan el da; los dos que siguen, el mes; y los dos
finales, otorgan los dos ltimos dgitos del ao.

10. Variacin

magntica en grados.

11. E

o W. Variacin magntica Este u Oeste (West). Si es E, los grados del campo 10 se


restan al curso verdadero para obtener el curso magntico; si es W, se suman.

12. Checksum obligatorio.

Se brinda aqu un ejemplo:


$GPRMC,144001.999,A,3225.3382,S,06315.0255,W,0.02,2.22,050106,,*08

La informacin fue registrada el 5 de enero de 2006 a las 14:40:02, en la posicin 322520,3 de


latitud Sur y 63151,5 de longitud Oeste. El receptor est en una ubicacin fija, dado que indica
una velocidad de 0,02 nudos y un curso verdadero de 2,2. No hay datos de la variacin
magntica y el checksum de la sentencia es 0x08.
____________________
Ahora se describen el resto de las sentencias brindadas por el mdulo GPS, pero no utilizadas en
el presente trabajo.

4.5.3 GSV
La sentencia GSV, GPS Satellites in View o satlites GPS a la vista, indica la elevacin, el
azimut, el valor de la relacin seal-ruido y los nmeros PRN de los satlites visibles. Por cada
sentencia se envan datos de cuatro satlites como mximo; si es necesario, se enva una segunda
o tercera sentencia con la informacin de los hasta doce satlites que puede tomar un receptor. La
cantidad total de mensajes a ser transmitidos y el nmero de mensaje que se est transmitiendo se
indican en los dos primeros campos, tal como se muestra en la siguiente forma general:
1 2

{ $GPGSV,x,x,xx,xx,xx,xxx,xx,xx,xx,xxx,xx,xx,xx,xxx,xx,xx,xx,xxx,xx*hh<CR><LF> }
El significado de cada campo es:
1.

Cantidad total de mensajes, 3 como mximo.

2.

Nmero de mensaje (1 a 3).

3.

Cantidad total de satlites a la vista (00 a 12).

4.

Nmero PRN de satlite. V

5.

Elevacin en grados del satlite identificado en el campo 4, 90 grados como mximo.

PRN, Pseudo Random Noise o ruido pseudo-aleatorio: Cdigo que tiene una distribucin aleatoria como una
interferencia que se pueden reproducir exactamente. La propiedad importante de los cdigos PRN es que tienen un
valor bajo de autocorrelacin para todos los retrasos. Cada satlite GPS tiene sus propios y nicos cdigos de ruido
pseudos-aleatorio.

2006

Protocolo NMEA 0183

28

Posicionador Satelital
Comunicado Por
Telefona Celular

6.

Azimut en grados verdaderos del satlite identificado en el campo 4, 000 a 359.

7.

SNR (relacin seal-ruido), de 00 a 99 dB, del satlite identificado en el campo 4. Es un


campo nulo cuando no hay seguimiento de la seal. Este nmero es indicativo de la fortaleza
de la seal y el rango de valores prcticos en un GPS dado, puede variar de 25 a 35 dB entre
el valor ms bajo y el ms alto.

8.

Si es necesario, se repiten los campos 4, 5, 6 y 7; para los probables canales satelitales


segundo, tercero y cuarto.

9.

Checksum opcional.

Por ejemplo:
$GPGSV,3,1,10,23,69,228,47,24,54,236,47,13,41,281,46,11,41,005,33*72
$GPGSV,3,2,10,08,40,316,,02,36,281,,27,34,308,,17,16,271,39*7B
$GPGSV,3,3,10,28,11,004,,01,08,128,38*7F

En las tres sentencias se aprecian los datos correspondientes a 10 satlites.

4.5.4 GSA
La sentencia GSA, GPS DOP and Active Satellites o disolucin de precisin y satlites GPS
activos, indica el modo de operacin del receptor, los satlites utilizados en la navegacin y la
disolucin de precisin, que es una indicacin de los efectos de la geometra satelital en la
precisin del posicionamiento. Este nmero sin unidades, cuanto menor sea, mejor es la
disolucin. Para posicionamiento 3D usando 4 satlites, un nmero 1.0 puede considerarse como
un valor perfecto, aunque para resoluciones sobredeterminadas es posible encontrar nmeros
menores. La estructura de la sentencia es:
1 2

{ $GPGSA,a,x,xx,xx,xx,xx,xx,xx,xx,xx,xx,xx,xx,xx,x.x,x.x,x.x*hh<CR><LF> }
Cada campo de datos es:
1.

Seleccin de posicionamiento en 2D o 3D. A para automtico, M para manual.

2.

Modo de funcionamiento. Valores posibles: 1 para posicionamiento no disponible, 2


para 2D, o 3 para 3D.

3.

Nmero PRN del satlite utilizado para el posicionamiento en el canal 1. Es un campo nulo
si el satlite correspondiente no es usado.

4.

Lo mismo que el campo 3 para los canales 2 al 12.

5.

Disolucin de precisin de posicionamiento.

6.

Disolucin horizontal de precisin.

7.

Disolucin vertical de precisin.

8.

Checksum opcional.

2006

Protocolo NMEA 0183

29

Posicionador Satelital
Comunicado Por
Telefona Celular

Ejemplo:
$GPGSA,A,3,17,11,24,23,01,13,,,,,,,2.0,1.3,1.6*37

Se observa que hay un posicionamiento en tres dimensiones gracias a la visualizacin de seis


satlites, con un valor de disolucin de precisin de 2,0 (1,3 horizontal; 1,6 vertical).

4.5.5 GLL
La sentencia GLL, Geographic Position, Latitude/Longitude, provee como su nombre lo indica,
los datos bsicos de posicin. Su formato es el siguiente:
1

{ $GPGLL,ggmm.mmmm,a,gggmm.mmmm,a,hhmmss.sss,a*hh<CR><LF> }
El significado de cada campo de datos es:
1.

Latitud de la posicin en grados y minutos.

2.

N o S. Indica si la latitud del valor del campo 1 corresponde al hemisferio Norte o Sur.

3.

Longitud de la posicin en grados y minutos.

4.

E o W. Indica si la longitud del campo 5 es Este u Oeste (West).

5.

Hora en formato UTC.

6.

Advertencia de posicin de navegacin. Puede tener la letra A (active) para una posicin
vlida, o la letra V (void) que indica que el dato de posicin es nulo o muy poco preciso.

7.

Checksum opcional.

Ejemplo:
$GPGLL,3225.3382,S,06315.0255,W,144002.999,A*2C

4.5.6 VTG
La sentencia VTG, Track Made Good and Ground Speed o cumplimiento de trazado y velocidad
sobre superficie, brinda los datos de curso y velocidad del receptor. Esta sentencia, que aparece
solamente cuando el dispositivo est sobre un vehculo en movimiento, presenta la siguiente
estructura:
1

{ $GPVTG,x.x,T,x.x,M,x.x,N,x.x,K*hh<CR><LF> }
Donde el significado de cada campo de datos es:
1.

2006

Curso en grados.
Protocolo NMEA 0183

30

Posicionador Satelital
Comunicado Por
Telefona Celular

2.

T, indica que el valor del campo 1 es de curso verdadero (true).

3.

Curso en grados.

4.

M, indica que el valor del campo 3 es de curso magntico.

5.

Velocidad sobre superficie.

6.

N, indica que el valor de velocidad del campo 5 est expresado en nudos.

7.

Velocidad sobre superficie.

8.

K, indica que el valor de velocidad del campo 7 est expresado en kilmetros por hora.

9.

Checksum opcional.

Ejemplo:
$GPVTG,309.62,T,,M,0.13,N,0.2,K*08

Se observa que el mvil se dirige al noroeste a una velocidad de 0,2 km/h (o 0,13 nudos).

4.6. Referencias bibliogrficas


Klaus Betke, The NMEA 0183 Protocol, www.longwave.de, 2001.
Dale DePriest, NMEA data, www.gpsinformation.org/dale/nmea.htm, 2005.
Glenn Baddeley, GPS - NMEA sentence information,
http://home.pacific.net.au/~gnb/gps/nmea.html, 2006.
Peter Bennett, The NMEA FAQ Version 6.5, http://vancouver-webpages.com/peter, 2006.
Wayne Simpson, Understanding Marine Electronics Interfacing: The Promise, The
Problems, MAINSHEET - The Catalina and Capri Owners association
magazine, May 1991.
National Marine Electronics Association, NMEA 0183 - Standard For Interfacing Marine
Electronic Devices Version 2.00, www.nmea.org, 1992.
Electrocomponentes S.A., FV-12 GPS Engine Board Gua de Usuario,
www.electrocomponentes.com, 2001.

2006

Protocolo NMEA 0183

31

5
Telefona Celular
5.1. Introduccin
El concepto celular es aplicable a diversos tipos de redes, sin embargo, es en la telefona mvil
donde alcanza su mayor desarrollo. Este concepto est ntimamente ligado a dos caractersticas
fundamentales de las redes celulares, que son: la reutilizacin de frecuencias y la divisin celular.
El mayor condicionante en el diseo de una red celular es el espectro radioelctrico disponible.
Los sistemas celulares tratan de aprovechar al mximo el nmero de radiocanales disponibles,
restringiendo el rea de cobertura de una estacin base, para poder utilizar la misma frecuencia a
una cierta distancia, mediante la altura y potencia de transmisin de las antenas.
El trmino celular se utiliza ampliamente para describir a los dispositivos de comunicacin
inalmbrica. Una clula o celda se define como un rea o zona geogrfica que rodea a un
transmisor en un sistema telefnico. Podemos pensar en una celda como en una especie de rea
de difusin predeterminada dentro de la cual puede transmitirse una seal sin producir
interferencias en otras celdas. Con las tecnologas de
ms alta frecuencia, los requisitos de consumo de
potencia para que una seal una cierta distancia se
reducen proporcionalmente. Los propios telfonos
celulares tienen la capacidad de transmitir a distancias
de unos pocos miles de metros, como mucho. Gracias
al esquema de celdas y a la tecnologa celular de
conmutacin subyacente, millones de usuarios pueden
mantener conversaciones desde una celda a otra.
Bell Telephone concibi el diseo celular en 1947,
implantando una disposicin de numerosas antenas de
transmisin y recepcin de baja potencia, de manera
tal que se incrementaron las reas efectivas de
cobertura.
Al reducir el tamao de la celda, se puede disminuir la
distancia de reutilizacin, lo que permite incrementar
la complejidad del sistema, y lleva a un aumento de su
capacidad, lo cual significa un aumento de usuarios.
La consecuencia inmediata de una organizacin
celular es la necesidad de traspasar las
comunicaciones en curso de una clula a otra, cuando
el mvil as lo requiera.
2006

Posicionador Satelital Comunicado Por Telefona Celular

32

Posicionador Satelital
Comunicado Por
Telefona Celular

5.2. Tecnologa celular


5.2.1. Red celular
El diseo basado en celdas permite reutilizar cada frecuencia en celdas que no sean adyacentes.
Las celdas se pueden clasificar en: macroceldas, microceldas y picoceldas. A medida que se
reduce el tamao de las celdas, las ventajas de reutilizacin de frecuencia se incrementan, aunque
su costo se incrementa enormemente, y la dificultad de conmutar el trfico entre los usuarios
mviles y sus telfonos tambin se incrementa de forma considerable. Sin embargo, las mejoras
en la capacidad de tratamiento de trfico y en la seguridad del sistema pueden ser muy
significativas, incrementando los ingresos proporcionalmente.

Macrocelda

Microceldas

Picoceldas

Figura 1: Topologa celular.

Las macroceldas cubren las reas de servicio ms grandes y pueden solo soportar por s mismas
doce canales y doce conversaciones simultneas, utilizando un patrn tpico de siete celdas,
cubriendo cada una de ellas quince kilmetros aproximadamente, de manera tal que en el
solapamiento de celdas no se superponen canales en celdas adyacentes (figura 2).

2
2
7
3

7
3

1
6

7
6

4
5

4
5

5
7

3
1

1
6

5
2

3
1

4
5

1
6

3
1

Figura 2: Patrn de reutilizacin de siete celdas.

2006

Telefona Celular

33

Posicionador Satelital
Comunicado Por
Telefona Celular

Las microceldas cubren un radio algo ms pequeo, de unos cuantos kilmetros. Si se divide la
macrocelda en siete microceldas, se consigue un factor de reutilizacin de 27 = 128; soportando el
esquema hasta 1536 conversaciones simultneas (128 x 12).
Las picoceldas cubren un rea bastante limitada, de solo unas cuantas manzanas, un estadio o una
pequea zona suburbana. Con el esquema de siete celdas, si cada una cubre un radio de un
kilmetro, el factor de reutilizacin llega a 512, soportndose miles de conversaciones
simultneas a partir de los doce canales iniciales.
Debido al rpido agotamiento de los recursos de las tecnologas analgicas (o de primera
generacin) por la saturacin de su infraestructura, se busc la solucin a travs de sistemas
digitales mejorados, los cuales resuelven este agotamiento de recursos, dividiendo la informacin
segn la frecuencia, el tiempo o el cdigo. Estas tecnologas de acceso, TDMAI y CDMAII,
forman la infraestructura de la mayora de los sistemas de comunicaciones inalmbricas de hoy en
da, tambin denominados de segunda generacin.
Los sistemas digitales celulares pueden, normalmente, dar servicio a varios usuarios inalmbricos
simultneamente, utilizando el equivalente de un canal analgico monousuario. La cantidad
concreta de usuarios, entre tres y veinte, est determinada por la tecnologa de acceso utilizada,
que puede ser por divisin del tiempo o por expansin de espectro. Este significativo incremento
en la capacidad de usuarios se consigue comprimiendo y digitalizando la informacin de voz en
paquetes que se multiplexan mediante asignaciones temporales o de cdigo, lo que permite dividir
el canal de comunicaciones en subcanales, cada uno de los cuales da servicio a un usuario
individual; con ello se consigue un uso ms eficiente de la red.
La primera implantacin con xito de las tecnologas inalmbricas de segunda generacin fue la
de GSM (Global Systems for Mobile Communications, sistemas globales para comunicaciones
mviles), basado en TDMA. Los pases europeos fueron los primeros en apoyar GSM y en hacer
que esta tecnologa fuera adoptada como estndar, producindose la primera implantacin con
xito de la infraestructura en 1991. GSM comparte el tiempo disponible de canal y el ancho de
banda disponible, lo que permite tener hasta ocho usuarios por cada banda de 200 kHz. En los
Estados Unidos se opt por la tecnologa CDMA, porque tena un potencial de crecimiento mayor
al GSM, y porque mantena la compatibilidad con las redes analgicas existentes.

5.2.2. Sistema GSM


GSM slo permite la transmisin digital y no fue diseado pensando en que fuera compatible con
los sistemas analgicos existentes. El espectro de frecuencias de operacin de GSM es:
GSM 400
450,4 a 457,6 MHz, emparejado con la banda de 460,4 a 467,6 MHz
486 MHz, emparejado con la banda de 488,8 a 496 MHz
GSM 900
880 a 915 MHz, emparejado con la banda de 925 a 960 MHz
GSM 1800 1710 a 1785 MHz, emparejado con la banda de 1805 a 1880 MHz
GSM 1900 1850 a 1910 MHz, emparejado con la banda de 1930 a 1990 MHz
El tipo de modulacin de la seal es GMSK (Desplazamiento Mnimo Gausiano), los pulsos
digitales se consideran integrados y, mediante un filtro, se eliminan los armnicos (B = 0,3). La
velocidad de bits del canal fsico es de 270,83 kbit/s.

I
II

TDMA: Time Division Multiple Access, o acceso mltiple por divisin del tiempo.
CDMA: Code Division Multiple Access, o acceso mltiple por divisin de cdigo.

2006

Telefona Celular

34

Posicionador Satelital
Comunicado Por
Telefona Celular

El sistema GPS tiene varios tipos de canales para seales de control, que transportan informacin
del sistema y de localizacin de los mviles, y coordinan el acceso de la misma manera que los
canales de control en los sistemas analgicos. Los canales de control digitales de GSM tienen
capacidades ampliadas que ofrecen funcionalidades tales como el envo de mensajes de difusin a
mviles, modos de inactividad avanzados, varios otros. Dado que los canales de control GSM
utilizan una o ms franjas temporales, pueden normalmente coexistir en un mismo canal de radio
con otras franjas temporales utilizadas para la comunicacin de voz.
La tcnica empleada para la codificacin de la voz es mixta; por una parte, se transmite
informacin de la forma de onda, y por otra, informacin del tono y el espectro. En este proceso
de codificacin se utilizan tcnicas predictivas, aprovechando la propiedad de que los perodos
sucesivos de la voz son bastante similares. Una vez codificada la voz, los datos se codifican
tambin mediante un cdigo convulucional, que permite la correccin de errores en el receptor.
GSM ofrece las diversas funcionalidades por medio de un mdulo de identificacin de abonado
(SIM, Subscriber Identification Module), que se inserta en una ranura situada en el aparato
telefnico. El mdulo SIM contiene datos confidenciales del perfil de usuario, una descripcin de
los privilegios de acceso y una identificacin del operador de telecomunicaciones mviles en el
rea domstica en la que se activ el telfono y en la que fue asignado el nmero. El mdulo SIM
es universal y se puede intercambiar entre telfonos, lo que permite al abonado moverse
libremente a travs de los distintos entornos GSM existentes en el mundo, siempre y cuando
exista un convenio de facturacin entre operadores.
Dada la demanda de los consumidores para disponer de ms funcionalidad y comodidad, el sector
industrial presion para la adopcin de tecnologas de tercera generacin, ofreciendo ideas tales
como la Web inalmbrica, el correo electrnico inalmbrico y los servicios avanzados de buscapersonas, as como una serie de mejoras en los aspectos fundamentales de las tecnologas de
segunda generacin. La tecnologa 3G ms importante y globalmente aceptada es el servicio de
mensajes cortos (SMS, Short Message Service).

5.2.3. SMS
Los estndares SMS y GSM fueron desarrollados por ETSIIII. Como su nombre lo indica, a travs
de los SMS pueden enviarse una cantidad limitada de informacin. Un SMS contiene como
mximo 140 bytes de datos, lo que permite un mensaje de 160 caracteres de cdigo de 7 bits.
Actualmente, casi todos los principales operadores de telecomunicaciones mviles del mundo
proporcionan el servicio SMS. La tecnologa SMS tambin puede utilizarse en la mayora de las
dems redes inalmbricas principales. Entre otras ventajas que presenta el sistema puede
destacarse que los SMS pueden enviarse y recibirse en cualquier momento, pudindose enviar a
telfonos desconectados o fuera de lnea. Debido a que este servicio no utiliza un verdadero
mecanismo de cifrado, los abonados al SMS deben guardar precauciones en cuanto su uso para
evitar problemas de seguridad durante la transmisin de datos confidenciales.
Los responsables del manejo de los SMS en la red son los centros SMS o SMSC. Cuando un SMS
es enviado por un telfono mvil, llega primero a un SMSC, y luego el centro lo deriva al
destinatario. Un SMS puede necesitar pasar a travs de ms de una red antes de llegar a destino.
La obligacin principal de un centro SMS es encaminar el SMS y regular el proceso. Si el
recipiente no est disponible (por ejemplo cuando el mvil est apagado), el SMSC guarda el
mensaje hasta que est disponible. Muy a menudo el SMSC se dedica a manejar el trfico de una
III

ETSI: European Telecommunications Standards Institute o Instituto Europeo de Estndares en


Telecomunicaciones (www.etsi.org).

2006

Telefona Celular

35

Posicionador Satelital
Comunicado Por
Telefona Celular

red inalmbrica. Usualmente un operador posee su propio SMSC para controlar su red, aunque
puede ocurrir que recurra a un centro de terceros ubicado en otra red. Para utilizar el sistema
SMS, el usuario debe saber la direccin del SMSC de su operador. Tpicamente esta direccin es
un nmero comn en formato internacional; por ejemplo aqu en Argentina los nmeros de los
SMSC son: +541151740011 para la red de la compaa Personal, +543200000001 para CTI y
+54079000801 para MoviStar. Normalmente este nmero viene prefijado en la tarjeta SIM, por lo
que el usuario no debera necesitar cambiarlo.
Un mensaje SMS es almacenado temporalmente en el centro SMS si el recipiente del telfono
receptor no est disponible. Es posible especificar el perodo en que el SMS debe permanecer en
el SMSC antes de ser borrado. Este intervalo de tiempo se denomina perodo de validez y se
configura a travs del men del aparato emisor. Tambin puede configurarse el uso de los
mensajes de confirmacin de entrega para cuando el destinatario reciba el SMS.
Cuando los telfonos de origen y destino no pertenecen al mismo operador, intervienen ms de un
SMSC en la transmisin de un mensaje. Un problema de la mensajera SMS es que el desarrollo
del los SMSC por parte de las compaas ha derivado en varios protocolos de comunicacin,
muchos de ellos propietarios. Por ejemplo NOKIA tiene un protocolo SMSC llamado CIMD,
mientras que otras empresas proveedoras como LOGICACMG, utilizan el protocolo EMI. No
pueden conectarse dos SMSC que no soporten un protocolo en comn. Para solucionar esto, se
utiliza una puerta de enlace de SMS (gateway) entre los centros, el cual traduce un protocolo al
otro. Estos gateway SMS tambin son utilizados por aquellos desarrolladores que envan SMS a
mltiples destinos, evitando tener que lidiar con varios SMSC con protocolos distintos.

Mensaje SMS
Celular
de origen

SMSC de
la lnea
de origen

SMSC de
la lnea
destino

Mensaje SMS
Celular
destino

SMS Gateway

Figura 3: Ejemplo de mensajera entre celulares de operadores distintos.

Hay dos maneras de enviar mensajes SMS por medio de una computadora a otro/s mvil/es:
1. Conectar la computadora a un SMSC o a un gateway SMS de un proveedor de servicio,
utilizando el protocolo correspondiente.
2. Conectar un telfono mvil o un modem GSM/GPRS a la computadora, utilizando
comandos AT, o el protocolo F-BUS de NOKIA.
Las nuevas innovaciones tecnolgicas en el sistema SMS permiten, entre otras cosas, el uso de
mensajes concatenados para transmitir mayor cantidad de informacin, el uso de mensajes SMS
en forma de correo electrnico, o el servicio de mensajera multimedia (MMS); haciendo que los
terminales se equiparen cada vez ms a un ordenador personal.

2006

Telefona Celular

36

Posicionador Satelital
Comunicado Por
Telefona Celular

5.3. La unidad telefnica mvil


5.3.1. Estructura general
Los bloques principales del telfono celular son la unidad de radiofrecuencia, la unidad de
control, y el sistema de tratamiento de la informacin.

Mdulo de
visualizacin

Mdulo de
alimentacin
Mdulo
de
radio

Mdulo de
teclado

Mdulo de
control lgico

Mdulo de proceso de la informacin


Figura 4: Bloques de la unidad mvil.

El mdulo de radio se divide en los siguientes subsistemas:

Subsistema generador de portadoras: usa una seal de referencia de 12,8 MHz originada
por un oscilador a cristal, comn para transmisin y recepcin, y mediante la aplicacin en
dos circuitos PLL, se generan las tensiones que se aplican a los VCO de transmisin
(modulando la frecuencia con la informacin a transmitir) y recepcin (produciendo la
frecuencia que se aplica al mezclador de recepcin).
Subsistema de transmisin: primero amplifica la seal en ganancia variable por pasos,
pasndola luego a un amplificador final con potencia de ganancia fija, alimentado desde la
propia fuente de alimentacin, de forma independiente, para aplicar el ahorro de potencia
cuando no hay transmisin.
Subsistema receptor: la seal proveniente de la antena es amplificada en un dispositivo de
dos pasos para mejorar la relacin seal/ruido. Un filtro pasabanda selecciona la banda
adecuada, que es demodulada en un mezclador con la portadora. luego se selecciona la
banda lateral inferior que es sometida a un nuevo proceso de amplificacin y
demodulacin, seleccionando nuevamente la banda lateral inferior que es aplicada a un
discriminador para obtener la informacin transmitida, ya sea analgica o digital.
Subsistema de antena: se constituye por un filtro duplexor y un simple mezclador en
GSM, ya que no actan la transmisin y la recepcin de forma simultnea por la
existencia de un retardo de 1,73 ms.

El sistema de control lgico tiene una estructura similar a la de una PC: CPU, memoria ROM y
RAM, con los buses correspondientes, as como una interfaz que permite su interconexin con los
dispositivos de visualizacin, entrada de datos y el control del sistema de radio y el de
alimentacin.
El sistema de tratamiento de la informacin, procesa las seales procedentes de accesos
analgicos (voz) o digitales (datos) para la recepcin y la transmisin.
2006

Telefona Celular

37

Posicionador Satelital
Comunicado Por
Telefona Celular

5.3.2. Conectividad
Con el amplio desarrollo de la industria de la telefona mvil, los celulares se han vuelto ms
poderosos, pudiendo procesar textos, imgenes, sonido, y an video. Debido a las capacidades
multimedia de los aparatos, es muy comn que se presente la necesidad de conectarlos a
ordenadores personales. La capacidad de conexin que poseen la mayora de los telfonos
actuales ha sido utilizada en el presente proyecto como va de enlace entre el celular y el
dispositivo encargado del control del mdulo GPS, y tambin en la comunicacin con el
programa desarrollado para la visualizacin en PC de los datos obtenidos en la unidad mvil
remota.
Usualmente los telfonos se conectan va infrarroja, o por un cable de datos, o a travs del
estndar Bluetooth IV. Segn sea el mtodo de comunicacin, o el fabricante (o an el modelo) del
aparato, el protocolo de comunicacin utilizado entre la PC y el celular pude ser alguno de los
siguientes:

Comandos AT: fueron diseados originalmente por Hayes Microsystems para el control
de modem. Fue desarrollado un estndar para telfonos GSM, el cual incluye comandos
para acceder a datos tales como fabricante del telfono, modelo, versin de software,
IMEI, identidad de la tarjeta SIM, entradas de agenda, duracin de llamadas. Tambin
pueden enviarse y recibirse mensajes SMS. De acuerdo al modelo del telfono, pueden
lograrse comunicaciones an ms avanzadas.

OBEX (OBject EXchange): es un protocolo de comunicacin originalmente diseado para


uso en dispositivos infrarrojos, y luego fue incorporado en las especificaciones para
dispositivos Bluetooth. La especificacin OBEX es similar al protocolo HTTP, en lo que
hace a su mecanismo de transporte. En conjunto con OBEX puede utilizarse el protocolo
IRMC (Infrared Mobile Communications) que es un estndar de sincronizacin de datos.

NOKIA F-BUS: es el protocolo ms reciente para comunicacin entre computadoras y


mviles fabricados por NOKIA. Hay un nmero de versiones diferentes de F-BUS, todos
basados en una estructura similar. NOKIA no ha publicado ninguna documentacin referida
a F-BUS, y los nicos trabajos pblicos disponibles, son el resultado del monitoreo de la
comunicacin entre celulares NOKIA y software de organizacin. En el siguiente captulo
se presenta un desarrollo mayor de este protocolo.

JTAG (Joint Test Action Group): es un estndar ampliamente utilizado, desarrollado por
IEEE a principios de los aos 1990. Especifica una interfaz y comandos que pueden ser
usados para probar y depurar los componentes de hardware en un dispositivo electrnico.
Lamentablemente, no hay informacin disponible de implementaciones en dispositivos
especficos de JTAG, y tampoco hay cables de interconexin pblicamente disponibles.

IV

Bluetooth: especificacin abierta para comunicaciones inalmbricas de corta distancia entre diversos tipos de
aparatos de comunicacin.

2006

Telefona Celular

38

Posicionador Satelital
Comunicado Por
Telefona Celular

5.3.3. Eleccin de la unidad telefnica


Entre las decenas de alternativas disponibles en el mercado de aparatos mviles, se ha optado por
dos unidades de la lnea media 3xxx de NOKIA, para llevar adelante el presente proyecto. Algunos
de los motivos de esta eleccin son su disponibilidad en el mercado a precios accesibles, el
soporte de muchos comandos F-BUS, la presencia de un puerto externo para la conexin por cable,
la posibilidad de conectividad infrarroja, por Bluetooth, o por medio de JTAG, entre otras cosas.
Dentro de esta lnea, los aparatos elegidos son los NOKIA 3100b y 3200b; cuyas principales
caractersticas son:

Red celular: GSM 850, 1800 y 1900.


Gama de frecuencia (Tx): 824 a 849 MHz, 1710 a 1785 MHz, 1850 a 1910 MHz.
Gama de frecuencia (Rx): 869 a 894 MHz, 1805 a 1880 MHz, 1930 a 1990 MHz.
Energa de transmisin (Tx): 2 vatios (mximo).
Voltaje de batera: 3,7 voltios DC.
Nmero de canales: entre 124 (3100b) y 299 (3200b).
Tamao: 69 cm3 (3100b), 81 cm3 (3200b).
Peso: 90 g.
Memoria: 8 MB flash, 1,5 MB RAM.
Temperatura de funcionamiento: entre 15C y 25C.

Otros modelos de similares caractersticas que podran haber formado parte del proyecto, son los
NOKIA 3120, 3205, 3220, 5140, 6101, 6200, 6610, 6800, y 6820.

5.4. Referencias bibliogrficas


Randall K. Nichols, Panos C. Lekkas, Seguridad para comunicaciones inalmbricas, Ed.
McGraw-Hill, 2003.
Guillermo Garca Gallego, Sistemas de Telefona, Ed. McGraw-Hill, 2001.
DevelopersHome, SMS Tutorial, www.developershome.com/sms, 2004.
ETSI, Digital cellular telecommunications system (Phase 2+); Technical realization of the
Short Message Service (SMS) Point-to-Point (PP), www.etsi.org, TS 03.40
version 7.5.0, 1998.
Paul McCarthy, Forensic Analysis of Mobile Phones, University of South Australia,
www.unisa.edu.au, 2005.
NOKIA, NOKIA 3200b - Manual del Usuario, www.nokia.com.ar, 2004.

2006

Telefona Celular

39

6
Protocolo F-BUS de NOKIA
6.1. Introduccin
Los telfonos celulares fabricados por la empresa de origen fins, poseen conectores internos y
en algunos casos externos que permiten su interconexin con otros dispositivos electrnicos (PC,
circuitos basados en microcontroladores, etc.), mediante el uso de cables de datos. Los lenguajes
utilizados para esta comunicacin han sido desarrollados exclusivamente por NOKIA para sus
aparatos y se denominan F-BUS y M-BUS.
El protocolo M-BUS es canal nico bidireccional no simultneo (half-duplex) para la recepcin y
transmisin de datos del telfono, en el cual se utilizan solo dos terminales, uno para los datos y el
otro para la referencia de voltaje cero. Su velocidad est establecida en 9600 bpsI, con
comunicacin serial de 8 bits, de paridad impar y con un bit de parada.
En cambio, el protocolo F-BUS es bidireccional de canal doble simultneo (full-duplex) y de alta
velocidad. Utiliza tres terminales del telfono, uno para la transmisin de datos, otro para la
recepcin y el restante para la referencia. Esta comunicacin en serie tambin es de 8 bits con un
bit de parada, pero sin bit de paridad y a una velocidad de 115200 bps.
En la siguiente imagen se puede observar los terminales internos, ubicados detrs de la batera, en
el modelo 3200b de NOKIA:

6
7
8
9

1
2
3
4
5

Figura 1: Terminales internos del NOKIA 3200.

Donde:

2. GND
7. F-BUS RX

3. M-BUS
8. F-BUS TX

Bits por segundo.

2006

Posicionador Satelital Comunicado Por Telefona Celular

40

Posicionador Satelital
Comunicado Por
Telefona Celular

Tambin, la serie 3xxx presenta una salida exterior para el protocolo F-BUS en el terminal pop-port
utilizado para conectar el cable de datos y los accesorios al telfono:

2 3 4 5 6 7 8 9 10 11 12 13 14

Figura 2: Terminal pop-port del NOKIA 3200.

Los terminales tiles son:

6. F-BUS RX

7. F-BUS TX

8. GND

Para el presente proyecto se opt por el protocolo F-BUS debido a su velocidad que hace ms gil
al sistema, por la salida a travs del puerto externo y por su compatibilidad con el protocolo serial
de las computadoras personales.

6.1.1. Estableciendo la comunicacin con el celular


Luego de configurar el bus (recordemos: 8 bits, con un bit de parada, sin bit de paridad y a
115200 bps) se debe sincronizar la UART II del telfono con la PC o el microcontrolador enviando
una cadena de 128 caracteres U (o 0x55 hexadecimal) con lo cual el bus queda listo para el
envo y la recepcin de las tramas de datos. III

6.1.2. Los comandos F-BUS


El estndar F-BUS posee la particularidad de presentar diferentes comandos segn sea el modelo
de NOKIA. Aqu vamos a desarrollar los comandos utilizados en el proyecto y vlidos para la serie
3xxx comercializada en Latinoamrica.
Para simplificar la comprensin del formato de las instrucciones comenzamos con un ejemplo de
una directiva que es comn a la mayora de los telfonos y ms adelante se presenta una
estructura ms general.

II

Universal Asynchronous Receiver Transmitter o transmisor-receptor asincrnico universal: Componente del telfono encargado de la comunicacin serial.
III

Toda la informacin del presente captulo se bas en datos empricos de diversos desarrolladores que publicaron
sus resultados en Internet o en la experimentacin del autor, ya que al ser un protocolo propietario de NOKIA, no hay
publicada ninguna base terica del estndar F-BUS.

2006

Protocolo F-BUS de NOKIA

41

Posicionador Satelital
Comunicado Por
Telefona Celular

6.2. Versin de hardware y software


La primera directiva que hay que enviar siempre que se inicie la comunicacin es pedir la versin
de hardware y software del aparato. Esto se hace enviando la siguiente serie de bytes:
1E 00 0C D1 00 07 00 01 00 03 00 01 60 00 72 D5

IV

Donde el significado de cada byte es:


Byte 1: Este es el identificador de comienzo de trama F-BUS. Todas las tramas enviadas por cable
comienzan con el carcter 0x1E, aquellas transmitidas por medio del puerto infrarrojo
comienzan con el byte 0x1C.
Byte 2: Direccin de destino de datos. Como en este caso se est enviando informacin, este byte
es el identificador del celular y es siempre 0x00.
Byte 3: Direccin de origen de datos. Este es el identificador del dispositivo fuente, en nuestro
caso el controlador o la PC, y puede ser indistintamente 0x0C o 0x10; en tanto y en
cuanto se mantenga desde el principio hasta el final de la comunicacin uno solo de los
dos.
Byte 4: Tipo de directiva o comando. 0xD1 para obtener la versin de hardware y software.
Bytes 5 y 6: Longitud del bloque principal de la trama. En este caso 7 bytes. El byte 4 represente
el bit ms significativo (MSB) y el 5 el menos significativo (LSB). V
Bytes 7 al 13: Bloque principal de informacin que, como lo determinan los bytes de longitud,
son 7 caracteres. El contenido es siempre el mismo para este comando.
Byte 14: Los NOKIA son telfonos de 16 bit, por lo que la trama debe tener un nmero par de
bytes y este es el carcter de relleno que hace posible esto, para este caso.
Bytes 15 y 16: El penltimo byte siempre es el checksum impar y el ltimo es el checksum par. VI
Estos checksum se obtienen realizando la operacin lgica XOR de todos los bytes
impares por un lado y pares por el otro, colocando los resultados en cada byte
checksum correspondiente. Es decir (descartando los bytes nulos):
0x1E XOR 0x0C XOR 0x60 = 0x72
0xD1 XOR 0x07 XOR 0x01 XOR 0x03 XOR 0x01 = 0xD5

IV

Para facilitar la comprensin de las tramas, aquellas enviadas por la PC (o el microcontrolador) estn con letras
rojas y las respuestas del telfono, en azul. Cada byte est expresado en formato hexadecimal.

Se ver luego que la longitud mxima de la trama nunca es mayor de 130 bytes, se deduce entonces, que el byte
ms significativo de la longitud (el byte 5) es siempre cero.
VI

Checksum (SUMmation CHECK): Suma de control.

2006

Protocolo F-BUS de NOKIA

42

Posicionador Satelital
Comunicado Por
Telefona Celular

En resumen:
Byte: 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16
1E 00 0C D1 00 07 00 01 00 03 00 01 60 00 72 D5
F-BUS id.

Destino
Origen
Comando
Longitud
Bloque principal
Byte de relleno
Checksum

Luego de enviada la trama anterior, el celular responde con las dos tramas siguientes:
01 02 03 04 05 06 07 08 09 10
1E 0C 00 7F 00 02 D1 00 CF 71
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
1E 0C 00 D2 00 2B 01 00 00 03 56 20 35 2E 32 39 0A 32 32 2D 31 30 2D 30 34 0A
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
52 48 2D 33 31 0A 33 32 30 30 0A 28 63 29 20 4E 6F 6B 69 61 00 01 47 00 1B E3

La primera trama es la de reconocimiento que, en este caso, significa el acuse de recibo por parte
del telfono al haber recibido e interpretado el comando que se le envi.
El que sigue es el significado de cada carcter:
Byte 1: Identificador F-BUS. Siempre 0x1E.
Byte 2: Destino. Ahora destino y origen se invierten por lo tanto la meta de la respuesta es la PC o
el micro, esto es 0x0C.
Byte 3: Origen. 0x00 para el telfono.
Byte 4: Tipo de instruccin. 0x7F es acknowledge o reconocimiento.
Bytes 5 y 6: Longitud del bloque principal. Siempre son dos bytes para el reconocimiento.
Bytes 7 y 8: Bloque principal de la trama. El primer byte devuelve el comando original, esto es
0xD2. El ltimo byte devuelve el nmero de secuencia de la trama solicitante. Este
nmero se ver con ms detenimiento en instrucciones posteriores, por el momento
decimos que, como se trata de la respuesta al primer comando, este nmero es 0x00.
Bytes 9 y 10: Al igual que la trama anterior, representan los bytes de checksum.
La segunda trama es la respuesta del telfono y su estructura es:
Bytes 1, 2 y 3: F-BUS id., destino y origen; como en los casos anteriores.
Byte 4: Comando. En la respuesta, como en el pedido, 0xD2; o versin de hardware y software.
Bytes 5 y 6: Longitud, bloque principal de 43 caracteres.

2006

Protocolo F-BUS de NOKIA

43

Posicionador Satelital
Comunicado Por
Telefona Celular

Bytes 7 al 49: Bloque principal, cuyo equivalente en ASCII es:


..V 5.29.22-10-04.RH-31.3200.(c) Nokia.....

Esta cadena indica que el celular es un NOKIA 3200, software RH-31 versin 5.29;
compilada el 22 de octubre del 2004.
El penltimo byte del bloque (0x01) indica cuantas tramas quedan para que finalice
la respuesta a la instruccin requerida. Esto es necesario debido a que las tramas
deben tener una longitud mxima de 130 caracteres y, en aquellos casos en que la
respuesta requiere una cantidad mayor de bytes, se utilizan mensajes multi-trama
en donde a travs de este anteltimo byte, se indica las cadenas que faltan para
terminar el mensaje, incluyndose la cadena corriente. En este ejemplo en
particular, tenemos una sola trama y por ello el valor de dicho byte es uno.
El ltimo byte del bloque (0x47) es la suma de 0x40 ms el nmero de secuencia
de trama del telfono. Este es un nmero de tres bits que se incrementa en uno por
cada trama (exceptuando las de reconocimiento). Se desprende en consecuencia,
que los valores posibles del ltimo byte son: 0x40, 0x41, 0x42, 0x43, 0x44, 0x45,
0x46 y 0x47.
Byte 50: Byte de relleno para lograr que la trama tenga una cantidad par de bytes.
Bytes 51 y 52: Checksum.
En este punto, el dispositivo conectado al telfono, luego de interpretar y verificar las cadenas
anteriores, debe decirle al celular que comprendi el mensaje. Esto se hace enviando la trama
de reconocimiento que, para el ejemplo, es la siguiente:
1E 00 0C 7F 00 02 D2 07 C0 7A

Se ve aqu que esta cadena tiene la misma estructura que la trama de reconocimiento expuesta
antes, pero obviamente, con los bytes de origen y de destino intercambiados y 0x07 como nmero
de secuencia de la trama enviada por el telfono; es decir 0x47 0x40.
La secuencia completa a enviar, siempre que se quiera iniciar una comunicacin por medio del
estndar F-BUS, es en consecuencia:
55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
1E 00 0C D1 00 07 00 01 00 03 00 01 60 00 72 D5
1E 0C 00 7F 00 02 D1 00 CF 71
1E 0C 00 D2 00 2B 01 00 00 03 56 20 35 2E 32 39 0A 32 32 2D 31 30 2D 30 34 0A
52 48 2D 33 31 0A 33 32 30 30 0A 28 63 29 20 4E 6F 6B 69 61 00 01 47 00 1B E3
1E 00 0C 7F 00 02 D2 07 C0 7A

2006

Protocolo F-BUS de NOKIA

44

Posicionador Satelital
Comunicado Por
Telefona Celular

6.3. Estructura general de las tramas F-BUS


A partir del ejemplo anterior y de las instrucciones que se desarrollan ms adelante, se puede
establecer el siguiente formato general de los comandos F-BUS:
{ F-BUS ID, destino, origen, tipo, 0x00, longitud (n), bloque1, bloque2, ...
..., bloquen-2, restantes, sec., relleno?, checksum1, checksum2 }
Donde:
F-BUS

ID: identificador de trama F-BUS. 0x1E para transmisin serial por cable; 0x1C para
comunicacin infrarroja (IR).

destino: dispositivo

destino de la trama. 0x00 para el telfono celular; 0x0C o 0x10 para


el dispositivo conectado al mvil (PC por ejemplo).

origen: fuente de los

datos. 0x00 para el telfono celular; 0x0C o 0x10 para el dispositivo


conectado al mvil (microcontrolador por ejemplo).

tipo:

instruccin o tipo de directiva. Por ejemplo, 0xD2 para versin de software y


hardware; 0x14 para directivas de SMS; 0x17 para estado de batera; etc.

longitud:
bloquej:

cantidad de caracteres del bloque principal (n bytes).

byte j del bloque principal de la trama. Su contenido depende de cada tipo de


instruccin.

restantes:

sec.:

byte de secuencia de trama en la forma 0x, donde:


= 4 para mensajes de una sola trama; tambin,
= 4 para la primera trama en mensajes multi-trama;
= 0 para las tramas distintas a la primera en mensajes multi-trama; y
es el nmero de secuencia de la trama. Este valor, cuyo formato es de tres bits,
debe incrementarse en uno por cada trama. Hay un nmero de secuencia en las
tramas de origen, y otro nmero de secuencia en las respuestas, independientes uno
del otro. Por supuesto 0 < < 7.

relleno:

2006

en mensajes multi-trama, nmero de tramas restantes para finalizar la


instruccin en curso. 0x01 para la ltima trama o para mensajes mono-trama.

byte de relleno necesario para que la trama tenga una cantidad par de bytes. Si
es necesario, su valor siempre es 0x00.

checksum1:

operacin lgica O exclusiva (XOR) sobre todos los bytes impares de la trama.

checksum2:

O exclusiva (XOR) sobre todos los caracteres pares de la cadena.

Protocolo F-BUS de NOKIA

45

Posicionador Satelital
Comunicado Por
Telefona Celular

La trama de reconocimiento o acknowledge, siempre es de la forma que sigue:


{ F-BUS ID, destino, origen, 0x7F, 0x00, 0x02, tipoack, sec.ack, checksum1, checksum2 }
Aqu vemos que el tipo de trama siempre es 0x7F y que la longitud del bloque principal siempre
es 0x02. Esos dos bytes son:
tipoack:

es el tipo de directiva o instruccin que se ha reconocido.

sec.ack:

es el byte de secuencia reconocido, en la forma 0x, donde es el nmero de


secuencia (de formato binario tres) de la trama reconocida y = 0 si la secuencia
en la otra parte es correcta, o = 8 si la secuencia es incorrecta.

Cuando el celular enva una trama y su contraparte no se enva la cadena de reconocimiento, el


telfono reenva la trama original; si aqu no hay respuesta, el telfono enva la trama por tercera
vez, suspendiendo la comunicacin si tampoco hay respuesta.
Vase a partir de estas descripciones, que cuando se recibe una cadena, adems de verificarse los
nmeros de checksum, deben controlarse el nmero de secuencia. Por ejemplo, si se reciben las
siguientes cuatro tramas consecutivas:
1E 0C 00 17 00 0C 01 30 00 0B 01 01 16 04 07 07 01 46 0E 68
1E 0C 00 0A 00 08 00 60 00 1E 63 54 01 47 7C 63
1E 0C 00 0A 00 08 00 60 00 1E 62 54 01 40 7D 64
1E 0C 00 0A 00 08 00 60 00 1E 61 54 01 44 7E 60

Vemos que los bytes de secuencia son 0x46, 0x47, 0x40 y 0x44, respectivamente. Entonces, las
cadenas de reconocimiento para cada una de las tramas, seran:
1E 0C 00 17 00 0C 01 30 00 0B 01 01 16 04 07 07 01 46 0E 68
1E 00 0C 7F 00 02 17 06 05 7B
1E 0C 00 0A 00 08 00 60 00 1E 63 54 01 47 7C 63
1E 00 0C 7F 00 02 0A 07 18 7A
1E 0C 00 0A 00 08 00 60 00 1E 62 54 01 40 7D 64
1E 00 0C 7F 00 02 0A 00 18 7D
1E 0C 00 0A 00 08 00 60 00 1E 61 54 01 44 7E 60
1E 00 0C 7F 00 02 0A 84 18 79

Fijndose de esta manera, el error de secuencia de la cuarta trama.


A partir de aqu se describen los principales comandos utilizados en el presente proyecto.

2006

Protocolo F-BUS de NOKIA

46

Posicionador Satelital
Comunicado Por
Telefona Celular

6.4. Estado de batera del telfono mvil


Los celulares de la serie 3xxx de NOKIA presentan el estado de carga de la batera en la pantalla
por medio de siete pequeas barras verticales que, cuando todas tienen su interior despintado
significa que la batera est completamente descargada, y que cuando todas las barritas estn
pintadas, la batera est plenamente cargada.
21:53
CTI M
Mvil

En la ilustracin de la izquierda hay cinco barras


coloreadas, por lo tanto la batera tiene una carga del
70 % aproximadamente.

Nokia 3200

Men
Figura 3: Estado de la batera en pantalla.

Por medio del protocolo F-BUS se puede obtener esta informacin para, por ejemplo, controlar
electrnicamente el cargador del aparato. El tipo de instruccin utilizado para tal fin es 0x17,
tiene un bloque principal de ocho caracteres y presenta la siguiente estructura:
{ F-BUS ID, 0x00, 0x0C, 0x17, 0x00, 0x08, 0x00, 0x01, 0x00, 0x0A, 0x02, 0x00, 0x01, sec.,
checksum1, checksum2 }
El telfono, luego de reconocer la trama, responde con una cadena de doce bytes en el bloque
principal, en la forma:
{ F-BUS ID, 0x0C, 0x00, 0x17, 0x00, 0x0C, 0x01, 0x30, 0x00, 0x0B, 0x01, 0x01,
VII
0x16, 0x04, 0x07, barras, 0x01, sec., checksum1, checksum2 }
Donde en el byte barras estn consignadas la cantidad de barras rellenas. Desde luego en dicho
byte siempre habr un valor del 0 al 7. Para el ejemplo de cinco barras coloreadas visto antes, la
secuencia de tramas seran las que siguen:
1E 00 0C 17 00 08 00 01 00 0A 02 00 01 41 11 55
1E 0C 00 7F 00 02 17 01 09 70
1E 0C 00 17 00 0C 01 30 00 0B 01 01 16 04 07 05 01 43 0E 6F
1E 00 0C 7F 00 02 17 03 05 7E

El byte resaltado indica entonces, que cinco de las siete barras estn rellenas.

VII

No tenemos determinado el significado exacto de los bytes anotados en verde. A los fines prcticos y para el
presente proyecto, tienen siempre el mismo valor consignado en cada carcter.

2006

Protocolo F-BUS de NOKIA

47

Posicionador Satelital
Comunicado Por
Telefona Celular

6.5. Instrucciones SMS


El servicio de mensajes de texto corto (SMSVIII) est disponible en la actualidad en la mayora de
los telfonos mviles digitales y su desarrollo est dado mayormente en aquellos aparatos de
tecnologa GSMIX.
Este servicio punto a punto provee un medio de envo de mensajes de texto de tamao limitado
entre celulares, valindose de un centro de servicio brindado por la compaa telefnica, que se
encarga de recibir, almacenar y transmitir los mensajes entre las partes.
Antes de describir la instruccin F-BUS para enviar SMS, describimos ahora como se hace el
empaquetado de los mensajes de texto. Este mtodo que reduce la cantidad de bytes del SMS, no
solo es usado por el estndar F-BUS, sino tambin por otros protocolos.

6.5.1. Empaquetado de SMS


El mapa convencional de caracteres del alfabeto soportado por el sistema SMS, es de siete bits
por carcter (similar al formato ASCII) y presenta los siguientes smbolos:

VIII
IX

bit 4

bit 3

bit 2

bit 1

bit 7
bit 6
bit 5
Hexa

0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1

0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1

0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F

0
0
0
0
@

LF

CR

0
0
1
1

ES

0
1
0
2
SP
!
"
#

%
&
'
(
)
*
+
,
.
/

0
1
1
3
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?

1
0
0
4

A
B
C
D
E
F
G
H
I
J
K
L
M
N
O

1
0
1
5
P
Q
R
S
T
U
V
W
X
Y
Z

1
1
0
6

a
b
c
d
e
f
g
h
i
j
k
l
m
n
o

1
1
1
7
p
q
r
s
t
u
v
w
x
y
z

Short Message Service

Global System for Mobile communications, estndar ms popular para redes celulares en el mundo.

2006

Protocolo F-BUS de NOKIA

48

Posicionador Satelital
Comunicado Por
Telefona Celular

Para describir el empaquetado, tomamos los caracteres genricos a, b, c, ..., z; siendo el subndice
6 el bit de ms peso y el 0 el de menos peso en cada carcter. Si tenemos la secuencia:
a6 a5 a4 a3
b6 b5 b4 b3
c6 c5 c4 c3
M
z6 z5 z4 z3

a2 a1 a0
b2 b1 b0
c2 c1 c0
z2 z1 z0

El empaquetamiento de los caracteres de 7 bits en octetos se hace moviendo cada bit en la forma:
b0 a6 a5 a4 a3 a2 a1 a0
c1 c0 b6 b5 b4 b3 b2 b1
d2 d1 d0 c6 c5 c4 c3 c2
M
z2 z1 z0 y6 y5 y4 y3 y2
0 0 0 0 z6 z5 z4 z3
Para completar el ltimo octeto, si es necesario, se lo llena con ceros a la izquierda.
Presentamos ahora dos ejemplos para comprender mejor el mtodo. Tomamos la palabra hola
y anotamos sus representaciones equivalentes:
h
o
l
a

1
1
1
1

0x68
0x6F
0x6C
0x61

1
1
1
1

0
0
0
0

1
1
1
0

0
1
1
0

0
1
0
0

0
1
0
1

Acomodamos los bits en octetos:


1 1 1 0 1 0 0
0 0 1 1 0 1 1
0 0 1 1 1 0 1
1 1 0

0
1
1
0

Agregamos los ceros necesarios en el ltimo byte y consignamos su equivalente hexadecimal:


1
0
0
0

1
0
0
0

1
1
1
0

0
1
1
0

1
0
1
1

0
1
0
1

0
1
1
0

0
1
1
0

0xE8
0x37
0x3B
0x0C

Por lo tanto el equivalente empaquetado de hola es: E8 37 3B 0C

2006

Protocolo F-BUS de NOKIA

49

Posicionador Satelital
Comunicado Por
Telefona Celular

Hacemos lo mismo con la frase Buenas tardes.:


B
u
e
n
a
s

1
1
1
1
1
1
0
1
1
1
1
1
1
0

0x42
0x75
0x65
0x6E
0x61
0x73
0x20
0x74
0x61
0x72
0x64
0x65
0x73
0x2E

t
a
r
d
e
s
.

0
1
1
1
1
1
1
1
1
1
1
1
1
1

0
1
0
0
0
1
0
1
0
1
0
0
1
0

0
0
0
1
0
0
0
0
0
0
0
0
0
1

0
1
1
1
0
0
0
1
0
0
1
1
0
1

1
0
0
1
0
1
0
0
0
1
0
0
1
1

0
1
1
0
1
1
0
0
1
0
0
1
1
0

Empaquetado en octetos:
1
0
1
0
1
1
1
0
0
1
0
0
0

1
1
1
0
0
0
1
1
0
0
0
1
0

0
1
0
0
0
0
1
1
1
1
1
1
0

0
1
1
1
1
0
0
0
1
1
1
1
0

0
1
1
1
1
0
1
0
1
1
1
0
0

0
0
0
1
1
0
0
0
0
0
1
1
0

1
1
0
0
1
1
0
0
0
0
0
1
0

0
0
1
1
0
1
0
1
1
1
0
1
1

0xC2
0x7A
0xD9
0x1D
0x9E
0x83
0xE8
0x61
0x39
0xB9
0x3C
0x77
0x01

Entonces, los 14 caracteres de Buenas tardes. quedan empaquetados en 13 octetos:


C2 7A D9 1D 9E 83 E8 61 39 B9 3C 77 01

De modo general, si se tiene una cadena formada con una cantidad q de caracteres, al
empaquetarla se obtiene una cadena de p octetos, siendo:
p=

7q
8

La normativa indica que el nmero mximo de caracteres para un mensaje de texto convencional
es de 160 smbolos de 7 bits. X
Por consiguiente es posible empaquetar 160 caracteres en (7x160)/8 = 140 octetos.

Especificacin tcnica GSM 03.38 Alphabets and language-specific information.

2006

Protocolo F-BUS de NOKIA

50

Posicionador Satelital
Comunicado Por
Telefona Celular

6.5.2. Envo de SMS


El tipo de comando para enviar mensajes de texto usando el protocolo F-BUS es 0x02. Como esta
instruccin siempre es enviada al telfono para que el aparato enve el SMS, el destino y el origen
consignados en la trama son siempre los bytes 0x00 y 0x0C respectivamente. Teniendo en cuenta
esto, el formato general de la trama es el siguiente:
{ F-BUS ID, 0x00, 0x0C, 0x02, 0x00, l0 (n), 0x00, 0x01, 0x00, 0x02, 0x01, 0x00, 0x01,
0x55, 0x55, 0x01, 0x02, l1 (n-12), 0x11, 0x00, 0x00, 0x00, 0x00, 0x04, 0x82,
0x0C, 0x01, 0x07, 0x0A, TDtipo, TD1, TD2, TD3, TD4, TD5, TD6, 0x82, 0x0C, 0x02, 0x08,
0x07, CStipo, CS1, CS2, CS3, CS4, CS5, CS6, 0x80, l2, l3 (p), l4 (q), SMS1, SMS2, ...
..., SMSp, r1?, r2?, r3?, 0x08, tag, 0x01, 0xA7, 0x01, sec., checksum1, checksum2 }
Donde:
l0 :

longitud del bloque principal (n bytes).

l1 :

cantidad de bytes que restan para terminar el bloque principal, o n-12 bytes.

TDtipo: tipo de nmero de telfono destino. Sus posibles valores son:


0xA1 para numeracin nacional;
0x91 para formato internacional; o
0x81 para formato numrico desconocido (lo determina el centro
TDj:

de servicio). XI

byte j del nmero destino, en formato BCD con niveles intercambiados en cada byte.
Tomando como ejemplo el nmero +54 (353) 1234567, el carcter TDtipo y los seis TD
pueden ser identificados como sigue:
91 45 53 13 32 54 76

en numeracin internacional; o
A1 53 13 32 54 76 00

para el formato nacional.


CStipo: tipo
CSj:

de nmero del centro de servicio de la telefnica, similar a TDtipo.

byte j del nmero de centro de servicio de la lnea del celular de origen, tambin en
formato de niveles intercambiados. Por ejemplo para el nmero +543200000001 de la
compaa CTI, los seis bytes son:
45 23 00 00 00 10

Si el nmero tiene una cantidad impar de dgitos, se completa el ltimo byte con una
F. Entonces, para el nmero de MOVISTAR +54079000801, tenemos:
45 70 09 00 08 F1

Si queda algn byte completo sin llenar, se lo completa con el valor 0x00. Por
ejemplo, para el nmero +614119903, los seis bytes CS son:
16 14 91 09 F3 00

XI

La representacin ms correcta de este byte es (en binario): 1tttiiii; donde los bits t representan el tipo de
nmero, y los bits i se corresponden con el plan de identificacin numrica. Para ms informacin, vase la
especificacin tcnica GSM 03.40, seccin 9.1.2.5.

2006

Protocolo F-BUS de NOKIA

51

Posicionador Satelital
Comunicado Por
Telefona Celular

l2 :

cantidad de bytes que restan para llegar al byte tag.

l3 :

longitud en bytes del SMS empaquetado (p = 7q/8).

l4 :

longitud del SMS original (q).

SMSj:

byte j del SMS en formato empaquetado.

r1, r2, r3:

tag:

bytes de relleno. El bloque empaquetado del SMS debe tener una cantidad de
bytes que sea mltiplo de cuatro. Por lo tanto si p no lo es, deben agregarse uno,
dos o tres bytes 0x00 de relleno que sumados a los p bytes del SMS cumplan
con la regla.

etiqueta utilizada como referencia para l2. Su contenido siempre es el byte 0x04.

Despus de recibir y reconocer la trama anterior, el telfono procesa la informacin y enva el


mensaje de texto al centro de servicio que se encargar de transmitirlo al mvil destinatario.
Terminada su tarea, el celular enva una trama con el siguiente formato:
{ F-BUS ID, 0x0C, 0x00, 0x02, 0x00, 0x10, 0x01, 0x61, 0x00, 0x03, 0x00, 0x01, 0x0C,
0x08, 0x00, 0x00, mem., 0x08, verif., 0x00, 0x01, sec., checksum1, checksum2 }
Esta cadena indica que el mensaje ha sido enviado y que qued registrado en la posicin mem. del
celular, y que su cdigo de verificacin es verif.
Como muestra colocamos la trama completa (y sus correspondientes respuestas) para enviar el
SMS hola al destino (353) 1234567 por medio de un telfono con lnea CTI:
1E 00 0C 02 00 38 00 01 00 02 01 00 01 55 55 01 02 2C 11 00 00 00 00 04 82 0C
01 07 0A 81 53 13 32 54 76 00 82 0C 02 08 07 91 45 23 00 00 00 10 80 08 04 04
E8 37 3B 0C 08 04 01 A7 01 42 57 F8
1E 0C 00 7F 00 02 02 02 1C 73
1E 0C 00 02 00 10 01 61 00 03 00 01 0C 08 00 00 A7 08 64 00 01 44 D1 39
1E 00 0C 7F 00 02 02 04 10 79

Hacemos lo mismo ahora con el mensaje Buenas tardes.:


1E 00 0C 02 00 44 00 01 00 02 01 00 01 55 55 01 02 38 11 00 00 00 00 04 82 0C
01 07 0A 81 53 13 32 54 76 00 82 0C 02 08 07 91 45 23 00 00 00 10 80 14 0D 0E
C2 7A D9 1D 9E 83 E8 61 39 B9 3C 77 01 00 00 00 08 04 01 A7 01 43 E4 F7
1E 0C 00 7F 00 02 02 03 1C 72
1E 0C 00 02 00 10 01 61 00 03 00 01 0C 08 00 00 A8 08 62 00 01 45 D8 38
1E 00 0C 7F 00 02 02 05 10 78

2006

Protocolo F-BUS de NOKIA

52

Posicionador Satelital
Comunicado Por
Telefona Celular

6.5.3. Lectura de los SMS guardados en el telfono


Para leer los mensajes en la bandeja de entrada del celular, primero debe saberse en que lugares
especficos de la memoria se encuentran. Para ello, se usa una trama de doce bytes en el bloque
principal, de tipo 0x14, de la siguiente forma:
{ F-BUS ID, 0x00, 0x0C, 0x14, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x02, 0x0F,
0x55, 0x55, 0x55, 0x01, sec., checksum1, checksum2 }
El telfono, luego de reconocer la trama, responde con una cadena multi-trama en donde se
consignan la cantidad de SMS almacenados y las posiciones de memoria en donde estn
guardados dichos mensajes, ordenados segn la fecha y hora en que se recibieron de modo
descendente, es decir, brindando la posicin de memoria del SMS ms reciente primero y luego
las dems hasta la posicin del mensaje registrado ms antiguo.
Concretamente la respuesta est compuesta de seis tramas, donde los bloques principales de las
primeras cinco son de 122 bytes y el de la ltima es de 20 bytes, siendo la estructura de la primera
cadena:
{ F-BUS ID, 0x0C, 0x00, 0x14, 0x00, 0x7A, 0x00, 0x59, 0x00, 0x0D, 0x00, 0x00,
CANTIDAD, cantidad, M1, m1, M2, m2, M3, m3, ...
..., M55, m55, M56, m56, 0x06, sec., checksum1, checksum2 }
Donde:
CANTIDAD:

byte ms significativo del nmero de SMS almacenados en la memoria.

cantidad:

byte de peso menor del nmero de SMS en la memoria del telfono.

Mj :

byte de mayor peso de la posicin de memoria donde est guardado el mensaje j.

mj :

byte de peso menos significativo en la posicin de memoria del mensaje j.

La segunda cadena es de la forma:


{ F-BUS ID, 0x0C, 0x00, 0x14, 0x00, 0x7A, M57, m57, M58, m58, ...
..., M115, m115, M116, m116, 0x05, sec., checksum1, checksum2 }
De manera similar, los formatos de las tramas tercera, cuarta y quinta son:
{ F-BUS ID, 0x0C, 0x00, 0x14, 0x00, 0x7A, M117, m117, M118, m118, ...
..., M175, m175, M176, m176, 0x04, sec., checksum1, checksum2 }
{ F-BUS ID, 0x0C, 0x00, 0x14, 0x00, 0x7A, M177, m177, M178, m178, ...
..., M235, m235, M236, m236, 0x03, sec., checksum1, checksum2 }
{ F-BUS ID, 0x0C, 0x00, 0x14, 0x00, 0x7A, M237, m237, M238, m238, ...
..., M295, m295, M296, m296, 0x02, sec., checksum1, checksum2 }

2006

Protocolo F-BUS de NOKIA

53

Posicionador Satelital
Comunicado Por
Telefona Celular

Finalmente la estructura de la sexta cadena es:


{ F-BUS ID, 0x0C, 0x00, 0x14, 0x00, 0x14, M297, m297, M298, m298, ...
..., M304, m304, M305, m305, 0x01, sec., checksum1, checksum2 }
Se aprecia que el protocolo admite telfonos cuya bandeja de entrada tenga una capacidad
mxima de hasta 305 mensajes de texto. Recordamos que el ordenamiento de las posiciones de
memoria en la trama es descendente con respecto a la fecha y hora de llegada del mensaje, de
manera tal que en la posicin [M1, m1] est el mensaje ms reciente.
Los lugares de memoria vacos, ya sea porque el telfono tenga un tamao de memoria menor a
305 o porque la memoria no est llena, se completan con bytes nulos. Supongamos, por ejemplo,
que en el telfono hay cinco SMS, entonces los bytes [Mj, mj] para 6 < j < 305 sern [0x00, 0x00].
La trama para leer un SMS particular en una posicin especfica en la memoria del celular, tiene
doce bytes en el bloque principal y su formato es:
{ F-BUS ID, 0x00, 0x0C, 0x14, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x02,
0x00, 0x02, M, m, L, 0x00, 0x01, sec., checksum1, checksum2 }
Donde:
M:

byte de mayor peso de la posicin de memoria donde est guardado el mensaje que
queremos leer.

m:

byte de peso menos significativo de la posicin de memoria del mensaje de texto.

L:

byte que indica al telfono si debe marcar como ledo al mensaje. Si su contenido es
0x01 marca al mensaje guardado en la posicin [M, m] como ledo, si es
0x00 deja al mensaje como no ledo.

La respuesta a este pedido presenta la siguiente estructura:


{ F-BUS ID, 0x0C, 0x00, 0x14, 0x00, l0 (n), 0x00, 0x59, 0x00, 0x03, 0x00, 0x01, 0x00,
0x02, M, m, 0x00, 0x00, 0x00, 0x01, 0x00, l1 (n-16), 0x04, 0x00, 0x00, ao, mes, da,
hora, min., seg., 0x00, 0x00, 0x00, 0x00, 0x03, 0x82, 0x10, 0x01, 0x09, 0x0D,
TOtipo, TO1, TO2, TO3, TO4, TO5, TO6, TO7, 0x00, 0x00, 0x00, 0x82, 0x0C, 0x02, 0x08, 0x07,
CStipo, CS1, CS2, CS3, CS4, CS5, CS6, 0x80, l2 (n-60), l3 (p), l4 (q), SMS1, SMS2, ...
..., SMSp-1, SMSp, r1?, r2?, r3?, 0x01, sec., checksum1, checksum2 }
Donde:
l0 :

longitud del bloque principal (n bytes).

l1 :

cantidad de bytes que restan para terminar el bloque principal, o n-16 bytes.

ao, mes, da:

fecha de envo del mensaje en formato BCD con niveles intercambiados en


cada byte. Por ejemplo, para un SMS enviado el 14 de mayo de 2006, estos
tres bytes quedan en la siguiente forma:
60 50 41

2006

Protocolo F-BUS de NOKIA

54

Posicionador Satelital
Comunicado Por
Telefona Celular

hora, min., seg.:

hora en que fue enviado el SMS, tambin en BCD con niveles


intercambiados. Para un mensaje enviado a las 18:32:07 los bytes son:
81 23 70

TOtipo: tipo de nmero del telfono de origen. Sus posibles valores son:
0xA1 para numeracin nacional;
0x91 para formato internacional; o
0x81 para formato numrico desconocido (lo determina el centro
TOj:

de servicio).

byte j del nmero que envi el mensaje de texto, en formato BCD con niveles
intercambiados en cada byte. Tomando por ejemplo el nmero +54 9 (353) 1234567,
el carcter TOtipo y los siete TD pueden ser identificados como sigue:
91 45 39 35 21 43 65 F7

en numeracin internacional; o
A1 53 13 32 54 76 00 00

para el formato nacional.


CStipo: tipo

de nmero del centro de servicio de donde proviene el mensaje. Como antes


con TOtipo, puede ser 0xA1, 0x91 o 0x81.

CSj:

byte j del nmero de centro de servicio de donde proviene el mensaje de texto,


tambin en formato de niveles intercambiados. Por ejemplo para el nmero
+543200000001, los seis bytes son:
45 23 00 00 00 10

l2 :

cantidad de bytes que restan para terminar el bloque principal, o n-60 bytes.

l3 :

longitud en bytes del SMS almacenado en forma empaquetada (p = 7q/8).

l4 :

longitud del SMS sin empaquetar (q).

SMSj:

byte j del SMS almacenado en formato empaquetado.

r1, r2, r3:

bytes de relleno necesarios para que el bloque SMS sea mltiplo de cuatro.

Se ejemplifican ahora todas las tramas utilizadas para leer un SMS almacenado, con sus
correspondientes reconocimientos y respuestas, para la hipottica situacin en que se quiera
obtener el ltimo mensaje de texto que lleg a un telfono que tiene diez mensajes almacenados
en su bandeja de entrada.
1E 00 0C 14 00 0C 00 0B D6 0C 00 02 0F 55 55 55 01 44 9F 59
1E 0C 00 7F 00 02 14 04 0A 75
1E 0C 00 14 00 7A 0B 59 D6 0D 00 00 00 0A 00 3B 00 3A 00 35 00 33 00 30 00 2E
00 2A 00 27 00 24 00 21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 47 C5 6A
1E 00 0C 7F 00 02 14 07 06 7A

2006

Protocolo F-BUS de NOKIA

55

Posicionador Satelital
Comunicado Por
Telefona Celular

1E 0C 00 14 00 7A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 1B 62
1E 00 0C 7F 00 02 14 00 06 7D
1E 0C 00 14 00 7A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 01 1A 63
1E 00 0C 7F 00 02 14 01 06 7C
1E 0C 00 14 00 7A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 02 1D 60
1E 00 0C 7F 00 02 14 02 06 7F
1E 0C 00 14 00 7A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 03 1C 61
1E 00 0C 7F 00 02 14 03 06 7E
1E 0C 00 14 00 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 04
1F 08
1E 00 0C 7F 00 02 14 04 06 79
1E 00 0C 14 00 0C 00 00 00 02 00 02 00 3B 01 00 01 45 12 66
1E 0C 00 7F 00 02 14 05 0A 74
1E 0C 00 14 00 50 00 59 00 03 00 01 00 02 00 3B 00 00 00 01 00 40 04 00 00 60
20 71 02 94 14 00 00 00 00 03 82 10 01 09 0D 91 45 53 13 32 54 76 00 00 00 00
82 0C 02 08 07 91 45 23 00 00 00 10 80 14 0D 0E C2 7A D9 1D 9E 83 E8 61 39 B9
3C 77 01 00 00 00 01 45 87 C0
1E 00 0C 7F 00 02 14 05 06 78

Puede verse que los diez mensajes estn en las posiciones 0x3B, 0x3A, 0x35, 0x33, 0x30, 0x2E,
0x2A, 0x27, 0x24, 0x21 de la memoria del telfono, y que el ltimo en llegar contiene la frase
Buenas tardes. en la posicin 0x3B y fue enviado el 17/02/2006 a las 20:49:41 horas.

2006

Protocolo F-BUS de NOKIA

56

Posicionador Satelital
Comunicado Por
Telefona Celular

6.6. Otras instrucciones


A modo informativo y en formato de ejemplo, se consignan ahora algunas directivas F-BUS que no
se utilizan en este proyecto, pero que han sido verificadas para los telfonos de la serie 3xxx.

6.6.1. IMEI
Para obtener el IMEIXII de un aparato en particular, se utiliza el siguiente comando:
1E 00 0C 1B 00 07 00 01 00 00 41 01 42 00 11 1C

La respuesta es en la forma que sigue:


1E 0C 00 1B 00 1C 01 33 00 01 00 01 41 14 00 10 33 35 36 32 32 39 30 30 30 34
36 35 35 36 32 00 01 40 59 45

Para este caso, los bytes resaltados equivalen, en ASCII, al nmero de IMEI: 356229000465562.

6.6.2. Operador de servicio


Si se quiere lograr el nombre de la empresa que brinda el servicio telefnico a la lnea del mvil
debe emplearse la instruccin:
1E 00 0C 0A 00 07 00 01 00 00 00 01 45 00 57 0D

La rplica a dicho pedido puede ser la siguiente:


1E 0C 00 0A 00 58 01 60 00 01 00 04 00 18 00 02 00 08 00 43 00 54 00 49 00 4D
00 6F 00 76 00 69 00 6C 00 00 09 14 04 B0 00 00 EF DE 27 02 13 01 00 01 02 01
00 01 00 00 0A 18 01 00 00 09 00 43 00 54 00 49 00 20 00 4D 00 6F 00 76 00 69
00 6C 0A 0C 00 00 00 03 00 43 00 54 00 49 01 43 CB 72

El equivalente en ASCII de los bytes resaltados es C.T.I. .M.o.v.i.l., en este ejemplo.

XII

IMEI: International Mobile Equipment Identity o identidad internacional de equipo mvil. Es un nmero
pregrabado en el telfono que individualiza cada aparato en particular ya que al conectarse, lo enva a la red de
manera tal que las empresas operadoras de servicio pueden verificar si el aparato est habilitado para su pleno
funcionamiento. Entre otras cosas, este valor posee informacin del fabricante, del pas de origen, nmero de serie,
etc.; y puede visualizarse en pantalla oprimiendo la combinacin de teclas *#06#.

2006

Protocolo F-BUS de NOKIA

57

Posicionador Satelital
Comunicado Por
Telefona Celular

6.6.3. Agenda
Para obtener los datos de la agenda por medio del protocolo F-BUS, el comando utilizado es:
1E 00 0C 03 00 14 00 01 00 07 01 01 00 01 FE 06 00 00 00 00 00 A9 00 00 01 41
EC FF

El primer byte resaltado indica si debe buscarse en la memoria de la tarjeta SIMXIII (0x06) o en la
memoria del telfono (0x05). El segundo carcter resaltado (0xA9) es la direccin de memoria
que se desea inspeccionar.
La respuesta al pedido anterior podra ser la siguiente:
1E 0C 00 03 00 48 01 55 00 08 00 01 01 00 00 10 00 06 00 A9 00 00 00 00 00 00
00 02 07 00 00 1C 01 16 00 50 00 72 00 65 00 66 00 65 00 63 00 74 00 75 00 72
00 61 00 00 0B 00 00 14 02 00 00 00 00 08 00 31 00 30 00 36 00 00 00 00 01 46
10 E8

Si buscamos el equivalente en cdigo ASCII de los valores resaltados vemos que en la posicin
0xA9 est almacenado el nmero 106 que pertenece a Prefectura.
Para pedir la entrada a la agenda en la primera posicin de la memoria del telfono, el pedido es:
1E 00 0C 03 00 14 00 01 00 07 01 01 00 01 FE 05 00 00 00 00 00 01 00 00 01 44
EC 51

Una probable rplica:


1E 0C 00 03 00 7A 01 55 00 08 00 01 01 00 00 10 00 05 00 01 00 00 00 00 00 00
00 05 07 00 00 20 01 18 00 52 00 ED 00 6F 00 20 00 55 00 72 00 75 00 67 00 75
00 61 00 79 00 00 00 00 0B 00 00 20 02 00 00 00 00 16 00 33 00 35 00 33 00 34
00 35 00 33 00 34 00 31 00 36 00 34 00 00 0B 00 00 24 03 0A 00 00 00 18 00 30
00 38 00 30 00 30 00 34 00 34 00 34 00 31 00 34 00 34 00 31 00 00 02 41 1B C9
1E 0C 00 03 00 54 00 00 0B 00 00 20 04 0A 00 00 00 16 00 31 00 31 00 34 00 D5
00 30 00 37 00 32 00 32 00 32 00 32 00 00 09 00 00 30 05 2A 00 43 00 61 00 72
00 6C 00 6F 00 73 00 20 00 50 00 65 00 6C 00 6C 00 65 00 67 00 72 00 69 00 6E
00 69 00 20 00 37 00 35 00 00 01 02 1C 6D

La respuesta, como en este ejemplo, puede ser multi-trama ya que adems del nmero de telfono
y el nombre, pueden obtenerse datos suplementarios como direccin, e-mail, pgina web,
nmeros adicionales, etc. segn sean las prestaciones de cada aparato.

XIII

SIM: Subscriber Identity Module o mdulo de identidad del suscriptor. Pequea tarjeta que posee un chip donde
se guardan todos los datos especficos de la lnea telefnica utilizada en el celular. Esta tarjeta inteligente intercambiable permite al aparato acceder a la red de la prestadora del servicio.

2006

Protocolo F-BUS de NOKIA

58

Posicionador Satelital
Comunicado Por
Telefona Celular

6.7. Mtodo de determinacin de instrucciones


Al principio del presente captulo, aclaramos en una nota al pie, que el estndar F-BUS es un
protocolo propietario de la empresa NOKIA. Por esta razn, la informacin tcnica brindada por la
empresa es prcticamente nula y debimos basar nuestro trabajo en algunas experiencias de otros
desarrolladores, cuyos trabajos pertenecen a modelos no comercializados en estas latitudes en
donde las instrucciones descriptas eran, en algunos casos, bastante diferentes a las utilizadas por
los telfonos de aqu.
A partir de aqu lo que se hizo entonces, fue investigar la comunicacin serial entre el telfono y
algunos programas para PC de personalizacin del mvil, valindonos de programas capturadores
de la actividad del puerto serie.
Las aplicaciones para telfonos NOKIA utilizadas fueron LogoManager, MoviMB y Oxigen Phone
Manager entre otras, en sus versiones temporales de prueba; y se us el programa de libre
licencia Serial Port Monitor para capturar las tramas entre las partes.
El mtodo de trabajo consiste en realizar aquellas acciones que queremos controlar en el telfono,
por medio de la PC y en reiteradas oportunidades, registrando el flujo de informacin con el
programa capturador y determinando el significado de los bytes de las cadenas, comparando las
diferencias e igualdades entre las tramas que realizaban acciones similares. Por ejemplo, para el
comando que devuelve el estado de carga de la batera, se observ su estructura para distintas
condiciones de carga y a partir de la contrastacin de las tramas se determin el significado de los
bytes fundamentales para el aprovechamiento de la instruccin.
A modo ilustrativo, si se toma el programa LogoManager y se lo corre en paralelo con el Serial
Port Monitor, pueden registrarse las tramas de inicializacin en la siguiente forma:

Puerto abierto mediante el proceso "LogoManager.exe" (PID: 2696)


Respuesta:11/07/2006 21:39:31.96964 (+49.4063 seconds)
55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55 55 55 55 55 55 55 55 55
55 55 55 55 55 55 55 55 55
55 55 55 55 55 55 55 55 55
55

UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
UUUUUUUUUUUUUUUUUUUUUUUU

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU

Pedido:11/07/2006 21:39:31.98564 (+0.0000 seconds)


55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

55
55
55
55

Respuesta:11/07/2006 21:39:31.98564
21:39:31.98564 (+0.0000 seconds)
55 55 55 55 55 55 55 55

UUUUUUUU

Pedido:11/07/2006 21:39:31.09464 (+0.1094 seconds)


1E 00 0C D1 00 07 00 01 00 03 00 01 60 00 72 D5

...........`.r

Respuesta:11/07/2006 21:39:31.09464 (+0.0000 seconds)


1E 0C 00 D2 00 2B 01 00 00 03 56 20 35 2E 32 39 0A 32 32 2D 31 30 2D 30 34 0A 52 48 2D 33 31 0A
33 32 30 30 0A 28 63 29 20 4E 6F 6B 69 61 00 01 44 00 18 E3

....+....V 5.29.22-10-04.RH-31.
3200.(c) Nokia..D..

Pedido:11/07/2006 21:39:32.79764 (+0.0000 seconds)


1E 00 0C 7F 00 02 D2 04 C0 79

... ...y

.
.
.

El monitor del puerto devuelve, como se ve, las tramas en la columna de la izquierda en formato
hexadecimal y el equivalente en formato ASCII en la columna de la derecha.
2006

Protocolo F-BUS de NOKIA

59

Posicionador Satelital
Comunicado Por
Telefona Celular

Si nos dirigimos ahora a la instruccin Enviar mensaje de texto... en el men herramientas del
LogoManager, obtenemos el siguiente cuadro de dilogo:

Al completarlo como en la imagen, puede obtenerse la siguiente secuencia de cadenas, en donde


pueden apreciarse entre otras, las tramas relativas al envo de mensajes de texto:
.
.
.
Pedido:11/07/2006 21:41:18.98564 (+0.0000 seconds)
1E 00 0C 7F 00 02 17 07 05 7A 1E 00 0C 02 00 44 00 01 00 02 01 00 01 55 55 01 02 38 11 00 00 00
00 04 82 0C 01 07 0A 81 53 43 11 90 60 00 82 0C 02 08 07 91 45 23 00 00 00 10 80 14 0D 0E C2 7A
D9 1D 9E 83 E8 61 39 B9 3C 77 01 00 00 00 08 04 01 A7 01 45 D1 65

... .....z.....D.......UU..8....
...... SC. `.....E#.... ...z
. a9<w........Ee

Respuesta:11/07/2006 21:41:20.79764 (+0.0000 seconds)


1E 0C 00 7F 00 02 02 05 1C 74 1E 0C 00 0A 00 08 00 60 00 20 00 00 01 40 1F 0E

... .....t.......`. ...@..

Pedido:11/07/2006 21:41:21.79764 (+0.0000 seconds)


seconds)
1E 00 0C 7F 00 02 0A 00 18 7D

... .....}

Respuesta:11/07/2006 21:41:21.03264 (+0.2344 seconds)


1E 0C 00 0A 00 08 00 60 00 20 01 00 01 41 1E 0F

.......`. ...A..

Pedido:11/07/2006 21:41:21.03264 (+0.0000 seconds)


1E 00 0C 7F 00 02 0A 01 18 7C 1E 00 0C 17 00 08 00 01 00 0A 02 00 01 46 11 52

... .....|.............F.R

Respuesta:11/07/2006 21:41:22.95364 (+0.0000 seconds)


1E 0C 00 7F 00 02 17 06 09 77 1E 0C 00 17 00 0C 01 30 00 0B 01 01 16 04 07 07 01 42 0E 6C

... .....w.......0.........B.l

Pedido:11/07/2006 21:41:22.95364 (+0.0000 seconds)


1E 00 0C 7F 00 02 17 02 05 7F

... .....

Respuesta:11/07/2006 21:41:22.43864 (+0.4844 seconds)


1E 0C 00 0A 00 08 00 60 00 1E 64 4F 01 43 7B 7C

.......`..dO.C{|

Pedido:11/07/2006 21:41:22.43864 (+0.0000 seconds)


1E 00 0C 7F 00 02 0A 03 18 7E

... .....~

Respuesta:11/07/2006 21:41:23.92264
21:41:23.92264 (+0.4844 seconds)
1E 0C 00 02 00 10 01 61 00 03 00 01 0C 08 00 00 A7 08 67 00 01 44 D2 39

.......a.........g..D9

Pedido:11/07/2006 21:41:23.92264 (+0.0000 seconds)


1E 00 0C 7F 00 02 02 04 10 79
.
.
.

2006

... .....y

Protocolo F-BUS de NOKIA

60

Posicionador Satelital
Comunicado Por
Telefona Celular

6.8. Cable de datos F-BUS


El cable utilizado para la conexin de celulares NOKIA con la PC, tiene como funcin adaptar los
niveles de voltaje de la interfaz RS-232, que oscilan entre los 15 voltios para el nivel lgico bajo
y -15 voltios para el nivel lgico alto, a los estndares del protocolo F-BUS, cuyos valores de
voltaje son: 0 voltios para el nivel bajo y 2,7 voltios para el nivel alto.
Se debe tener en cuenta qu la configuracin del puerto serial para el protocolo F-BUS es:
Bits por segundo
Bits de datos
Paridad
Bits de parada
Control de flujo

115200
8
Ninguna
1
Xon / Xoff

El simple circuito que le permite al cable la adaptacin de niveles, est basado en el integrado
MAX232, y tiene el siguiente diagrama elctrico:

Figura 4: Circuito para la conversin de seales en el cable de datos.

Se puede observar que el MAX232 est alimentado por medio del propio puerto RS-232, a travs
de las seales DTR (Data Terminal Ready, terminal 4) y RTS (Request To Send, terminal 7),
reguladas por el 78L05. Los cuatro capacitares electrolticos de 10 F son fundamentales en la
conversin de tensin y estn dispuestos segn la hoja de datos del MAX232. Finalmente, los
diodos Zener de 2,7 voltios limitan la tensin, adecundola a niveles seguros para la unidad
mvil.

2006

Protocolo F-BUS de NOKIA

61

Posicionador Satelital
Comunicado Por
Telefona Celular

6.9. Referencias
6.9.1. Referencias bibliogrficas
ETSI, Digital cellular telecommunications system (Phase 2+); Technical realization of the
Short Message Service (SMS) Point-to-Point (PP), www.etsi.org, TS 03.40
version 7.5.0, 1998.
ETSI, Digital cellular telecommunications system (Phase 2+); Alphabets and languagespecific information, www.etsi.org, TS 03.38 version 7.2.0, 1998.
ETSI, Digital cellular telecommunications system (Phase 2+); Use of Data Terminal
Equipment - Data Circuit terminating; Equipment (DTE - DCE) interface for
Short Message Service (SMS) and Cell Broadcast Service (CBS),
www.etsi.org, TS 07.05 version 7.0.1, 1998.
Wayne Peacock, NOKIA F-BUS Protocol, http://embedtronics.com/nokia/fbus.html, 2005.
Gnokii, Gnokii project, www.gnokii.org, 2005.
Comunidad Internacional de Electrnicos, Data Cable Nokia RS-232,
www.forosdeelectronica.com/about2.html, 2005.
Texas Instruments, MAX232 Datasheet, www.ti.com, 2004.

6.9.2. Software
LogoManager, www.logomanager.co.uk.
MoviMB, www.logomanager.co.uk/php/products.php?id=51.
Oxigen Phone Manager, www.oxygensoftware.com/en/default.asp.
LogoWizard, www.logowizard.info.
Serial Port Monitor, www.serial-port-monitor.com/index.html.

2006

Protocolo F-BUS de NOKIA

62

7
Unidad Mvil
7.1. Introduccin
La unidad mvil es la encargada, en el presente proyecto, de interpretar la informacin brindada
por el mdulo GPS, y de procesar los datos para visualizarlos a travs de un display LCD y para
enviarlos, por medio de la red de telefona celular, a la computadora central. El corazn del
circuito es un microcontrolador PIC 16F877 de Microchip y en el siguiente diagrama se observa
la disposicin de todos los bloques de la unidad.

Alimentacin
(12 V)

Cargador
de batera
Celular

Regulador de
voltaje (5 V)

Mdulo
GPS

Bloque de control
Microcontrolador

Antena

Visualizacin

Figura 1: Diagrama de bloques de la unidad mvil.

En captulos anteriores se describi al mdulo GPS y se presentaron algunos conceptos generales


acerca de los telfonos celulares utilizados en el proyecto, por lo que aqu se describirn los
bloques de control y visualizacin, as como el software en lenguaje ensamblador del
microcontrolador, cuya funciones principales son la de interpretar el protocolo NMEA 0183 del
mdulo GPS y enviar la informacin al celular a travs del estatuto F-BUS.

2006

Posicionador Satelital Comunicado Por Telefona Celular

63

Posicionador Satelital
Comunicado Por
Telefona Celular

7.2. Bloque de control


7.2.1. PIC 16F877
Los principales motivos de la eleccin del microcontrolador de rango medio 16F877, son su
capacidad de comunicacin perifrica a travs de varios protocolos por medio de la USART
serial, su alta capacidad de memoria de programa, la posibilidad del uso de memoria de datos no
voltil, adems de la RAM convencional de 368 bytes, varias tipos de interrupciones disponibles,
varios temporizadores, bajo consumo y muy fcil programacin.

Figura 2: Disposicin de terminales del PIC 16F877.

En la tabla 1 se resumen las principales caractersticas del dispositivo de Microchip.


Arquitectura
CPU
Tipo de Memoria de Programa
Capacidad de la Memoria de Programa
RAM
EEPROM
Frecuencia mxima de operacin
Terminales de Entrada/Salida
Puertos E/S
Interrupciones
Temporizadores
Resets
Lneas de entrada del ADC de 10 bits
Mdulos de Captura/Comparacin/PWM

Harvard
RISC
Flash
8192 palabras de 14 bits
368 bytes
256 bytes
20MHz
33
5 (A, B, C, D, E)
14
3
POR, BOR (PWRT, OST)
8
2

Tabla 1: Caractersticas principales del PIC 16F877 (1 parte).

2006

Unidad Mvil

64

Posicionador Satelital
Comunicado Por
Telefona Celular

Comunicaciones Serie
Comunicaciones Paralelo
Juego de instrucciones
Ciclos por instruccin
Longitud de la instruccin
Modos de direccionamiento
Pila
Voltaje de operacin
Consumo de corriente
Temperatura de operacin
Encapsulados

MSSP, USART
PSP
35 Instrucciones
1 (2 para las de salto)
14 bits
Directo, indirecto y relativo
8 niveles
2 a 5,5 V
25 mA
0 C a 70 C
40/PDIP 600mil,44/MQFP,44/PLCC,44/TQFP

Tabla 1: Caractersticas principales del PIC 16F877 (continuacin).

En cuanto a la frecuencia de trabajo del micro, se eligi el modo XT con un cristal de 3,6864
MHz., para poder lograr la mejor precisin posible en la frecuencia de transmisin serial. En este
tipo de dispositivo cada instruccin tarda en ejecutarse cuatro perodos de reloj, por lo que el ciclo
de instruccin es, en este caso, igual a 1,085 S (4 x 1/3,6864 MHz.) para todas las instrucciones
a excepcin de las de salto, que tardan el doble.

Figura 3: Operacin del oscilador en modo XT.

7.2.2. Configuracin inicial


La palabra de configuracin del dispositivo, situada en la posicin 0x2007 de la memoria de
programa, y accesible nicamente durante el proceso de grabacin, establece algunas
caractersticas particulares de la operacin del PIC. Para el presente proyecto se utiliza el modo de
oscilacin XT, el perro guardin (watchdog), el temporizador de inicio (power-up timer), el
terminal RB3 como E/S digital convencional, y no se utilizan los cdigos de proteccin. Para todo
esto, la palabra de configuracin debe tener el valor 0x3F75, establecido con la siguiente lnea en
el encabezado del programa:
__CONFIG

2006

_XT_OSC & _WDT_ON & _PWRTE_ON & _LVP_OFF

Unidad Mvil

65

Posicionador Satelital
Comunicado Por
Telefona Celular

El watchdog es un contador interno de 8 bits que origina un reset cuando se desborda. Su control
de tiempos est basado en una simple red RC interna. La temporizacin nominal con la que se
halla programado es de 18 ms, pero utilizando el divisor de frecuencia puede aumentarse hasta
alcanzar los 2,3 segundos, como ocurre en este trabajo. Esto se hace habilitando el bit PSA (3) del
registro OPTION_REG (0x81) y otorgndole el valor 111 a los bits PS2, PS1 y PS0 del mismo
registro de opciones, en la siguiente forma:
bsf
movlw
movwf

STATUS,RP0
b'10001111'
OPTION_REG

; Banco 1
; Puerto B pull-up desabilitado y asigna
; preescaler al WDT (1:128, 2.304 S)

La configuracin de los puertos de E/S fue establecida segn las necesidades de conexin con el
telfono, el mdulo GPS, el display LCD, etc. segn se ver ms adelante, a travs de las
siguientes sentencias:
bsf
movlw
movwf
movlw
movwf
movlw
movwf
movlw
movwf
clrf
clrf

STATUS,RP0
b'00011000'
TRISA
b'00000111'
ADCON1
b'10001101'
TRISB
b'11010100'
TRISC
TRISD
TRISE

;
;
;
;
;
;
;
;
;
;
;

Banco 1
RA3, RA4 --> Entradas digitales
RA0, RA1, RA2, RA5 --> Salidas digitales
RA0, RA1, RA2, RA3, RA5, ...
... RE0, RE1, RE2 --> Digitales
Puerto B
Puerto C
Puerto D --> todos los bits salidas
Puerto E --> todos los bits salidas

7.2.3. Comunicacin serial


Para la comunicacin en serie con el telfono celular por medio del protocolo F-BUS se utiliza la
USART interna del microcontrolador en modo asincrnico, el cual utiliza formato NRZ estndar
(no retorno a cero), con un bit de start, ocho de datos y uno de stop. Se utiliza el generador
interno de velocidad de transferencia (baud rate generator, BRG) para derivar la frecuencia a
partir del oscilador. El BRG es un generador dedicado de 8 bits, en donde el perodo del
temporizador es controlado por el registro SPBRG en la direccin 0x99 y por el bit BRGH (2) del
registro TXSTA (0x98).
Como necesitamos establecer una comunicacin a una velocidad de 115200 baudios, debemos
utilizar el modo de generacin de alta velocidad, configurando el bit BRGH en nivel alto,
determinando el valor del registro SPBRG a partir de la siguiente frmula:
Baud Rate =

FOSC
16 (SPBRG + 1)

con BRGH = 1

Si FOSC es 3,6864 MHz, para obtener 115200 baudios, SPBRG debe ser igual a uno.
Baud Rate =

2006

3686400
= 115200
16 (1 + 1)

Unidad Mvil

66

Posicionador Satelital
Comunicado Por
Telefona Celular

De la frmula se desprende tambin la necesidad de utilizar un cristal como el elegido, ya que si


se utiliza un cristal de 4 MHz, el Baud Rate nos queda con un valor de 125000 baudios, es decir
con un error del 8,5 %; o, con un cristal de 20 MHz, obtendramos 113,6 Kbps, con SPBRG = 10,
esto es con un error del 1,36 %, que si bien es un valor bajo de error, es inaceptable para las
rgidas condiciones del estatuto F-BUS.
El modo asincrnico debe configurarse poniendo en nivel bajo al bit SYNC (4) del registro
TXSTA (0x98). La USART transmite y recibe el bit menos significativo primero. La transmisin
y la recepcin son funcionalmente independientes, siempre y cuando se utilice el mismo formato
y velocidad de datos.
Luego de configurar el generador de velocidad, los pasos para la transmisin asincrnica de datos
de 8 bits son:
1. Habilitar el puerto serial asincrnico poniendo a uno el bit SPEN (7) del registro
RCSTA (0x18), y poniendo a cero el bit SYNC (4) del registro TXSTA (0x98).
2. Si se utilizan interrupciones, habilitar el bit TXIE (4) del registro PIE1 (0x8C), adems por
supuesto, de las interrupciones generales y perifricas con los bits GIE (7) y PEIE (6) del
registro INTCON (0x0B).
3. Establecer la transmisin habilitando el bit TXEN (5) del registro TXSTA (0x98), el cual
habilitar al bit TXIF (4) del registro PIR1 (0x0C).
4. Cargar el dato a enviar en el registro TXREG (0x19) y la transmisin comenzar
automticamente.
Bajo las mismas condiciones, para recibir datos de 8 bits deben tomarse los siguientes pasos:
1. Habilitar el puerto serial asincrnico poniendo a uno el bit SPEN y poniendo a cero el bit
SYNC.
2. Si se utilizan interrupciones, habilitar el bit RCIE (5) del registro PIE1, adems de las
interrupciones generales y perifricas con los bits GIE y PEIE del registro INTCON.
3. Establecer la recepcin habilitando el bit CREN (4) del registro RCSTA (0x18).
4. El bit bandera RCIF (5) del registro PIR1 se pondr en nivel alto cuando se complete una
recepcin y se generar una interrupcin si est habilitado el bit RCIE.
5. Debe leerse el dato recibido en el registro RCREG (0x1A).
6. Si algn error ocurre, quedar indicado en el registro RCSTA, y debe limpiarse poniendo
a cero al bit CREN.
En el presente proyecto, se configura lo anterior tanto para escritura como para lectura, con la
siguiente subrutina en lenguaje ensamblador:
SerSet

2006

bsf
movlw
movwf
bsf
bcf
bsf
bcf
bsf
bsf
return

STATUS,RP0
0x01
SPBRG
TXSTA,BRGH
TXSTA,SYNC
TXSTA,TXEN
STATUS,RP0
RCSTA,SPEN
RCSTA,CREN

;
;
;
;
;
;
;
;
;

Banco 1. BaudRate = Fosc/(16(X+1))


Para 115200-> 3.6864 MHz/(16(1+1)) = 115200
Error = 0 %
Baudiaje de alta velocidad
Modo asincrnico
Activa transmisin
Banco 0
Activa el puerto serial
Activa recepcin

Unidad Mvil

67

Posicionador Satelital
Comunicado Por
Telefona Celular

La comunicacin serial entre el microcontrolador y el mdulo GPS, de acuerdo a la normativa


NMEA 0183, est implementada por software. De esta manera la USART serial queda dedicada
exclusivamente al protocolo F-BUS.
Para la implementacin de la recepcin serial por software, debemos tener en cuenta que las
seales son invertidas, es decir, el 1 lgico se corresponde con 0 voltios y el 0 lgico es
recproco al nivel alto en el puerto, o sea 5 voltios. La demora que debe tomarse entre cada bit a
recibir se calcula con la siguiente frmula:
FOSC
14
SerialSpeed 4
SerialDelay =
3
Recordamos que la salida por defecto del mdulo GPS se produce a una velocidad de 4800
baudios y que la frecuencia de oscilacin es de 3,6864 MHz, entonces la demora ser:
3686400
14
SerialDelay = 4800 4
= 59,33 59
3
La implementacin en cdigo de la demora serial segn la frmula anterior es:
DELAY_TIME
ser_d_3 movlw
movwf
goto
ser_d
movlw
movwf
nop
ser_l
decfsz
goto
return

equ
d'59'
DELAY_TIME/3
SER_DEL
ser_l
DELAY_TIME
SER_DEL
SER_DEL,F
$-1

; Cuenta regresiva de 1/3 de DELAY_TIME


; Cuenta regresiva desde DELAY_TIME
; Para alta velocidad
; Cuenta regresiva

Una vez recibido el bit de start, deben esperarse por los ocho bits de datos; as, la parte de cdigo
que implementa la recepcin de un byte es la siguiente, quedando el dato recibido en el registro
SER_DAT.:
gps_rx

clrf
btfsc
goto
movlw
movwf
call
call
gps_rxl bsf
btfss
bcf
rrf
call
nop
decfsz
goto
return

2006

SER_DAT
GPS_IN
gps_rx
D'8'
SER_CON
ser_d_3
ser_d
STATUS,C
GPS_IN
STATUS,C
SER_DAT,F
ser_d
SER_CON,F
gps_rxl

; Busca start bit


; No recibido todava
;
;
;
;
;
;
;
;
;
;
;

Leer 9 bits
Saltea un tercio de bit
Saltea un bit
Limpia carry
Si se recibe un 0...
...setea carry
Rota SER_DAT bits
Demora
Mantiene la sincronizacin con la tx
Si no termin...
...regresa

Unidad Mvil

68

Posicionador Satelital
Comunicado Por
Telefona Celular

7.2.4. Base de tiempo


En cuanto a la base de tiempo del sistema, se utiliza la salida de un pulso por segundo que otorga
el mdulo GPS, la cual est conectada al PIC por medio del terminal RB0/INT, configurado de
manera tal que se genera una interrupcin en el desarrollo del programa ante cada pulso, una vez
por segundo. Para que esto ocurra debe configurarse el registro de interrupciones INTCON (0x0B)
habilitando el bit de interrupciones generales GIE (7) y el bit de interrupcin externa INTE (4),
adems debe verificarse que el bit INTEDG (6) del registro de opciones OPTION_REG (0x81)
est en cero, para que la interrupcin sea detectada en el flanco descendente del pulso. El manejo
de la interrupcin se lleva a cabo con el siguiente cdigo:

Inter

bsf
movlw
movwf
movlw
movwf

STATUS,RP0
b'11010000'
INTCON
b'10001111'
OPTION_REG

ORG
movwf
swapf
clrf
movwf
movf
movwf
clrf
bcf
movf
movwf
btfsc
call
movf
movwf
movf
movwf
swapf
movwf
swapf
swapf
retfie

0x04
W_T
STATUS,W
STATUS
STATUS_T
PCLATH,W
PCLATH_T
PCLATH
STATUS,IRP
FSR,W
FSR_T
INTCON,INTF
muest
PCLATH_T,W
PCLATH
FSR_T,W
FSR
STATUS_T,W
STATUS
W_T,F
W_T,W

; Banco 1

; Guarda el contexto

; Interrupcin externa ?
; Si --> Muestreo
; Reestablece el contexto

La subrutina de muestreo incrementa los registros donde se almacenan los segundos y minutos:
muest

2006

bcf
incf
movlw
xorwf
btfss
return
clrf
incf
return

INTCON,INTF
SEG,F
d'60'
SEG,W
STATUS,Z
SEG
MIN,F

; SEG=60 ?
; No
; Si, Incrementa MIN

Unidad Mvil

69

Posicionador Satelital
Comunicado Por
Telefona Celular

La cantidad de minutos y segundos son almacenados tambin en registros EEPROM para que,
ante algn reset imprevisto del microcontrolador, puedan recuperarse automticamente estos
valores. Para escribir en la EEPROM debe seguirse la siguiente secuencia:
1. Comprobar si el bit WR (1) del registro EECON1 no est en nivel alto, lo que indicara
que no ha terminado aun una operacin de escritura anterior.
2. Escribir la direccin en donde se almacenar el dato en el registro EEADR.
3. Escribir el dato a guardar en el registro EEDATA.
4. Asegurarse que el bit EEPGD (7) del registro EECON1 est en cero.
5. Habilitar el bit WREN (2) del registro EECON1 para permitir la operacin de escritura.
6. Deshabilitar interrupciones.
7. Debe ejecutarse la siguiente secuencia de instrucciones, establecidas para evitar escrituras
accidentales:
Escribir 0x55 al registro EECON2 (0x18D) en dos pasos, primero al registro W y luego
al EECON2.
Escribir 0xAA al registro EECON2 en dos pasos, primero a W y luego al EECON2.
Habilitar el bit WR (1) del registro EECON1.
8. Habilitar interrupciones.
9. Deshabilitar las operaciones de escritura en la EEPROM, poniendo a cero el bit WREN
del registro EECON1.
Al finalizar el proceso de escritura el bit WR pasa a valer cero automticamente. Por ejemplo,
para almacenar el registro SEG en la posicin 0x00 de la EEPROM, la fraccin de cdigo es:
bsf
bsf
btfsc
goto
bcf
clrw
movwf
movf
movwf
bsf
bcf
bsf
bcf
movlw
movwf
movlw
movwf
bsf
bsf
bcf
bcf
bcf

2006

STATUS,RP1
STATUS,RP0
EECON1,WR
$-1
STATUS,RP0
EEADR
SEG,W
EEDATA
STATUS,RP0
EECON1,EEPGD
EECON1,WREN
INTCON,GIE
0x55
EECON2
0xAA
EECON2
EECON1,WR
INTCON,GIE
EECON1,WREN
STATUS,RP1
STATUS,RP0

; Banco 0 a 3

; Banco 2
; Direccin 0x00 de la EEPROM

; Banco 3
; EEPROM
; Interrupciones off

; Write
; Interrupciones on
; Banco 3 a 0

Unidad Mvil

70

Posicionador Satelital
Comunicado Por
Telefona Celular

Los pasos a seguir para leer un byte de la memoria EEPROM del microcontrolador son:
1.
2.
3.
4.

Escribir la direccin en donde est el dato a leer en el registro EEADR (0x10D).


Asegurarse que el bit EEPGD (7) del registro EECON1 (0x18C) est en cero.
Habilitar el bit RD (0) del registro EECON1 para que comience la operacin de lectura.
El dato quedar disponible, en el siguiente ciclo, en el registro EEDATA (0x10C).

Para leer el registro almacenado en el ejemplo anterior, el cdigo es:


bsf
clrw
movwf
bsf
bcf
bsf
bcf
movf
bcf
movwf

STATUS,RP1

; Banco 2
; Direccin 0x00 de la EEPROM

EEADR
STATUS,RP0
EECON1,EEPGD
EECON1,RD
STATUS,RP0
EEDATA,W
STATUS,RP1
SEG

;
;
;
;

Banco 3
EEPROM
Read
Banco 2

; Banco 0

7.3. Bloque de visualizacin


Para poder observar los valores brindados por el mdulo GPS se utiliza un display LCD
alfanumrico de dos lneas por 16 caracteres WH1602A, cuyas principales caractersticas son:
Dimensin del mdulo
rea visible
rea activa
Tamao del punto
Tamao de carcter
Tipo de luz de fondo
Voltaje de alimentacin
Suministro de corriente
Temperatura de operacin

84.0 x 44.0 x 13.5(MAX) mm


66.0 x 16.0 mm
56.20 x 11.5 mm
0.55 x 0.65 mm
2.95 x 5.55 mm
LED verde-amarillo
5V
1,2 mA
20 C a +70 C

Tabla 2: Caractersticas del mdulo LCD WH1602A.

Figura 4: Mdulo LCD WH1602A.

2006

Unidad Mvil

71

Posicionador Satelital
Comunicado Por
Telefona Celular

Este tipo de mdulo puede interconectarse con el microcontrolador por medio de un bus de datos
de cuatro bits o de ocho bits. Se opt por esta ltima opcin que necesita de ms terminales de
E/S, pero que puede ser comandado con una menor cantidad de lneas de cdigo y lleva a que el
desarrollo del programa sea ms rpido y eficiente. Adems de las ocho lneas de datos que son
conectadas al puerto D del microcontrolador, el mdulo posee tres lneas de control, las cuales
fueron conectadas al puerto E, que controlan el modo de lectura o escritura R/ W , el modo
comando o datos (RS), o la habilitacin del dispositivo (E).

Figura 5: Conexionado interno y externo del display LCD.

El display puede operarse por medio de diversos comandos para la escritura de un dato al mdulo,
limpiar pantalla, generar caracteres especiales, posicionar el cursor, etc. Para enviar un comando
guardado en el registro W, se utiliza la siguiente subrutina:
LCD_reg bcf
movwf
btfsc
call
bsf
nop
bcf
return

2006

RS
PORTD
CON_LCD
LCD_busy
E

;
;
;
;
;
;

Desactiva RS (Modo comando)


Cdigo del comando
LCD conectado?
Espera que se libere el LCD
Genera pulso en seal E
Pausa

Unidad Mvil

72

Posicionador Satelital
Comunicado Por
Telefona Celular

Para enviar un dato almacenado en el registro W al mdulo LCD, se utiliza la siguiente subrutina:
LCD_datos
bcf
movwf
btfsc
call
bsf
bsf
nop
bcf
return

RS
PORTD
CON_LCD
LCD_busy
RS
E

;
;
;
;
;
;
;

Desactiva RS (modo comando)


Valor ASCII a sacar por PORTD
LCD conectado?
Espera que se libere el LCD
Activa RS (modo dato)
Genera pulso en seal E
Pausa

El mdulo es inicializado en el modo de comunicacin de ocho bits, con el cursor incremental y


no visible ubicado en el primer carcter de la primera lnea, por medio de la siguiente subrutina:
LCD_ini movlw
call
call
movlw
call
call
movlw
call
call
movlw
call
movlw
call
movlw
call
return

b'00111000'
LCD_reg
Delay_5mS
b'00111000'
LCD_reg
Delay_5mS
b'00111000'
LCD_reg
Delay_5mS
b'00000001'
LCD_reg
b'00000110'
LCD_reg
b'00001100'
LCD_reg

; Borrar LCD y Home


; Cursor incremental, display shift off
; LCD On, cursor Off

En cuanto a la disposicin de la informacin en la pantalla, se dispuso que los ocho primeros


caracteres de la primera lnea contengan la hora brindada por el mdulo GPS, luego se consignan
la cantidad de satlites visibles. Si la informacin de posicionamiento satelital es nula, aparece el
signo ?. Al final de la primera lnea, cuando el vehculo est en movimiento, se indica la
velocidad en nudos. Aqu un par de ejemplos:

12:43:15 07s v23


Lat:3225.3395 s

18:32:41 04? v16


Lon:6315.0250 o

En el primer caso, a las 12:43, hay 7 satlites activos y el vehculo se mueve a 23 nudos. Para el
caso de las 18:32, el signo ? indica que la informacin brindada por los cuatro satlites puede
ser poco precisa o nula.
En la segunda lnea del display se muestra alternativamente la informacin de latitud y longitud,
con una tasa de cambio de dos segundos. Se puede observar en el primer ejemplo anterior, que el
vehculo est ubicado a los 322520,37 de latitud sur. En el segundo caso, la indicacin
corresponde a los 63151,5 de longitud oeste.
2006

Unidad Mvil

73

Posicionador Satelital
Comunicado Por
Telefona Celular

Adems de la pantalla LCD, se colocaron en el circuito tres leds que indican respectivamente, el
primero, la salida de un pulso por minuto del mdulo GPS; el segundo, si hay informacin de
posicionamiento, o lo que es lo mismo, si hay al menos tres satlites a la vista; y el tercer led
indica si el posicionamiento es vlido o nulo, de manera equivalente al signo ? del display.
En el caso de una implementacin comercial del presente proyecto, la presencia de la pantalla
LCD es superflua, ya que los datos que muestra no son relevantes para quienes se encuentren en
el vehculo. El display solo se justifica para el desarrollo del proyecto, para su implementacin
bastara solamente con los leds. En este ltimo caso se produce un marcado abaratamiento del
dispositivo ya que adems del costo del LCD, puede reducirse el costo del microcontrolador,
utilizando uno de menor cantidad de terminales de E/S, y menor capacidad de memoria, tal como
el PIC 16F873, reducindose tambin el programa ensamblador y el tamao de la placa impresa.

7.4. Software del microcontrolador


El diagrama de flujo de la parte principal del programa del PIC es el siguiente:
Inicio

Si

$GPGGA ?

Guardar sentencia

No
Mostrar datos
No

3 seg. ?
Si

$GPRMC ?

Reset GPS

Si

Guardar sentencia

No
No

Mostrar velocidad
3 seg. ?
Establecer perodo
de muestreo

Si
Reset GPS
Reinicia

No

Minuto = Muestreo ?
Si

Reinicia

No

Segundo = Muestreo ?
Si
Transmitir SMS

Reinicia
Figura 6: Diagrama de flujo del programa del microcontrolador.

2006

Unidad Mvil

74

Posicionador Satelital
Comunicado Por
Telefona Celular

En el inicio del programa se configuran todas las caractersticas del microcontrolador, los puertos
de E/S, las interrupciones, los modos de comunicacin serial y la interfaz con el display LCD,
segn se describi en las pginas anteriores. Adems se inicializan las variables y se cargan los
valores de los segundos y minutos transcurridos de la memoria EEPROM.
En el siguiente bloque, se busca entre los datos transmitidos por el mdulo GPS, al encabezado de
la sentencia NMEA 0183 $GPGGA. Si en el lapso de 3 segundos no se encuentra respuesta, se le
enva un pulso de reset al mdulo, lo que provoca que el mdulo recomience la bsqueda de
seales satelitales y que comience a enviar todas las sentencias. En caso contrario, se procede al
almacenamiento y visualizacin de la informacin de posicionamiento satelital brindada por la
sentencia. Todo esto se lleva adelante por medio del siguiente bloque de instrucciones:
gga_l
gga_c

movlw
movwf
btfsc
movf
btfsc
goto
goto
call
call
movf
sublw
btfss
goto
call
movf
sublw
btfss
goto
call
movf
sublw
btfss
goto
call
movf
sublw
btfss
goto
call
call

3
SEG_COMPR
BNR
SEG_COMPR,F
STATUS,Z
$+2
$+2
rst_g
gps_rx
SER_DAT,W
0x47
STATUS,Z
gga_c
gps_rx
SER_DAT,W
0x47
STATUS,Z
gga_c
gps_rx
SER_DAT,W
0x41
STATUS,Z
gga_c
gps_rx
SER_DAT,W
0x2C
STATUS,Z
gga_c
rx_gga
m_pant

; Reset GPS
; Recibe un byte, se busca $GPGGA.
; Es "G" ?
; No
; Es "G" ?
; No
; Es "A" ?
; No
; Es "," ?
; No
; Toma el paquete
; Muestra

La subrutina que genera el pulso de reset del mdulo GPS es:


rst_g

2006

bcf
movlw
movwf
decfsz
goto
bsf
return

GPS_OUT
0xFF
CONT
CONT,F
$-1
GPS_OUT

Unidad Mvil

75

Posicionador Satelital
Comunicado Por
Telefona Celular

Para tomar los datos de la sentencia $GPGGA y almacenarlos en la parte de la memoria del micro
destinada a tal fin, se usa la siguiente subrutina:
rx_gga

rx_pl

movlw
movwf
movlw
movwf
call
movf
movwf
incf
decfsz
goto
return

LOW
D_GGA
FSR
d'40'
CONT
gps_rx
SER_DAT,W
INDF
FSR,F
CONT,F
rx_pl

; Comienzo de la RAM
; Nmero de bytes a guardar
; Toma un byte
; Lo guarda donde apunta FSR
; Decrementa countador

En cuanto a las subrutinas que permiten mostrar los datos en el display LCD, el mtodo que se
sigue es el de contar las , de la sentencia almacenada hasta llegar al dato que se desea mostrar,
por ejemplo para mostrar la longitud, la subrutina es:
m_lon

; Muestra la longitud
movlw
call
movlw
call
movlw
call
movlw
call
call
call
call
movf
call
incf
movf
call
incf
movf
call
incf
movlw
call
movf
call
incf
movf
call
incf
movf
call
incf
movf
call
incf
movf
call

2006

'L'
LCD_datos
'o'
LCD_datos
'n'
LCD_datos
':'
LCD_datos
coma_g
coma_gs
coma_gs
INDF,W
LCD_datos
FSR,F
INDF,W
LCD_datos
FSR,F
INDF,W
LCD_datos
FSR,F
b'00000011'
LCD_datos
INDF,W
LCD_datos
FSR,F
INDF,W
LCD_datos
FSR,F
INDF,W
LCD_datos
FSR,F
INDF,W
LCD_datos
FSR,F
INDF,W
LCD_datos

; Muestra "L"
; Muestra "o"
; Muestra "n"
; Muestra ":"

; Muestra lon1
; Muestra lon2
; Muestra lon3
; Muestra ""
; Muestra lon_min1
; Muestra lon_min2
; Muestra "."
; Muestra lon_dec1
; Muestra lon_dec2
Unidad Mvil

76

Posicionador Satelital
Comunicado Por
Telefona Celular

at_gl

fin_gl

m_eo

incf
movf
sublw
btfsc
goto
movf
call
incf
movf
sublw
btfsc
goto
movf
call
incf
movf
sublw
btfsc
goto
goto
incf
call
movlw
addwf
movf
sublw
btfss
goto
movlw
movwf
movf
call
return

FSR,F
INDF,W
0x2C
STATUS,Z
fin_gl
INDF,W
LCD_datos
FSR,F
INDF,W
0x2C
STATUS,Z
fin_gl
INDF,W
LCD_datos
FSR,F
INDF,W
0x2C
STATUS,Z
fin_gl
at_gl
FSR,F
m_Bla
0x20
INDF,F
INDF,W
'w'
STATUS,Z
m_eo
'o'
INDF
INDF,W
LCD_datos

; Es "," ?

; Muestra lon_dec3
; Es "," ?

; Muestra lon_dec4
; Es "," ?

; Muestra " "

; Es "w" ?

; Muestra "e" u "o"

En el final se ve como se transforma, si es necesario, la w de west en la o de oeste. Las dems


subrutinas de visualizacin son similares a la anterior.
El prximo paso que se sigue en el desarrollo del programa, es buscar la informacin de
velocidad y fecha que otorga la sentencia $GPRMC. De manera similar al caso anterior, se
comienza buscando el encabezado durante 3 segundos, para luego almacenar y visualizar los
datos, con reset al mdulo GPS de por medio, si es necesario:
t_vel
c_vel

2006

movlw
movwf
movf
btfsc
goto
goto
call
call
movf
sublw
btfss
goto
call
movf
sublw
btfss

3
SEG_COMPR
SEG_COMPR,F
STATUS,Z
$+2
$+2
rst_g
gps_rx
SER_DAT,W
0x52
STATUS,Z
c_vel
gps_rx
SER_DAT,W
0x4D
STATUS,Z

; Reset GPS
; Recibe un byte, se busca $GPRMC,
; Es "R" ?
; No
; Es "M" ?

Unidad Mvil

77

Posicionador Satelital
Comunicado Por
Telefona Celular

goto
call
movf
sublw
btfss
goto
call
movf
sublw
btfss
goto
call
call

c_vel
gps_rx
SER_DAT,W
0x43
STATUS,Z
c_vel
gps_rx
SER_DAT,W
0x2C
STATUS,Z
c_vel
rx_rmc
m_vel

; No
; Es "C" ?
; No
; Es "," ?
; No
; Toma el paquete
; Muestra la velocidad

Para tomar los datos de la sentencia $GPRMC, se sigue la siguiente subrutina:


rx_rmc

rx_p

movlw
movwf
movlw
movwf
call
movf
movwf
incf
decfsz
goto
return

LOW
D_RMC
FSR
d'58'
CONT
gps_rx
SER_DAT,W
INDF
FSR,F
CONT,F
rx_p

; Comienzo de la RAM
; Nmero de bytes a guardar
; Toma un byte
; Lo guarda donde apunta FSR
; Decrementa countador

El siguiente bloque de programa establece cual es el perodo de muestreo en que la unidad fija,
compuesta del telfono celular y la PC que brinda la ubicacin en el mapa, recibir los datos de
posicionamiento; o lo que es lo mismo, cada cuanto tiempo se transmite un SMS.
En un principio, se haba tomado un perodo de duracin fija, pero esto traa la dificultad de que
cuando el vehculo desarrollaba altas velocidades se perdan datos de la trayectoria seguida, y
cuando el vehculo estaba estacionado, el dispositivo quedaba transmitiendo datos de modo
superfluo ya que la posicin siempre era la misma. Es por esto que se tom la decisin de que los
perodos entre la transmisin de cada SMS estn en funcin de la velocidad del vehculo.
Para llevar adelante esto, se tom como premisa transmitir un SMS cada 250 metros,
aproximadamente. A partir de la ecuacin de la velocidad v = d/t, y teniendo en cuenta que la
sentencia $GPRMC da la velocidad en nudos, el perodo t de muestreo en segundos, para una
velocidad v dada, sera:

t=

486
v

A los fines prcticos de implementacin en software, se dispuso que los perodos estn de acuerdo
a los valores de la tabla 3 de la pgina siguiente.

2006

Unidad Mvil

78

Posicionador Satelital
Comunicado Por
Telefona Celular

Velocidad (nudos)
0
1
2
3
4
5
6
7
8
de 9 a 10
de 11 a 13
de 14 a 18
de 19 a 21
de 22 a 28
de 29 a 40
ms de 40

Perodo (segundos)
900 (15 min.)
480 (8 Min.)
240
160
120
100
80
70
60
50
40
30
25
20
15
10

Tabla 3: Perodos de transmisin de SMS en funcin de la velocidad.

El cdigo en assembler de lo descrito, es el siguiente:


taseo

2006

movf
btfsc
goto
movf
sublw
btfsc
goto
movf
sublw
btfsc
goto
movf
sublw
btfsc
goto
movf
sublw
btfsc
goto
movf
sublw
btfsc
goto
movf
sublw
btfsc
goto
movf
sublw
btfsc
goto
movf
sublw

SAT_VEL,W
STATUS,Z
t15m
SAT_VEL,W
0x01
STATUS,Z
t08m
SAT_VEL,W
0x02
STATUS,Z
t240
SAT_VEL,W
0x03
STATUS,Z
t160
SAT_VEL,W
0x04
STATUS,Z
t120
SAT_VEL,W
0x05
STATUS,Z
t100
SAT_VEL,W
0x06
STATUS,Z
t80
SAT_VEL,W
0x07
STATUS,Z
t70
SAT_VEL,W
0x08

; Es 0 ?
; Si
; Es 1 ?
; Si
; Es 2 ?
; Si
; Es 3 ?
; Si
; Es 4 ?
; Si
; Es 5 ?
; Si
; Es 6 ?
; Si
; Es 7 ?
; Si
; Es 8 ?
Unidad Mvil

79

Posicionador Satelital
Comunicado Por
Telefona Celular

t15m

t08m

t240

t10

btfsc
goto
movlw
subwf
btfss
goto
movlw
subwf
btfss
goto
movlw
subwf
btfss
goto
movlw
subwf
btfss
goto
movlw
subwf
btfss
goto
movlw
subwf
btfss
goto
goto

STATUS,Z
t60
d'11'
SAT_VEL,W
STATUS,C
t50
d'14'
SAT_VEL,W
STATUS,C
t40
d'19'
SAT_VEL,W
STATUS,C
t30
d'22'
SAT_VEL,W
STATUS,C
t25
d'29'
SAT_VEL,W
STATUS,C
t20
d'41'
SAT_VEL,W
STATUS,C
t15
t10

movlw
movwf
clrf
return
movlw
movwf
clrf
return
movlw
movwf
clrf
return

clrf
movlw
movwf
return

d'15'
M_MIN
M_SEG

; Si
; SAT_VEL < 11 ?
; Si
; SAT_VEL < 14 ?
; Si
; SAT_VEL < 19 ?
; Si
; SAT_VEL < 22 ?
; Si
; SAT_VEL < 29 ?
; Si
; SAT_VEL < 41 ?
; Si
; No

d'8'
M_MIN
M_SEG
d'4'
M_MIN
M_SEG

M_MIN
d'10'
M_SEG

Est claro que estos valores pueden ser adaptados en funcin de las necesidades del usuario o de
las velocidades desarrolladas por el vehculo, tomando otras cifras para la construccin de la tabla
3 y modificando ligeramente las subrutinas, de manera tal que puedan tomarse intervalos menores
o mayores.

2006

Unidad Mvil

80

Posicionador Satelital
Comunicado Por
Telefona Celular

En este punto, el programa principal compara los valores corrientes de muestreo con los minutos
y segundos transcurridos, los cuales estn controlados como se explic en el punto 7.2.4. por la
seal de un pulso por segundo del mdulo GPS que ingresa al microcontrolador a travs de la
interrupcin externa.

lyt

movf
subwf
btfss
goto
movf
xorwf
btfss
goto
movf
subwf
btfss
goto
clrf
clrf
call
goto

M_MIN,W
MIN,W
STATUS,C
gga_l
M_MIN,W
MIN,W
STATUS,Z
lyt
M_SEG,W
SEG,W
STATUS,C
gga_l
SEG
MIN
tx_fbus
gga_l

; MIN < M_MIN ?


; Si -> Recomienza
; MIN = M_MIN ?
; No -> Mayor
; SEG < M_SEG ?
; Si -> Recomienza
; Transmite SMS
; Recomienza

Si hay coincidencia entre los valores, se llama a las subrutinas de transmisin de mensaje de
texto, se reinicializan los contadores de tiempo y se cierra el bucle principal, volviendo al inicio
del programa. En caso contrario, solo se vuelve al principio.
Las tareas de las subrutinas de SMS, de acuerdo al protocolo F-BUS, son:
1. Tomar los datos a enviar y elaborar un SMS en formato empaquetado, de acuerdo a lo
explicado en el captulo anterior.
2. Transmitir un byte 0x55 para inicializar el bus.
3. Enviar el comando de pedido de Versin de hardware y software.
4. Transmitir un byte 0x55.
5. Transmitir el SMS.
Si bien se explic antes que para inicializar el bus deben enviarse 128 caracteres 0x55, se
comprob que enviando solo uno antes de cada cadena ere suficiente. Adems, se verific en la
prctica que despus de cada transmisin o sea, despus de los puntos 2, 3, 4 y 5 debe tomarse
una demora de 50 milisegundos antes de la prxima transmisin.
A modo de ejemplo, se muestra aqu la rutina de transmisin de los puntos 2 y 3:
tx_head movlw
call
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw

2006

0x55
SerTx
Delay50
0x1E
SerTx
0x00
SerTx
0x0C
SerTx
0xD1
SerTx
0x00
SerTx
0x07

; 1E 00 0C D1 00 07 00 01 00 03 00 01 60 00 72 D5

Unidad Mvil

81

Posicionador Satelital
Comunicado Por
Telefona Celular

call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
movlw
call
call
return

SerTx
0x00
SerTx
0x01
SerTx
0x00
SerTx
0x03
SerTx
0x00
SerTx
0x01
SerTx
0x60
SerTx
0x00
SerTx
0x72
SerTx
0xD5
SerTx
Delay50

Para la transmisin del mensaje de texto, la rutina es similar. Recordamos que debe enviarse al
final de la sentencia el checksum la cadena calculando la funcin lgica XOR entre los bytes
pares por un lado e impares por el otro. De esta manera la parte final de la subrutina ser:
movlw
xorwf
call
movlw
xorwf
call
movlw
xorwf
call
movlw
xorwf
call
movlw
xorwf
call
movlw
xorwf
call
movf
call
movf
call
call
return

2006

0x08
XOR0,F
SerTx
0x04
XOR1,F
SerTx
0x01
XOR0,F
SerTx
0xA7
XOR1,F
SerTx
0x01
XOR0,F
SerTx
0x41
XOR1,F
SerTx
XOR0,W
SerTx
XOR1,W
SerTx
Delay50

Unidad Mvil

82

Posicionador Satelital
Comunicado Por
Telefona Celular

7.5. Referencias
7.5.1. Referencias bibliogrficas
Microchip Technology Inc., PIC 16F87X Data Sheet, www.microchip.com, 2001.
Microchip Technology Inc., PICmicro Mid-Range MCU Family Reference Manual,
www.microchip.com, 1997.
Microchip Technology Inc., Embedded Control Handbook, www.microchip.com, 1997.
Jos Angulo Usategui, Ignacio Angulo Martnez, Microcontroladores PIC. Diseo Prctico
de Aplicaciones, Ed. McGraw-Hill, 1997.
Pierbassano Turrini, Visualizzatore Remoto GPS, www.qsl.net/iw2bc/disp_gps.html, 2004.

Winstar Display Co., WH1602A Datasheet, www.winstar.com.tw, 2005.

7.5.2. Software
MPLAB IDE 7.30, www.microchip.com, 2006.
EPICWIN 2.46 beta, microEngineering Labs Inc., 2004.
Tera Term Pro 3.1.3, www.ayera.com, 2002.
VisualGPS 3.30, www.apollocom.com, 2001.
MultiSIM 9, www.electronicsworkbench.com, 2005.

Sprint Layout 4.0, www.abacom-online.de, 2004.

2006

Unidad Mvil

83

8
Aplicacin de visualizacin en PC
8.1. Introduccin
Para la visualizacin en ordenador personal de los datos brindados por la unidad mvil, se
desarroll un programa de interfaz grfica a travs del entorno de programacin visual DELPHI de
la compaa BORLAND, en su versin cuatro, compatible con los altamente difundidos sistemas
operativos WINDOWS de MICROSOFT. Las principales funciones de dicho programa incluyen:

Adquirir la informacin que llega al puerto serie a travs del cable de datosI que conecta a
la PC con el telfono celular encargado de recibir los mensajes de texto.
Convertir dicha informacin en los correspondientes campos de una base de datos, para su
mejor manipulacin, aprovechamiento y administracin.
Transformar las distintas posiciones desarrolladas por el/los mvil/es, en correspondientes
puntos sobre el plano digitalizado de Villa Mara/Villa Nueva.

La eleccin de DELPHI se bas en que es una herramienta poderosa y de uso sencillo para la
generacin de programas de interfaz grfica de usuario (GUI, graphical user interface), con la
que se puede acceder fcilmente a todo lo que la mquina y el sistema operativo tienen para
ofrecer. Con los componentes de datos de DELPHI se puede tener abierta una tabla o consulta de la
base de datos y ver los datos en tiempo de diseo, lo que optimiza el desarrollo de la aplicacin,
al aprovechar los mismos elementos que utilizar el programa compilado. Tambin es importante
destacar que, para la eleccin de la herramienta de desarrollo, pesaron las caractersticas de
depuracin de errores del entorno y la familiaridad de quien escribe estas lneas con el lenguaje de
programacin Pascal.
Actualmente el mtodo preferible para el almacenamiento de datos en forma segura pasa
necesariamente por la utilizacin de alguno de los formatos de bases de datos ms conocidos,
como puede ser dBase, Access, Paradox, etc. De esta manera se tiene la ventaja de poder usar los
datos en mltiples aplicaciones, ya que se encuentran en un formato estndar reconocido por
varios gestores de bases de datos y la mayora de los entornos de desarrollo. En cuanto al sistema
de base de datos, se opt por Paradox por su compatibilidad de formatos de campos con el tipo de
datos a manejar en la aplicacin.
La calibracin en el plano regional de los puntos que representan las posiciones, estuvo asistida
por las imgenes satelitales provistas por el software GOOGLE EARTH en su versin libre, el cual
provee a la fecha imgenes con una definicin de un metro por pxel en la zona, equivalente a una
vista area de 500 metros.
I

Cable de datos serial para celulares NOKIA, descrito en la pgina 61.

2006

Posicionador Satelital Comunicado Por Telefona Celular

84

Posicionador Satelital
Comunicado Por
Telefona Celular

8.2. Entorno de programacin y bases de datos


8.2.1. Principales caractersticas de DELPHI
Tras 9 versiones de compiladores de TURBO PASCAL y BORLAND PASCAL, que fueron extendiendo
el lenguaje gradualmente, BORLAND puso a la venta DELPHI en 1995, convirtiendo Pascal en un
lenguaje de programacin visual. La mejor manera de describir a DELPHI es como un entorno de
desarrollo visual basado en Object Pascal II. Todas las partes comunes de la interfaz grfica de
usuario de Windows, tales como ventanas, botones y listas de objetos, estn incluidas en DELPHI
como componentes, lo que significa que no hay que escribir ningn cdigo cuando se incluye
alguno de estos componentes en una aplicacin.
DELPHI incorpora un modelo completo de Programacin Orientada a Objetos, incluyendo
encapsulacin, herencia simple y polimorfismo. Por ser un lenguaje desarrollado cuando los
conceptos de Programacin Orientada a Objetos han alcanzado su madurez, el entorno ofrece
tcnicas de programacin que no se encuentran en lenguajes ms antiguos como C++. Una de sus
principales caractersticas es la arquitectura de sus componentes, que permite una completa
integracin de estos dentro del lenguaje. DELPHI ofrece un conjunto de instrucciones estructuradas
correctamente desde el punto de vista del diseo de lenguajes y utiliza la tcnica de tratamiento de
errores mediante excepciones. Uno de los sus puntos fuertes es la velocidad con que se compilan
y enlazan las aplicaciones, aspecto muy importante, tratndose de sistemas de diseo y
programacin interactivos. El compilador crea aplicaciones empaquetadas en compactos archivos
ejecutables, sin la necesidad de voluminosas libreras. Las tcnicas de depuracin siguen siendo
similares a las del depurador integrado en las primeras versiones de TURBO PASCAL. Sin embargo,
las diferencias quedan determinadas por la diferente estructura de los programas escritos para
MS-DOS y WINDOWS.
DELPHI puede trabajar con muchos tipos de bases de datos, valindose del motor de bases de
datos (BDE, Borland Database Engine) que le permite acceder a bases de datos locales, como
Paradox o DBase, o a bases de datos SQL de servidores de red, como InterBase, o a cualquier
fuente de datos accesible por conectividad abierta de bases de datos (ODBC). Todos los controles
de bases de datos de DELPHI ofrecen una retroalimentacin inmediata, en tiempo de diseo, de su
aspecto final. El Administrador del Motor de Datos (BDE Administrator) es el programa
necesario para configurar las opciones de acceso a bases de datos de DELPHI. Para conocer la
estructura de una base de datos, saber qu tablas contiene, qu columnas, ndices y restricciones
se han definido para cada tabla, y para visualizar los datos almacenados en las mismas, DELPHI
ofrece Database Explorer: el Explorador de Bases de Datos. La herramienta utilizada para crear
tablas de Paradox y dBase es Database Desktop con la que es muy fcil copiar tablas, modificar
su estructura y editar su contenido.

8.2.2. La estructura de un proyecto de aplicacin


El proyecto ms frecuente en DELPHI es el proyecto de aplicacin, siendo su objetivo: la creacin
de un ejecutable. DELPHI divide las aplicaciones en mdulos relativamente independientes, donde
cada ventana se coloca en una unidad separada, y la integracin de las unidades se produce
gracias a un archivo especial, el archivo de proyecto. Todo el esqueleto bsico del proyecto de
aplicacin es creado automticamente por DELPHI, y muy pocas veces es necesario modificarlo
explcitamente.
II

Object Pascal: evolucin del lenguaje Pascal que incluye la programacin orientada a objetos.

2006

Aplicacin de visualizacin en PC

85

Posicionador Satelital
Comunicado Por
Telefona Celular

El archivo de proyecto tiene la extensin .dpr (DELPHI Project). El contenido de este fichero es
Pascal, y su estructura es similar a la que tenan los programas escritos en el lenguaje Pascal
original:
program NombreProyecto;
uses
Lista de Unidades;
Declaraciones
begin
Lista de instrucciones
end.

Se sabe que en WINDOWS, toda la interaccin entre el usuario y una aplicacin se genera a travs
de reas delimitadas en la pantalla denominadas ventanas. En DELPHI una ventana WINDOWS es
un componente ms, al que se denomina formulario. Los componentes son los objetos que se
colocan dentro del formulario, y forman la interfaz del usuario
La principal cualidad de un formulario es la de tratarse de un componente contenedor, lo que le
permite albergar en su interior otros componentes, que nos sirven para mostrar o solicitar
informacin al usuario del programa.
Cada componente tiene atributos especficos que permiten el desarrollo de una aplicacin. Estos
son las propiedades, los eventos y los mtodos. Las propiedades son caractersticas del control, y
recogen cualidades como altura, anchura, color, etc. Los eventos son las acciones que pueden
realizarse sobre dicho control, como pasar el mouse por encima del control, dar click con el
mouse, etc. Los mtodos son las acciones que realizar el control al ejecutar algn evento, este es
en si el cdigo del control. El cdigo de una aplicacin DELPHI habitualmente siempre est
asociado con eventos, de tal forma que su ejecucin no se produce en forma secuencial, desde el
principio hasta el fin del programa. Un evento es una seal, externa o interna a la aplicacin, que
el programa puede aprovechar para ejecutar un cierto bloque de cdigo, el cual debe escribirse en
un mtodo.
Al disearse una ventana o formulario aadiendo componentes al mismo y especificando valores
iniciales para sus propiedades; estos valores iniciales se almacenan, en tiempo de diseo, en los
ficheros de formularios, de extensin .dfm (DELPHI Form). DELPHI trata a los eventos de los
componentes como propiedades de tipo especial. Por lo tanto, tambin se colocan en estos
ficheros las direcciones de los mtodos que dan tratamiento a los eventos.

8.2.3. Bases de datos Paradox


El concepto base de datos hace referencia a una gran masa de datos los cuales se encuentran
relacionados entre s, divididos en varias categoras que son los registros, las tablas, los ficheros,
las bibliotecas, etc. Una base de datos permite la realizacin de consultas, reportes, filtrado de
informacin, entre otras cosas.
Se denomina tabla a un conjunto de registros, llamados filas, cada uno de los cuales contiene uno
o ms campos, que se denominan columnas. Un campo es la unidad mnima de informacin que
es posible crear o modificar en una base de datos. Un registro es un conjunto de campos
relacionados entre s. En suma, una tabla es una coleccin de registros que, conteniendo
informaciones distintas, guardan todos una misma estructura.
2006

Aplicacin de visualizacin en PC

86

Posicionador Satelital
Comunicado Por
Telefona Celular

Al igual que los campos se agrupan formando registros y estos formando tablas, las tablas pueden
tambin agruparse formando bases de datos. Cada una de las tablas de una base de datos puede
tener una estructura y base de datos totalmente distintos a las dems tablas, aunque por regla
general guardar algn tipo de relacin con ellas.
Cuando desde un programa DELPHI se desea acceder a los datos almacenados en una base,
abriendo una de sus tablas o realizando una consulta, el resultado es la obtencin de un cursor,
que representa al grupo de filas y columnas obtenidos. Todas las operaciones sobre bases de datos
se realizan siempre a travs de un cursor, que puede contener todas las filas y columnas de una
tabla, solo algunas de las filas o columnas de dicha tabla, o bien filas y columnas de mltiples
tablas.
El trmino ndice en una base de datos hace referencia a una relacin ordenada, en forma
ascendente o descendente, de una o ms columnas de una tabla, o bien de una expresin formada
a partir de una o ms columna. La finalidad de un ndice es determinar el orden en que se
muestran las filas de una tabla, que suele no coincidir con el orden fsico que ocupan los datos en
dicha tabla.
El formato Paradox es un sistemas de bases de datos local de escritorio. Paradox administra
tablas en ficheros independientes. Cada tabla se almacena en un conjunto de ficheros, todos con el
mismo nombre, pero con las siguientes extensiones:

Extensin
.db
.mb
.px
.Xnn, .Ynn
.val

Explicacin
Definicin de la tabla y campos de longitud mxima fija
Campos de longitud variable, como los memos y grficos
El ndice de la clave primaria
ndices secundarios
Validaciones e integridad referencial

En el fichero .db se almacena una cabecera con la descripcin de la tabla, adems de los datos de
los registros que corresponden a campos de longitud fija. Este fichero est estructurado en
bloques de idntico tamao. El ndice primario de la tabla se almacena en el fichero de extensin
.px . No es necesario que una tabla tenga ndice primario, pero es altamente ventajoso. Al estar
ordenados los registros dentro los bloques de datos, slo se necesita almacenar en el ndice la
clave del primer registro de cada bloque, lo que disminuye considerablemente los requerimientos
de espacio del ndice, y acelera las bsquedas.
En el presente proyecto se utilizan varias tablas Paradox, que conforman una nica base de datos,
y que tienen todas la misma estructura. La tabla principal, denominada TCo en la aplicacin, es la
encargada de guardar los 300 datos ms recientes, ha medida que van llegando a la PC. El nombre
del fichero en el disco correspondiente a esta tabla es Dcorriente.db. Adems, una segunda
tabla, cuya referencia en el programa es TDa, almacena todos los datos correspondientes al da de
la fecha, utilizando un fichero cuyo nombre est formado por dicha fecha. De este modo, queda el
historial de todos los datos almacenados en archivos cuyo tamao es reducido. As, si se desea
saber el recorrido que sigui un mvil determinado el 2 de septiembre, la aplicacin debe realizar
la bsqueda sobre el fichero D060902.db.
En la definicin de la estructura de las tablas se utilizaron campos Paradox del tipo fecha (date),
horarios (time), nmeros enteros (shortint), nmeros reales de coma flotante (number), y
alfanumricos (alpha) de una letra. La tabla principal y todas las tablas diarias tienen entonces, la
siguiente estructura:
2006

Aplicacin de visualizacin en PC

87

Posicionador Satelital
Comunicado Por
Telefona Celular

N
1
2
3
4
5
6
7
8
9
10

Nombre de campo
FechaE
HoraE
Identificador
Latitud
LatitudL
Longitud
LongitudL
Satelites
FechaS
HoraS

Tipo
date
time
shortint
number
alpha (1)
number
alpha (1)
shortint
date
time

Los campos FechaE y HoraE registran el momento en que fue registrada la informacin, el
campo Identificador almacena el nmero de mvil a que corresponde la informacin, los
campos 4, 5, 6 y 7 registran la posicin, el campo 8 guarda la cantidad de satlites al momento de
la toma de datos, y finalmente, los campos FechaS y HoraS almacenan el momento en que el
mensaje de texto fue enviado.
En la siguiente grilla se puede ver un ejemplo de como quedan almacenados los datos en las
tablas, donde cada fila o registro indica un dato de posicin que est dispuesto segn la estructura
de campos anterior que forman las columnas de la grilla.
06/09/2006
06/09/2006
06/09/2006
06/09/2006
06/09/2006
06/09/2006
06/09/2006
06/09/2006
06/09/2006
06/09/2006
09/09/2006
09/09/2006
09/09/2006
09/09/2006
11/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006

2006

15:16:08
15:16:23
15:16:43
15:17:23
15:17:43
22:28:18
22:29:09
22:30:11
22:31:05
22:32:18
10:36:22
10:56:44
11:04:25
11:05:01
13:00:28
13:02:21
13:02:45
13:03:22
13:03:51
13:04:20
13:04:42
13:05:11
13:38:38
13:53:51
14:09:08
14:24:32
14:39:36
14:41:00
14:41:32
14:41:57

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

3.225,1207
3.225,1908
3.225,2478
3.225,2982
3.225,3447
3.225,3387
3.225,2293
3.225,0709
3.225,0263
3.224,9551
3.225,3959
3.224,4287
3.225,1318
3.225,2383
3.225,2910
3.225,2909
3.225,2995
3.225,1992
3.225,1065
3.224,9960
3.224,9937
3.225,0226
3.224,9759
3.224,9818
3.224,9783
3.224,9783
3.224,9818
3.224,9832
3.225,0507
3.225,1154

s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s

6.314,3324
6.314,4431
6.314,5475
6.314,7775
6.314,9146
6.315,0212
6.315,0614
6.314,8252
6.314,7466
6.314,4326
6.315,0632
6.315,2437
6.314,5666
6.314,5184
6.314,7710
6.314,7761
6.314,6663
6.314,3917
6.314,2445
6.314,1413
6.314,2210
6.314,2576
6.314,2622
6.314,2539
6.314,2555
6.314,2516
6.314,2548
6.314,2586
6.314,3375
6.314,3277

Aplicacin de visualizacin en PC

o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o

5
6
6
5
5
5
6
3
6
4
3
7
6
6
3
3
3
3
3
3
3
3
6
7
5
5
5
7
6
6

06/09/2006
06/09/2006
06/09/2006
06/09/2006
06/09/2006
06/09/2006
06/09/2006
06/09/2006
06/09/2006
06/09/2006
09/09/2006
09/09/2006
09/09/2006
09/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006
12/09/2006

15:13:43
15:13:58
15:14:18
15:14:58
15:15:18
22:25:52
22:26:43
22:27:45
22:28:40
22:29:51
10:33:53
10:54:16
11:01:57
11:02:33
12:57:57
12:59:50
13:00:36
13:00:51
13:01:20
13:01:49
13:02:11
13:02:40
13:36:08
13:51:20
14:06:38
14:22:02
14:37:06
14:38:29
14:39:02
14:39:27

88

Posicionador Satelital
Comunicado Por
Telefona Celular

8.3. Descripcin de la aplicacin


8.3.1. Formulario principal
El programa desarrollado para el presente proyecto tiene una ventana principal, con algunas
funciones bsicas, la cual otorga acceso a una ventana secundaria que contiene el plano de la
ciudad y los puntos equivalentes a las sucesivas posiciones del vehculo. La ventana principal fue
elaborada a partir de un formulario, denominado FPrin en el cdigo, que contiene un men en
la parte superior, luego dos botones que posibilitan uno, la conexin/desconexin de la
transferencia de datos desde/hacia el celular; y el otro, el acceso al formulario secundario con el
plano.

Componentes no visibles

Figura 1: Formulario principal de la aplicacin.

El formulario principal contiene tambin otros componentes no visibles en tiempo de ejecucin,


pero fundamentales para el funcionamiento del programa. Entre estos componentes estn aquellos
encargados de manejar las tablas de la base de datos; varios temporizadores cuyas funciones sern
descriptas ms adelante; y el componente MSComm que es un control ActiveX III encargado de
establecer el vnculo entre el programa desarrollado en DELPHI y el puerto serie de la PC. Las
propiedades ms importantes de este componentes son:

CommPort: Establece el nmero de puerto de comunicaciones.


Settings: Configura la velocidad y la cantidad de bits de datos, paridad y parada del enlace
como una cadena de texto.
PortOpen: Establece y muestra el estado del puerto, pudiendo tambin abrirlo y cerrarlo.
InbufferCount: Cantidad de caracteres presente en el buffer IV de recepcin.
Input: Lee y elimina caracteres del buffer de recepcin.
Output: Escribe una cadena de caracteres en el buffer de transmisin.

III

Desde el punto de vista de su implementacin, los componentes ActiveX son objetos COM implementados en
bibliotecas de enlace dinmico, o DLLs. Un objeto COM (Component Object Model), a su vez, es un objeto con un
formato binario estndar definido por MICROSOFT, que permite que diferentes lenguajes de programacin hagan uso
de las propiedades, mtodos y eventos del mismo.
IV
Buffer o intermediario: espacio de memoria destinado al almacenamiento temporal de datos, en este caso, bytes que
se encuentran en el puerto serial de la PC.

2006

Aplicacin de visualizacin en PC

89

Posicionador Satelital
Comunicado Por
Telefona Celular

Al ejecutarse, el programa crea el formulario FPrin y en ese momento inicial, se pone en marcha
el procedimiento FormCreate que se encarga de inicializar variables, configurar el puerto serie de
acuerdo a las especificaciones del protocolo F-BUS, y abrir la tabla de la base de datos TCo.
procedure TFPrin.FormCreate(Sender: TObject);
begin
St.Visible:=False;
MSComm.CommPort:=1;
MSComm.Settings:='115200,n,8,1';
MSComm.InputMode:=1;
if MSComm.PortOpen=True then MSComm.PortOpen:=False;
seq:=1;
j:=1;
emc:=False;
leyendo:=False;
TCo.Open;
TimerBat.Enabled:=False;
TimerHead.Enabled:=False;
conec:=False;
qant:=0;
prisms:=0;
con:=10;
end;

De manera similar, cada vez que se sale del programa, se ejecuta el procedimiento FormClose, en
donde se cierra la base de datos y el puerto.
procedure TFPrin.FormClose(Sender: TObject; var Action: TCloseAction);
begin
TCo.Close;
if MSComm.PortOpen=True then MSComm.PortOpen:=False;
end;

La configuracin de la barra de estado en donde se visualiza si la conexin F-BUS est establecida


o no por medio de un pequeo crculo verde o rojo, respectivamente y el estado de la batera a
travs de siete pequeas barras de progreso imitando la indicacin del display del celular se lleva
a cabo con el procedimiento FormShow, que se ejecuta cada vez que el formulario principal es
trado a la vista por sobre las dems ventanas del sistema.
procedure TFPrin.FormShow(Sender: TObject);
var
r: TRect;
begin
Barra.Perform(SB_GETRECT,2,integer(@r));
ProgBat.Parent:=Barra;
ProgBat.Top:=r.Top;
ProgBat.Left:=r.Left;
ProgBat.Width:=r.Right-r.Left;
ProgBat.Height:=r.Bottom-r.Top;
.
.
.
end;

2006

Aplicacin de visualizacin en PC

90

Posicionador Satelital
Comunicado Por
Telefona Celular

8.3.2. Conexin con el celular


La accin del botn Conectar celular depende del estado de la interfaz F-BUS y se desarrolla en
el procedimiento BConecClick. Si el celular no est conectado, se abre el puerto serial, se pone a
cero la variable seq V y se da inicio al temporizador TimerHead. Por el contrario, si hay una
conexin establecida, se paran los temporizadores, se cierra el puerto y se indica en la barra de
estado del formulario principal que el dispositivo est desconectado.
procedure TFPrin.BConecClick(Sender: TObject);
begin
if not conec then
begin
conec:=True;
BConec.Caption:='Desconectar celular';
seq:=1;
MSComm.PortOpen:=True;
TimerHead.Enabled:=True;
end
else
begin
if not St.Visible then
begin
TimerBat.Enabled:=False;
TimerHead.Enabled:=False;
conec:=False;
Barra.Panels[1].Text:='Off Line ';
ProgBat.Position:=0;
COnLine.Brush.Color:=clRed;
BConec.Caption:='Conectar celular';
MSComm.PortOpen:=False;
end;
end;
end;

El componente TimerHead llama al procedimiento TimerHeadTimer (evento OnTimer) cada vez


que se alcanza el perodo almacenado en la propiedad Interval del componente, 800
milisegundos en este caso. El procedimiento enva la sentencia de encabezado del protocolo FBUS, es decir la secuencia de caracteres 0x55 y el comando de pedido de Versin de Hardware y
Software con las correspondientes demoras de 50 milisegundos despus de cada transmisin.
As, cada 0,8 segundos, se enva el encabezado hasta tanto se establezca la conexin. Si el enlace
est en buenas condiciones, con el telfono enganchado correctamente en el conector pop-port, la
conexin se establece generalmente al primer intento.
procedure TFPrin.TimerHeadTimer(Sender: TObject);
begin
MSComm.Output:='U';
Sleep(50);
MSComm.Output:=Chr($1E)+Chr($00)+Chr($0C)+Chr($D1)+Chr($00)+Chr($07)+
Chr($00)+Chr($01)+Chr($00)+Chr($03)+Chr($00)+Chr($01)+
Chr($60)+Chr($00)+Chr($72)+Chr($D5);
Sleep(50);
end;
V

La variable seq contiene el valor del nmero de secuencia de las instrucciones F-BUS, segn lo explicado en la
pgina 44.

2006

Aplicacin de visualizacin en PC

91

Posicionador Satelital
Comunicado Por
Telefona Celular

De manera similar al caso anterior, una vez establecida la comunicacin, el temporizador


TimerBat, se encarga en pedir el estado de la batera del telfono mvil, por medio del
procedimiento TimerBatTimer, que se produce cada un segundo ante el evento OnTimer. De
acuerdo al estatuto F-BUS, el sub-procedimiento PedBat enva la instruccin correspondiente para
pedir el estado de la batera, verificando que posea el nmero de secuencia seq correcto y los
checksum adecuados, adems de la demora de 50 milisegundos necesaria.
procedure TFPrin.PedBat;
const
f = 13;
s: array[0..f] of Byte = ($1E,$00,$0C,$17,$00,$08,$00,$01,
$00,$0A,$02,$00,$01,$40);
var
i, b1, b2: Byte;
ss: AnsiString;
begin
leyendo:=True;
s[s[5]+5]:=$40+seq;
seq:=seq+1;
if seq=8 then seq:=0;
b1:=0;
b2:=0;
i:=0;
repeat
b1:=b1 xor s[i];
b2:=b2 xor s[i+1];
ss:=ss+Chr(s[i])+Chr(s[i+1]);
i:=i+2;
until i=f+1;
ss:=ss+Chr(b1)+Chr(b2);
MSComm.Output:=ss;
Sleep(50);
EnPedido;
end;

Este procedimiento no solo sirve para que el usuario sepa cuando debe proceder a poner en carga
el aparato telefnico, sino que permite tambin mantener el bus de comunicacin activo, de
manera tal que no se hace necesario el envo del encabezado toda vez que se quiera mandar
cualquier otra instruccin. En resumen, mientras haya un celular conectado al puerto serie y cada
un segundo, el programa enva el pedido de estado de batera, el telfono lo responde, y ambos
envan las correspondientes sentencias de reconocimiento, establecindose as un dilogo
continuo entre las partes que posibilita que en cualquier momento pueda enviarse cualquier otra
instruccin, sin la necesidad de la puesta en marcha del canal F-BUS.
Se dijo en el prrafo anterior que el programa enva la trama de reconocimiento ante una
respuesta del telfono. La recepcin de los bytes enviados por el telfono y la transmisin,
cuando corresponda, de la cadena de reconocimiento, son tareas del procedimiento TimerRxTimer
ejecutado ante el evento OnTimer del componente TimerRx, cuya propiedad Interval tiene el valor
de 50 milisegundos. Entonces, cada 50 milisegundos, se verifica si en el buffer de entrada del
puerto serie hay datos, de ser as se comprueba si alguno de ellos es el byte 0x1E que indicara el
comienzo de una trama F-BUS. Si esto es as, se verifica con los bytes siguientes, que tipo de
instruccin es, cul es su longitud, se almacena la trama completa y se transmite la cadena de
reconocimiento. En este punto, si la trama enviada por el telfono es una de las que se utilizan en
el programa, se procesan los bytes que la componen. Por ejemplo, para el caso de la trama que
2006

Aplicacin de visualizacin en PC

92

Posicionador Satelital
Comunicado Por
Telefona Celular

enva los datos registrados por el mdulo GPS por medio de un mensaje de texto, se procede a
guardar esta informacin en la tabla TCo, como se ver ms adelante.
procedure TFPrin.TimerRxTimer(Sender: TObject);
var
b1, b2, b3, b4, ba: Byte;
i, k, c: Smallint;
ok: Boolean;
begin
c:=MSComm.InBufferCount;
if c>1 then
begin
buffer:=MSComm.Input;
i:=-1;
repeat
ok:=False;
repeat
i:=i+1;
if (buffer[i]=$1E) and (buffer[i+1]=$0C) then ok:=True;
until ok or (i=c-1);
if ok then
begin
b1:=buffer[i+3];
if b1=$7F then con:=0
else
begin
if (b1=$14) and (buffer[i+7]=$59)
and (buffer[i+9]=$03) then
begin
ba:=buffer[i+68] and $7F;
if (buffer[i+66]=$30) and ba=$26 then guardars;
if buffer[i+15]=ulti then indexar;
end;
.
.
.
b2:=buffer[i] and $07;
b3:=$1E xor $0C xor b1;
b4:=$7F xor $02 xor b2;
MSComm.Output:=Chr($1E)+Chr($00)+Chr($0C)+
Chr($7F)+Chr($00)+Chr($02)+
Chr(b1)+Chr(b2)+Chr(b3)+Chr(b4);
Sleep(50);
end;
end;
until (i+4)>=c;
end;
end;

Anteriormente, cuando se describi el protocolo F-BUS, se consign que para leer un SMS del
celular, hay que conocer su posicin en la memoria del aparato, a travs de la correspondiente
instruccin. Esta instruccin es generada por el procedimiento EnPedido que est controlado por
el mismo temporizador que maneja el pedido de estado de batera.

2006

Aplicacin de visualizacin en PC

93

Posicionador Satelital
Comunicado Por
Telefona Celular

procedure TFPrin.EnPedido;
const
f = 17;
s: array[0..f] of Byte = ($1E,$00,$0C,$14,$00,$0C,$00,$00,
$00,$0C,$00,$02,$0F,$55,$55,$55,
$01,$40);
var
i, b1, b2: Byte;
ss: AnsiString;
begin
s[f]:=$40+seq;
seq:=seq+1;
if seq=8 then seq:=0;
b1:=0;
b2:=0;
i:=0;
repeat
b1:=b1 xor s[i];
b2:=b2 xor s[i+1];
ss:=ss+Chr(s[i])+Chr(s[i+1]);
i:=i+2;
until i=f+1;
ss:=ss+Chr(b1)+Chr(b2);
Sleep(100);
MSComm.Output:=ss;
Sleep(50);
end;

Cuando se recibe respuesta de la cantidad y posicin de mensajes SMS guardados en el celular, se


activa un nuevo temporizador (TimerConSMS) cuya funcin es la de ir generando una a una las
instrucciones para leer los mensajes de texto, con un perodo de 150 milisegundos entre cada
pedido, por medio del procedimiento TimerConSMSTimer.
procedure TFPrin.TimerConSMSTimer(Sender: TObject);
const
f = 17;
s: array[0..f] of Byte = ($1E,$00,$0C,$14,$00,$0C,$00,$00,
$00,$02,$00,$02,$00,$FF,$01,$00,
$01,$40);
var
i, b1, b2: Byte;
ss: AnsiString;
begin
if j=1 then
begin
q:=cansms[4];
j:=5;
if (cansms[4]=qant) and (cansms[5]=prisms) then
begin
TimerConSMS.Enabled:=False;
leyendo:=False;
j:=1;
end;
end;

2006

Aplicacin de visualizacin en PC

94

Posicionador Satelital
Comunicado Por
Telefona Celular

if j>1 then
begin
St.Visible:=True;
.
.
.
s[f]:=$40+seq;
seq:=seq+1;
if seq=8 then seq:=0;
s[13]:=cansms[j];
j:=j+1;
q:=q-1;
b1:=0;
b2:=0;
i:=0;
repeat
b1:=b1 xor s[i];
b2:=b2 xor s[i+1];
ss:=ss+Chr(s[i])+Chr(s[i+1]);
i:=i+2;
until i=f+1;
ss:=ss+Chr(b1)+Chr(b2);
if (q=0) or ((j=6) and (cansms[6]=prisms)) then
begin
qant:=cansms[4];
prisms:=cansms[5];
ulti:=cansms[j-1];
TimerConSMS.Enabled:=False;
j:=1;
end;
MSComm.Output:=ss;
Sleep(50);
end;
end;

El procedimiento EnPedido es ejecutado una vez por segundo, pero esto no significa que se lea
completamente la memoria del telfono mvil cada segundo, sino que la lectura completa se lleva
a cabo una sola vez, al establecerse la comunicacin, leyndose luego solo los mensajes nuevos
que arriben al celular. Tambin hay que aclarar que cada mensaje recibido por el programa, es
marcado como ledo en el telfono celular para que de esta manera, cuando la memoria est llena,
los mensajes ms antiguos del aparato son automticamente eliminados cada vez que llega un
nuevo mensaje, lo que permite que el celular queda recibiendo mensajes continuamente sin
interrupcin por falta de memoria.

8.3.3. Recepcin de SMS


El mensaje de texto con los datos de posicin transmitido por la unidad mvil, tiene el siguiente
formato general:

&MM hh:mm:ss lll:ll.llll c LLL:LL.LLLL C SS dd/mm/aaaa


Donde:

&: Smbolo colocado intencionalmente para diferenciar a los SMS enviados por la unidad
mvil de los dems.
2006

Aplicacin de visualizacin en PC

95

Posicionador Satelital
Comunicado Por
Telefona Celular

MM: Par de caracteres numricos que identifican a la unidad mvil de origen, en compatibilidad con una futura implementacin ms de un mvil.
hh:mm:ss: Hora, minutos y segundos en que fue registrada la posicin.
lll:ll.llll: Latitud de la posicin. Los tres primeros caracteres indican los grados, y
los siete ltimos indican los segundos. El smbolo : reemplaza al de
grados (), que no est presente en el mapa convencional de caracteres
del alfabeto soportado por el sistema SMS.
c: N o S. Indica si la latitud corresponde al hemisferio Norte o Sur.
LLL:LL.LLLL: Longitud de la posicin, donde los tres primeros caracteres indican los
grados, y los siete ltimos indican los segundos.
C: E o O. Indica si la longitud de la posicin es Este u Oeste.
SS: Par de caracteres numricos que indican la cantidad de satlites visibles al momento
del registro de la posicin.
dd/mm/aaaa: Fecha en que fue tomada la posicin.
14:45

&01 14:43:59
032:25.3479 s
063:14.9994 o 05
12/09/2006

Opciones
Figura 2: SMS en la pantalla mvil.

Por ejemplo, para un mensaje de texto que en la pantalla del celular se vera segn la figura 2, la
cadena SMS completa es:

&01 14:43:59 032:25.3479 s 063:14.9994 o 05 12/09/2006


Esta cadena indica que la posicin fue tomada por el mvil 01, el 12 de septiembre del 2006, a las
14:43:59, a los 3225.3479 de latitud Sur y a los 6314.9994 de longitud Oeste, cuando haba
cinco satlites a la vista.
Volviendo al programa desarrollado en DELPHI, una vez recibido un SMS y verificado de que sea
un mensaje destinado al proyecto, hay que proceder a desempaquetarlo, es decir, hay que
convertir la trama de bytes que representan al mensaje en la cadena de caracteres de 7 bits
original, con los datos enviados por la unidad mvil. Para ello, tomamos los bytes de la trama de a
pares, formando palabras de 16 bits que rotamos con la funcin de DELPHI shr, para finalmente
quedarnos con los 7 bits menos significativos a travs de una operacin lgica and. Adems de la
cadena SMS, se toma la informacin de fecha y hora de envo del mensaje, datos que se
encuentran en la trama F-BUS en forma de bytes con niveles intercambiados, segn se explic en
la pgina 54. Todos los caracteres son almacenados en un array de variables para formar con
ellos los campos de un nuevo registro, que a su vez es guardado al final de las tablas TCo y TDa.
En sntesis, como se sabe cual es el formato del mensaje de texto enviado por la unidad mvil, se
convierte cada trama F-BUS de un SMS en un registro de la base de datos, todo por medio del
procedimiento guardars, cuyas lneas principales aparecen en la siguiente pgina.
2006

Aplicacin de visualizacin en PC

96

Posicionador Satelital
Comunicado Por
Telefona Celular

procedure guardars;
var
o: Smallint;
b: array[1..66] of Byte;
filename: String;
begin
o:=i+67;
b[02]:=(((buffer[o+02]*$100)+buffer[o+01]) shr 7) and $7F;
b[03]:=(((buffer[o+03]*$100)+buffer[o+02]) shr 6) and $7F;
b[05]:=(((buffer[o+05]*$100)+buffer[o+04]) shr 4) and $7F;
.
.
.
b[55]:= (buffer[i+25] and $F)+$30;
b[56]:=((buffer[i+25] shr 4) and $F)+$30;
b[57]:= (buffer[i+26] and $F)+$30;
b[58]:=((buffer[i+26] shr 4) and $F)+$30;
.
.
.
try
TCo.Append;
TCo['Identificador']:=StrToInt(Chr(b[2])+Chr(b[3]));
TCo['HoraE']:=StrToTime(Chr(b[5])+Chr(b[6])+':'+Chr(b[8])+Chr(b[9])+
':'+Chr(b[11])+Chr(b[12]));
.
.
.
TCo['HoraS']:=StrToTime(Chr(b[61])+Chr(b[62])+':'+Chr(b[63])+
Chr(b[64])+':'+Chr(b[65])+Chr(b[66]));
TCo.Post;
filename:='D'+Chr(b[53])+Chr(b[54])+Chr(b[48])
+Chr(b[49])+Chr(b[45])+Chr(b[46]);
if not FileExists('Datos\'+filename+'.db') then
begin
TCo.FieldDefs.Update;
TCo.IndexDefs.Update;
TDa:=TTable.Create(nil);
TDa.DatabaseName:=TCo.DatabaseName;
TDa.TableName:=filename;
TDa.FieldDefs.Assign(TCo.FieldDefs);
TDa.IndexDefs.Assign(TCo.IndexDefs);
TDa.CreateTable;
end
else TDa.TableName:=filename;
TDa.Open; TDa.Append;
TDa['Identificador']:=TCo['Identificador'];
TDa['HoraE']:=TCo['HoraE'];
.
.
.
TDa.Close;
except
on EConvertError do
begin
TCo.Delete;
Abort;
end;
end;
end;

2006

Aplicacin de visualizacin en PC

97

Posicionador Satelital
Comunicado Por
Telefona Celular

Cuando la aplicacin ha terminado de recibir la totalidad de mensajes de texto almacenados en el


telfono, hay que indexar las tablas para que los datos aparezcan en orden cronolgico. Una
consecuencia no buscada, pero muy til de la indexacin de las tablas Paradox, es que luego de la
creacin del ndice, los registros repetidos son automticamente eliminados.
procedure indexar;
begin
TCo.Close;
TCo.AddIndex('', 'FechaE;HoraE',[ixPrimary,ixUnique]);
TCo.Exclusive:=True;
TCo.DeleteIndex('');
TCo.Exclusive:=False;
TCo.Open;
.
.
.
TCo.Last;
St.Visible:=False; leyendo:=False;
end;

8.3.4. Formulario secundario


Por medio del botn Mapa se accede al formulario secundario FMapa que es contenedor del
plano y los dems objetos que sirven para la ubicacin visual de los mviles.

Figura 3: Formulario Secundario.

2006

Aplicacin de visualizacin en PC

98

Posicionador Satelital
Comunicado Por
Telefona Celular

Entre los componentes del formulario se pueden observar dos paneles de botones radiales. El
primero condiciona la visualizacin a las ltimas 10, 25, 50, 100 o 200 posiciones. El segundo
permite seleccionar el nmero de mvil del que se quiere tener la informacin.

Figura 4: Paneles de dilogo.

El botn X Fecha permite seleccionar el recorrido desarrollado por el mvil en un determinado


momento, sin que necesariamente sean los ltimos, pudindose observar las ubicaciones
almacenadas correspondientes a das u horas anteriores.
El evento central que comanda al formulario secundario se dispara a travs del temporizador
TimerShow, cuyo cdigo, el procedimiento TimerShowTimer, se encarga de recorrer la tabla
correspondiente, tomando los datos de latitud y longitud de los registros, y transformndolos en
su punto equivalente en el plano, una figura circular ( ), en funcin de las condiciones que se le
hayan pasado y la escala correspondiente.
procedure TFMapa.TimerShowTimer(Sender: TObject);
var
filename: String;
LatDB, LonDB: Extended;
X, Y, cc, j: Integer;
DT: TDateTime;
vamos: Boolean;
begin
if FPrin.St.Visible then Exit;
with FPrin do
begin
s:=0;
if RadioU.ItemIndex=-1 then
begin
filename:='D'+FormatDateTime('yymmdd',FFecha.DPi.DateTime);
if not FileExists('Datos\'+filename+'.db') then
begin
TimerShow.Enabled:=False;
Exit;
end
else TDa.TableName:=filename;
end
else TDa.TableName:='Dcorriente';
TDa.Open;
TDa.Last;

2006

Aplicacin de visualizacin en PC

99

Posicionador Satelital
Comunicado Por
Telefona Celular

if RadioM.ItemIndex=0 then cc:=TDa['Identificador']


else cc:=RadioM.ItemIndex;
while (not TDa.Bof) and (ult>0) do
begin
vamos:=False;
DT:=Int(TDa['FechaE'])+Frac(TDa['HoraE']);
if (RadioU.ItemIndex=-1) and (DT>=FFecha.TPi.DateTime)
and (DT<=FFecha.TPf.DateTime) then
begin
vamos:=True;
ult:=10;
end;
if RadioU.ItemIndex<>-1 then vamos:=True;
if (TDa['Identificador']=cc) and vamos then
begin
ult:=ult-1;
s:=s+1;
SetLength(Punto,s);
Punto[s-1]:=TShape.Create(Panel);
Punto[s-1].Shape:=stCircle;
.
.
.
Punto[s-1].ShowHint:=True;
end;
TDa.Prior;
if RadioM.ItemIndex=0 then cc:=TDa['Identificador']
else cc:=RadioM.ItemIndex;
end;
if s>0 then for j:=s-1 downto 0 do Punto[j].BringToFront;
TDa.Close;
TCo.Last;
end;
TimerShow.Enabled:=False;
end;

Figura 5: Ejemplo de tres posiciones sobre una porcin del plano.

Al mover el mouse sobre la imagen, se puede observar en la barra de estado de la ventana, la


latitud y la longitud correspondiente al punto en donde se sita el puntero. Esta accin se
desarrolla en el evento MouseMove a travs del procedimiento ImageMouseMove.

Figura 5: Indicacin en la barra de estado de la latitud y la longitud del punto en donde se sita el mouse.

2006

Aplicacin de visualizacin en PC

100

Posicionador Satelital
Comunicado Por
Telefona Celular

procedure TFMapa.ImageMouseMove(Sender:TObject;Shift:TShiftState;X,Y:Integer);
var
LatMap, LonMap, LatCon, LonCon: Extended;
begin
mX:=X;
mY:=Y;
LatMap:=Lt0+EscY*Y;
LonMap:=Ln0-EscX*X;
LatCon:=(Trunc(LatMap)+Frac(LatMap)*3/5)*100;
LonCon:=(Trunc(LonMap)+Frac(LonMap)*3/5)*100;
MapEstado.Panels[1].Text:='Mouse -> Lat.: '+
FormatFloat('#0""00.0000"'+#39+'"',LatCon)+' s - Lon: '+
FormatFloat('#0""00.0000"'+#39+'"',LonCon)+' o';
MapEstado.Panels[2].Text:=IntToStr(X)+','+IntToStr(Y);
end;

Si se coloca el puntero del mouse sobre cualquiera de los puntos que representan a una posicin,
puede visualizarse una etiqueta o hint con los valores de fecha, hora, latitud y longitud de dicho
punto, tal como se muestra en la figura 6.

Figura 6: Hint con los datos correspondientes a la ubicacin apuntada por el mouse.

De modo similar, al presionarse el botn + Reciente, el puntero del mouse instantneamente se


ubica en el ltimo valor de posicin presente en el plano, mostrando tambin el correspondiente
hint.

Figura 7: Hint en la ubicacin ms reciente del plano.

El plano elegido para el proyecto abarca la totalidad del rea urbana de las vecinas ciudades de
Villa Mara y Villa Nueva, incluyendo un radio aproximado de cuatro kilmetros alrededor del
centro villamariense. En el programa se incluyen dos modos de visualizacin del plano. En el
modo por defecto (figura 3), se ve el plano completo dentro del formulario secundario cuyas
2006

Aplicacin de visualizacin en PC

101

Posicionador Satelital
Comunicado Por
Telefona Celular

medidas son de 1000 pxeles de ancho por 700 de alto, obtenindose una escala aproximada de 12
metros por pxel. Al hacer clic con el botn izquierdo del mouse sobre cualquier punto del plano
se pasa al modo zoom, con una escala de 3,5 metros por pxel, tal como se ve en la figura 8. Al
hacer clic nuevamente sobre el plano se vuelve al modo sin zoom.

Figura 8: Plano en modo zoom.

El procedimiento ImageClick, que se desarrolla ante el evento OnClick sobre la imagen que
contiene al plano, es el encargado de cambiar el tamao de la imagen y los valores de escala para
que los puntos se siten correctamente cuando se cambia de modo de visualizacin.
procedure TFMapa.ImageClick(Sender: TObject);
var
nX, nY: Integer;
begin
if not zoom then
begin
IBruj.Visible:=False;
zoom:=True;
if mY<108 then mY:=107;
if mY>595 then mY:=596;
if mX<154 then mX:=153;
if mX>846 then mX:=847;
nY:=-Round(mY*2300/703);
nX:=-Round(mX*3272/1000);
Image.Height:=2300;
Image.Width:=3272;
Image.Top:=nY+350;

2006

Aplicacin de visualizacin en PC

102

Posicionador Satelital
Comunicado Por
Telefona Celular

Image.Left:=nX+500;
EscY:=EsY/3.272;
Lat0:=Lt0-EscY*Image.Top;
EscX:=EsX/3.272;
Lon0:=Ln0+EscX*Image.Left;
refrescar:=False;
end
else
begin
zoom:=False;
Image.Height:=703;
Image.Width:=1000;
Image.Left:=0;
Image.Top:=0;
EscY:=EsY;
Lat0:=Lt0;
EscX:=EsX;
Lon0:=Ln0;
IBruj.Visible:=True;
refrescar:=False;
end;
Redibuja;
end;

Cada vez que deba producirse un cambio en la visualizacin ya sea por cambio de escala, por
cambio de mvil a observar, por cambio de fecha de referencia, por la llegada de nuevos datos, o
por algn otro motivo, se llama al procedimiento Redibuja, que se encarga de fijar en las
variables las nuevas condiciones para luego llamar al evento TimerShow, explicado antes,
obtenindose as el plano actualizado.
procedure TFMapa.Redibuja;
begin
if refrescar then PaintBox.Refresh;
repeat
if s>0 then
begin
s:=s-1;
Punto[s].Free;
end;
until s=0;
SetLength(Punto,s);
if FPrin.St.Visible then Exit;
if RadioU.ItemIndex=-1 then
begin
ult:=10;
if PedFecha then
begin
ModalResult:=mrCancel;
repeat until FFecha.ShowModal=mrOK;
PedFecha:=False;
end;
Label1.Caption:=' Desde: '+DateTimeToStr(FFecha.TPi.DateTime);
Label2.Caption:=' Hasta: '+DateTimeToStr(FFecha.TPf.DateTime);
Label1.Visible:=True;
Label2.Visible:=True;
end
else

2006

Aplicacin de visualizacin en PC

103

Posicionador Satelital
Comunicado Por
Telefona Celular

begin
Label1.Visible:=False;
Label2.Visible:=False;
case RadioU.ItemIndex of
0: ult:=10;
1: ult:=25;
2: ult:=50;
3: ult:=100;
4: ult:=200;
end;
end;
TimerShow.Enabled:=True;
end;

Para la seleccin de la fecha y hora de visualizacin del historial de posiciones, se cre un tercer
formulario (FFecha) que contiene tres recolectores de calendario encargados de seleccionar el da
y los lmites horarios en que se desean obtener los datos.

Figura 9: Formulario FFecha.

El primer recolector despliega un calendario para mayor facilidad en la seleccin de la fecha, tal
como se observa en la figura 10. Los otros dos pueden cambiar los valores de hora, minutos y
segundos en modo incremental o decreciente, segn como se opere sobre los botones up/down. A
su vez, los tres controles permiten el ingreso manual de nmeros.

Figura 10: Calendario desplegable en el recolector de fecha.

2006

Aplicacin de visualizacin en PC

104

Posicionador Satelital
Comunicado Por
Telefona Celular

Finalmente, al presionar el botn Trazado se activa el procedimiento BTrazaClick que, como su


nombre lo indica, dibuja una lnea entre cada unas de las posiciones recorridas por el mvil,
formando as el trazado del vehculo tal como se muestra en el ejemplo de la figura 11.
procedure TFMapa.BTrazaClick(Sender: TObject);
var
i: Integer;
begin
if s>1 then
begin
i:=s-1;
PaintBox.Canvas.MoveTo(Punto[i].Left+5,Punto[i].Top+5);
repeat
i:=i-1;
PaintBox.Canvas.LineTo(Punto[i].Left+5,Punto[i].Top+5);
until i=0;
refrescar:=True;
end;
end;

Figura 11: Traza de 10 posiciones recorridas por el mvil 1.

2006

Aplicacin de visualizacin en PC

105

Posicionador Satelital
Comunicado Por
Telefona Celular

8.4. Referencias
8.4.1. Referencias bibliogrficas
Ian Marteens, La Cara Oculta de Delphi 4, www.marteens.com, 1998.
Francisco Charte Ojeda, Programacin con C++ Builder, Anaya Multimedia, 1997.
Zarko Gajic, Why Delphi, http://delphi.about.com, 1999.
Neil Moffatt, Delphi Basics, www.delphibasics.co.uk/index.html, 2002 2006.
Marco Cant, Pascal Esencial (Para Delphi),
www.marcocantu.com/EPascal/Spanish/default.htm, 1995 2000.
Ernesto De Spirito, Una comparacin entre Delphi y Visual Basic,
www.latiumsoftware.com/es/articles/00010.php, 2001.
David Osornio Fernndez, Apuntes Delphi,
http://www.elguille.org/delphi/apuntesDelphi/apuntesDelphi.htm, 2002.

8.4.2. Software
Delphi 4, Borland Software Corporation, 1998.
Google Earth 4, Google Inc., http://earth.google.com, 2006.
Google Maps, Google Inc., http://maps.google.com, 2006.
Plano de las localidades de Villa Mara y Villa Nueva
gentileza de Musicalsimo Producciones S.R.L.,
www.musicalisimo.net.

2006

Aplicacin de visualizacin en PC

106

9
Anlisis de costo
9.1. Introduccin
La implementacin comercial del presente proyecto en funcin de los objetivos planteados, nos
lleva a la hipottica suposicin de tener que aplicarlo en la logstica de una pequea o mediana
empresa local. Para hacer una ligera evaluacin del costo prctico del proyecto, vamos a suponer
en este captulo que va a ser puesto en marcha en una empresa que posee cinco vehculos que
desarrollan su recorrido sobre nuestra rea urbana.

9.2. Costos de la telefona celular


Se describi anteriormente que para el presente trabajo se utilizaron telfonos NOKIA de la lnea
3xxx. En estos momentos (octubre de 2006), el aparato que presenta el costo ms accesible de
dicha lnea es el NOKIA 3220b, cuyo precio es de 179 pesos con IVA incluido. En el caso de
implementacin planteado necesitamos seis celulares, cinco emisores de datos en cada vehculo y
uno receptor de los mensajes de texto, por lo que tenemos un costo de 887,60 pesos ms
impuestos en aparatos celulares.

Figura 1: NOKIA 3220b.

Una vez puesto en marcha el proyecto, hay que acordar con el responsable de la empresa
contratante, un plan corporativo para las cinco lneas de los telfonos mviles, en funcin de la
cantidad de mensajes de texto necesarios para la operatividad propia de la empresa. Los valores
de los planes corporativos oscilan entre los 50 y 150 pesos mensuales ms impuestos por cada
lnea, segn sea el operador telefnico y la cantidad de SMS incluidos.
En este punto cabe aclarar que la mayora de las empresas ya poseen un sistema previo de
comunicaciones, por lo que una implementacin profesional debera adaptar el proyecto a los
aparatos preexistentes que podran ser equipos de radio, de transmisin digital de datos o de
telefona celular iguales o diferentes a los aqu descritos.
2006

Posicionador Satelital Comunicado Por Telefona Celular

107

Posicionador Satelital
Comunicado Por
Telefona Celular

9.3. Costo de la unidad mvil


La unidad mvil puede implementarse en base a un microcontrolador PIC 16F873 y sin display
LCD, tal como se explico en la pgina 74, ya que la pantalla es superflua a los fines prcticos.
Con esto no solo se logra abaratar su costo, sino que tambin se reduce el trabajo de
implementacin, debido a que el tamao del cdigo del microcontrolador es notablemente menor
y el diseo de la placa impresa es mucho ms simple. El precio de los distintos componentes que
quedan formando la unidad mvil est detallado en la siguiente tabla:
Cant.

1
1
1
2
2
9
1
1
2
1
2
1
1
1
1
1
1
1
1
20
1
1
1
1

Componente
PIC 16F873
Mdulo GPS FV-12 + Antena SM-66
Cristal 3,6864 MHz
Capacitores cermicos 50 v.
Capacitores electrolticos 50 v.
Resistencias vatio
Diodo 1N4001
Diodo 1N4148
Diodos Zener 2,7 v.
Diodo LED Bicolor 5 mm
Diodos LED 5 mm
LM7805 con disipador de calor
Transistor BC548
Rel DC5V
Pulsador mini 4c
Placa p/circuito impreso
Zcalo 40 pines
metro cable alimentacin 2 cond.
metro cable UTP fino 6 cond.
cm. cable plano multicolor 10 cond.
Plug alimentacin
Conector pop-port
Gabinete + tornillos varios
Cooler 5 cm.
Total:

$
23,25
258,32
1,22
0,15
0,20
0,40
0,10
0,05
0,70
0,75
0,50
2,50
0,15
5,40
2,00
2,54
0,75
0,50
1,50
1,40
1,00
4,00
26,72
14,00
348,10

Teniendo en cuenta que todos los valores consignados incluyen el correspondiente IVA del 21 por
ciento, el costo de cinco unidades mviles ser entonces de $ 1438,43 ms impuestos.

9.4. Costo de la unidad fija


Si llamamos unidad fija al sistema receptor de mensajes de texto y a la etapa de visualizacin, y
recordamos que ya incluimos el precio del telfono celular fijo en el punto 9.2., nos queda
calcular los costos de la aplicacin desarrollada para la PC y del cable de datos que comunica el
celular con el ordenador. Para este ltimo elemento tenemos los componentes consignados en la
siguiente tabla:
2006

Anlisis de costo

108

Posicionador Satelital
Comunicado Por
Telefona Celular

Cant.

1
6
1
2
2
1
1
1
1
1
1

Componente
MAX 232
Capacitores cermicos 50 v.
Resistencia vatio
Diodo 1N4148
Diodos Zener 2,7 v.
LM78L05
Placa p/circuito impreso
metro cable UTP fino 6 cond.
Conector DB-9
Conector pop-port
Gabinete + tornillos varios
Total:

$
1,90
0,45
0,04
0,10
0,70
0,62
1,80
1,50
2,10
4,00
6,20
19,41

Descargando el IVA, nos queda un valor de $ 16,04 para el nico cable de datos del trabajo.
En cuanto al software que permite la visualizacin de las posiciones, establecemos su costo en
350 pesos ms impuestos, lo que incluye la instalacin, adaptacin y soporte inicial en una
computadora de la empresa contratante.

9.5. Clculo del costo total


En adicin a lo detallado anteriormente, hay que consignar los costos indirectos de fabricacin
que incluyen los gastos en electricidad, insumos varios (soldadura, pegamento), movilidad, etc.;
estimados en $ 150.
Tomando finalmente el valor de 900 pesos como costo de la mano de obra del trabajo completo
para la situacin planteada, tenemos que el costo total del proyecto ser:
6 telfonos celulares
5 unidades mviles
Cable de datos
Programa de visualizacin
Costos indirectos
Mano de obra
Total $

887,60
1438,43
16,04
350,00
150,00
900,00
3742,07

En conclusin la aplicacin del presente proyecto sobre cinco vehculos de una pyme originara
un costo total de implementacin de 3742,07 pesos ms impuestos, sin contar los costos
operativos como por ejemplo el de las lneas telefnicas celulares.

9.6. Referencias
Cika Electrnica S.R.L., ventas@cika.com, Capital Federal.
Electrnica Modular S.R.L., ventas@emodular.com.ar, Crdoba.
Roberto Mediavilla Electrnica, Villa Mara.
2006

Anlisis de costo

109

10
Conclusiones
10.1. Desempeo del equipo
La puesta en funcionamiento del proyecto permiti la observacin del comportamiento del equipo
en funcin de aspectos ambientales y de la visibilidad que posea la antena del mdulo GPS a
las seales satelitales. Como se describi oportunamente, al encenderse, el receptor GPS
comienza a funcionar a pleno cuando logra detectar la mayor cantidad posible de seales, lo que
depende del tiempo que haya estado apagado y, como veremos, de las condiciones climticas del
lugar en que se encuentra. Si el equipo permaneci apagado solo unas pocas horas, es muy
probable que se enganche con varias seales rpidamente, ya que el mdulo almacena los datos
de efemrides de los satlites en su memoria no voltil y puede as predecir la posicin de los
mismos, an en condiciones climticas adversas. En el caso contrario, cuando ha pasado un
tiempo lo suficientemente grande como para que los datos de efemrides sean obsoletos, el
equipo comienza a brindar datos de posicin solo cuando puede localizar las seales de al menos
tres satlites. Generalmente los primeros datos entregados por el mdulo son nulos o poco
precisos, lo que es indicado en el correspondiente campo de las instrucciones NMEA (active/void)
y trasladado a la etapa de visualizacin de la unidad mvil (LCD/led), tal como se explic en
captulos anteriores. El tiempo que demora el mdulo en brindar datos vlidos depende tambin
de las condiciones climticas o, ms especficamente, atmosfricas a las que est sometida la
antena y, por supuesto, los obstculos que pudiesen limitar su visibilidad.
Para refrendar lo anterior se transcriben ahora algunas observaciones realizadas bajo distintas
condiciones atmosfricas, durante este ao 2006:

En la tarde del 12 de mayo, con cielo parcialmente nublado, el equipo comenz a dar
datos pasados 2 minutos del encendido y con el vehculo detenido. Puesto a andar el
vehculo, se obtienen datos a partir de 4 satlites, pero con la indicacin de ser poco
precisos, cuestin que se vio corroborada en el plano ya que esos primeros datos tenan un
error de aproximadamente 100/150 metros. Luego de otros 4 minutos, el mdulo comenz
a otorgar datos vlidos con el error nominal de 25 metros, valindose de las seales de 5
satlites. A partir de aqu fue detectando cada vez ms seales hasta llegar a 8 luego de 35
minutos y siguiendo con el error normal.

En la maana del 15 de mayo, con cielo despejado, el mdulo comenz a dar datos
despus de dos minutos de espera con el vehculo detenido. A partir de aqu otorg
siempre datos vlidos, con precisin normal, y con datos de 4 o 5 satlites. Pasada una
hora, logr captar hasta 6 seales satelitales.

2006

Posicionador Satelital Comunicado Por Telefona Celular

110

Posicionador Satelital
Comunicado Por
Telefona Celular

En el medioda del 17 de mayo, con cielo nublado, se encendi el equipo con el vehculo
en movimiento y rpidamente comenz a brindar datos pero poco precisos (error 200
metros), durante siete minutos. En este momento el vehculo permaneci detenido durante
unos 6 minutos, luego de lo cual el mdulo empez a dar datos vlidos a partir de 4 o 5
satlites con precisin normal. Cuando el cielo comenz a despejarse lentamente, la
unidad pudo recibir hasta 6 seales satelitales.

En la maana del 22 de mayo, con cielo totalmente despejado, el equipo comenz a dar
datos rpidamente y con el vehculo en movimiento, aunque durante los primeros 2
minutos estos datos eran poco precisos. Ya en el tercer minuto se obtuvieron datos vlidos
de 4 satlites con error nominal.

En la despejada tarde del 24 de mayo, la unidad fue encendida con el vehculo en


movimiento y comenz a dar datos vlidos a los pocos segundos con precisin normal y
detectando rpidamente 6 satlites.

En el medioda del 2 de junio, con cielo encapotado y con lluvia, el equipo solo comenz
a dar datos luego de 10 minutos de haber sido encendido, y se mantuvo brindando datos
muy poco precisos (con errores de 100, 200 y hasta 300 metros) durante otros 40 minutos.
Transcurrido este tiempo, el mdulo empez a dar datos vlidos, con precisin normal y
de 4 satlites. Pasada ms de una hora y media, y a pesar de que segua lloviendo y con el
cielo muy cubierto, la unidad comenz a tomar seales de 5 y 6 satlites alternadamente.

En la maana del 5 de agosto, con cielo nublado, la unidad mvil recin comenz a
brindar datos despus de 15 minutos de haber sido encendida, con el vehculo en
movimiento, siendo estos datos poco precisos durante 35 minutos, con errores de hasta
250 metros en la posicin. Transcurrido este tiempo el equipo comienza a dar valores
correctos (con error nominal), valindose de las seales de 4 y 5 satlites.

En el medioda del 25 de agosto, con cielo parcialmente nublado, el equipo comenz a dar
datos vlidos a los pocos segundos de haber sido encendido, con informacin de tres
satlites. Pero luego de funcionar correctamente durante unos 10 minutos, el equipo
comenz a perder seal satelital en el mismo momento en que el vehculo transitaba por el
sector ms densamente urbanizado de la ciudad; volviendo a dar datos vlidos 5 minutos
despus, ya con el vehculo fuera del microcentro villamariense.

En la maana del 18 de octubre, tambin con cielo parcialmente nublado, el proyecto


comenz a dar datos despus de un minuto de haber sido encendido, y se mantuvo durante
11 minutos brindando informacin de poca precisin, con un error de 50 a 100 metros.
Despus de estos momentos iniciales el equipo sigui trabajando normalmente, con 5
satlites a la vista.

En distintos momentos de los das 26 de mayo; 5, 6, 7 y 8 de junio; 6, 12, 20 y 28 de


septiembre; 3, 4 y 18 de octubre, en todos los casos bajo cielo despejado o levemente
nublado, se registraron datos vlidos con el error nominal (menor a 25 metros) desde
pocos segundos despus de haber sido encendido el equipo. Normalmente, despus de
haber pasado una hora de funcionamiento, el mdulo oper en base a 5 o 6 seales
satelitales, llegando a tomar algunas veces hasta 7 u 8 seales.

2006

Conclusiones

111

Posicionador Satelital
Comunicado Por
Telefona Celular

Cuando la unidad mvil ha permanecido apagada varias horas, de manera tal que los datos de
efemrides almacenados son insuficientes para detectar la posicin de los satlites en el momento
de ser encendida, se desprenden, de las observaciones anteriores, las siguientes reglas empricas
de funcionamiento:

El intervalo de tiempo transcurrido entre el encendido del equipo y los primeros datos de
posicin depende de la visibilidad de la antena, variando entre algunas decenas de
segundos con una atmsfera clara hasta unos 15 minutos ante un cielo muy cubierto.

Generalmente el equipo arranca ms rpidamente si el vehculo est en movimiento.

Es comn que en los primeros minutos el mdulo entregue datos poco precisos,
especialmente si las condiciones climticas no son favorables. El lapso en que ocurre esto
puede llegar a los tres cuartos de hora, aunque si el cielo est despejado el equipo brindar
datos vlidos inmediatamente.

Si el mdulo est dando informacin poco precisa, se obtendrn ms fcilmente datos


vlidos si el vehculo permanece detenido durante algunos minutos.

Si el vehculo ingresa a una zona densamente urbanizada, es factible que la unidad pierda
momentneamente el vnculo con algunas o todas las seales satelitales.

La cantidad de satlites detectados crece con el correr de los minutos. Despus de la


primer hora u hora y media generalmente el mdulo trabaja en base a 5 o 6 seales
satelitales, pudiendo llegar en algunos casos a operar con hasta 8 satlites.I

Si el equipo ha permanecido encendido durante varias horas, entregar datos vlidos an


bajo las condiciones de visibilidad ms adversas.

En cuanto a la precisin de las posiciones representadas en el plano y en funcin de los datos


recogidos, se pueden hacer las siguientes observaciones:

Cuando la unidad mvil entrega datos vlidos, la precisin en el plano se corresponde a la


nominal entregada por la informacin tcnica del fabricante del mdulo GPS, esto es 25
metros, aunque muchas veces se puede observar que la precisin es mucho mayor, en el
orden de los 5/8 metros.

Cuando el mdulo GPS indica que los datos que est brindando son poco precisos, se
puede comprobar efectivamente que el error en la indicacin puede variar en 100, 200
o hasta 250 metros de la posicin real.

Hay un caso particular de imprecisin que se presenta en las indicaciones de la parte


inferior del plano correspondientes al sector sur de Villa Nueva. Cuando el vehculo
transita por este sector las indicaciones se ubican unos 30 metros al norte de la trayectoria
real. Como este error es constante y se produce solo en esa parte del plano, deducimos que
se trata de un error en la confeccin del plano.

Finalmente consignamos que los datos de tiempo y velocidad que brinda el mdulo GPS se
corresponden con la realidad, aunque no hemos utilizado ningn instrumento de alta precisin que
corrobore esto con ms propiedad.
I

Recordamos que el mdulo necesita al menos cuatro seales satelitales para determinar la posicin del mvil en tres
dimensiones, aunque con tres seales puede determinar la posicin en 2D, no brindando datos de altitud que en el
presente proyecto no son utilizados, por lo que la operatividad de la unidad mvil depender de que el conjunto
antena/mdulo GPS pueda detectar al menos tres satlites.

2006

Conclusiones

112

Posicionador Satelital
Comunicado Por
Telefona Celular

10.2. Tareas pendientes


Entre las cuestiones que pueden implementarse para optimizar el proyecto y que no se han
llevado a cabo por falta de tiempo o porque escapaban a los fines bsicos del trabajo, podemos
indicar las siguientes:

Almacenamiento de los datos de posicin en una memoria no voltil dentro de la unidad


mvil. La finalidad de este punto es la de que el sistema retenga el historial de trayectoria
del vehculo y pueda retransmitirlo por pedido de la aplicacin ante un posible quiebre en
la comunicacin entre la unidad mvil y la PC.

Alimentacin del circuito de la unidad mvil con la propia batera del telfono celular.
Hay en el mercado circuitos integrados conversores DC-DC (tal como el MAX631) que
permitiran que el circuito basado en el microcontrolador pueda ser alimentado por la
batera del celular, con lo que solamente estara conectado a la alimentacin del vehculo
el cargador del telfono, pudiendo gozar el resto del circuito de unas horas de autonoma
ante la falta de energa elctrica en el vehculo. De esta manera el proyecto, adems de los
fines logsticos, podra tambin ser utilizado como complemento a los sistemas de
seguridad del vehculo.

Cargador de batera inteligente. Su misin sera la de mantener a la batera del celular en


carga solamente el tiempo necesario, valindose de las instrucciones F-BUS y el PIC. De
igual modo podra realizarse lo mismo en la unidad fija, controlando al cargador con la
aplicacin para PC.
.

Figura 1: Cargador de batera NOKIA.

Compatibilidad de protocolos. As como el proyecto soporta al protocolo F-BUS de los


telfonos NOKIA de la serie 3xxx, sera conveniente ampliar la compatibilidad a otras
series, que utilizan el mismo protocolo pero con instrucciones de formato diferente, y a
telfonos de otros fabricantes que soportan el protocolo AT.

Interferencia. Una implementacin ms acabada del trabajo exige un estudio ms


profundo de las interferencias que pueden aparecer entre las seales involucradas en cada
una de las partes del proyecto. Principalmente hay que prestar mayor atencin al diseo de
la unidad mvil por los conflictos que pueden aparecer entre el telfono y el mdulo GPS.

Conversin de los valores de latitud y longitud en ubicaciones reales. La aplicacin


encargada de mostrar los puntos en el plano podra transformar las coordenadas de latitud
y longitud en direcciones aproximadas reales, valindose de una base de datos creada a tal

2006

Conclusiones

113

Posicionador Satelital
Comunicado Por
Telefona Celular

fin. Por ejemplo si el vehculo se encuentra en cualquier punto dentro del rectngulo
imaginario formado por las latitudes 3224,8128 y 3224,8701 Sur, y las longitudes
6314,4149 y 6314,4804 Oeste; puede decirse que se encuentra en, o muy cercano a la
esquina de Entre Ros y San Martn de Villa Mara, tal como se puede ver en la siguiente
imagen:

6314,4804 o
6314,4149 o
3224,8128 s
3224,8701 s

Figura 2: Rectngulo imaginario en la esquina de Entre Ros y San Martn.

Adicionalmente, en caso de ser necesario, tambin podra retransmitirse esta informacin


a la unidad mvil.

Confeccin vectorial del plano. El plano de mapa de bits utilizado en este trabajo tiene la
dificultad de ser muy pesado para la memoria de la computadora y de perder precisin
cuando cambia su tamao. Esto puede solucionarse con la elaboracin de un plano
vectorial equivalente. Este tipo de planos tienen la ventaja de ocupar poco espacio en el
disco duro y la memoria del sistema siendo su procesamiento muy rpido aunque poseen
menos resolucin que los planos convencionales. Adems un plano vectorial facilitara
mucho el trabajo de conversin de las posiciones en direcciones reales explicado en el
prrafo anterior.

Plano con zoom variable. Como se describi oportunamente, la aplicacin para PC permite
solo dos tamaos de visualizacin del plano. Una ventaja adicional de la elaboracin de un
plano vectorial seria la de poder obtener varias escalas de visualizacin cuya precisin
sera siempre la misma, ya que en estos planos la resolucin no depende del zoom aplicado
sino de la calidad en que est confeccionado.

Plano regional. Para ampliar el alcance del proyecto, se puede implementar un segundo
plano a una escala mayor y con un radio de 100 o 150 kilmetros que permitira ubicar al
vehculo cuando salga del rea urbana local. De este modo el trabajo puede ser utilizado
por empresas que desarrollan su actividad en una zona mayor a la local.

Optimizacin del software. La aplicacin desarrollada en DELPHI, debe ser pulida un poco
ms para mejorar sus prestaciones y su aspecto visual que permita un uso sencillo para
cualquier usuario. Falta tambin la implementacin del instalador que permita transportar
fcilmente el software hacia cualquier ordenador. Paralelamente sera interesante
desarrollar la aplicacin bajo el sistema operativo LINUX que viene creciendo lenta pero
constantemente dentro del mercado local debido a que es un cdigo abierto y libre.

2006

Conclusiones

114

Posicionador Satelital
Comunicado Por
Telefona Celular

10.3. Conclusiones finales


Los objetivos bsicos del proyecto fueron cumplidos sin mayores dificultades. El nico
contratiempo digno de ser destacado ocurri al momento del montaje de la unidad mvil. En el
diseo original todo el conjunto de las distintas partes de la unidad fue colocado en un gabinete,
pero la cercana de la antena del telfono celular con la seccin de RF del mdulo GPS haca que
cuando se transmita un mensaje de texto, el mdulo se reseteaba perdiendo completamente el
vnculo con las seales satelitales, por lo que se procedi a colocar al celular fuera del gabinete,
conectado a un cable que permita ubicarlo a una distancia no menor de 40 o 50 centmetros.
El trabajo nos permiti conocer el funcionamiento prctico del sistema GPS para lo cual nos
valimos de un mdulo receptor que puede ser encontrado muy fcilmente en el mercado local y a
un costo razonable. La muy precisa informacin brindada por dicho mdulo es transmitida a una
computadora situada en un punto fijo por medio de la red de telefona celular GSM, lo que nos
hizo estar informado de las caractersticas principales de dicho sistema de comunicacin. La
necesidad de vincular los diferentes estatutos de los aparatos que forman el proyecto hizo que
debiramos adentrarnos en los protocolos envueltos en cada sistema, an aquellos que finalmente
no fueron utilizados. La interconexin de los elementos de la unidad fija se realiz en base a un
circuito gobernado por un microcontrolador PIC, del cual tenemos una gran experiencia en su uso
por los varios trabajos realizados a lo largo de la carrera. Pudimos ver que, tambin para nuestro
proyecto, el componente desarrollado por MICROCHIP es muy verstil, cumple ampliamente con
las necesidades requeridas y adems, es apto para todas las tareas pendientes del trabajo. El
desarrollo de la aplicacin en DELPHI permiti que ampliramos nuestros conocimientos del
lenguaje Pascal, llevndolos al terreno de un entorno de programacin visual que adems opera
excelentemente bien en sistemas que trabajan con bases de datos.
Finalmente, el desarrollo del trabajo y la observacin de los datos obtenidos bajo distintas
condiciones nos hace aventurar de que el proyecto podra funcionar perfectamente si es
implementado profesionalmente, ya que la precisin de los datos ubicados sobre el plano es muy
buena para los fines de logstica que nos habamos trazado en el inicio del trabajo, siendo tambin
posible su uso como elemento de seguridad si se le realizan algunos perfeccionamientos que no
son difciles de llevar a cabo.

2006

Conclusiones

115

Posicionador Satelital
Comunicado Por
Telefona Celular

ricardoromitelli@datafull.com

2006

Conclusiones

116

También podría gustarte