Para este proyecto, excepto un teléfono celular con GPS para grabar sentencias NMEA GPS, no se requiere ningún hardware. Utilicé un teléfono Android y hay varias aplicaciones disponibles en Play Store que te permiten grabar frases NMEA en formato “.txt” o “.log”. Como no todos los usuarios tienen acceso a un teléfono Android, he adjuntado dos conjuntos de frases de GPS para permitirle completar este proyecto. Dado que no se pudo obtener ninguna señal de GPS en el interior, el primer conjunto de frases de GPS se registró caminando aproximadamente 100 metros al aire libre. El segundo conjunto de sentencias de GPS se registró en interiores para una condición sin señal de GPS. El único otro hardware necesario es una PC host. Para este proyecto, utilicé una computadora portátil HP Pavilion serie G6 con un procesador Intel de 2,1 GHz y 3 GB de RAM con el sistema operativo Windows 7 Home Basic de 64 bits. Se requiere el siguiente software para completar con éxito este proyecto:
1) GPS Sí
2) Labcenter Proteus v7.6 o superior (para este proyecto se utilizó v7.8 con SP2)
3) Divisor de puerto serie Eltima v5.0
Figura 1: Ventana del simulador de GPS
La Figura 1 muestra la ventana del Simulador GPS. Para comenzar a buscar la carpeta que contiene los archivos de registro de oraciones NMEA, haga clic en el botón Examinar. Seleccione el intervalo de 8 segundos. También se pueden seleccionar 4 segundos; sin embargo, cualquier rango menor que este causará errores en Proteus y la información de latitud y longitud no se mostrará para todas las oraciones. Además, seleccione RMC como tipo de oración, ya que solo estas oraciones se pasan a la simulación de Proteus y se utilizan para obtener información de latitud y longitud. Luego seleccione el puerto COM1 en el menú de selección de puerto. Se puede seleccionar cualquier puerto disponible, siempre que no sea el puerto COM2. El puerto COM2 se utiliza en el Proteus para transmitir datos al pin USART RX del controlador. Además, el puerto seleccionado en este menú debe ser el mismo que se usó para crear un enlace virtual (usando Eltima Serial Splitter) entre el puerto y el puerto COM2 en Proteus. El software GPS Simulator se puede descargar desde el siguiente enlace:
Fig. 2: Ventana divisoria de serie
La Figura 2 muestra la ventana Eltima Software Serial Splitter 5.0. Para crear el enlace virtual entre el puerto seleccionado en el Simulador GPS y el puerto COM2 utilizado en Proteus, seleccione la pestaña 'Paquetes complejos'. Para el lado de entrada, seleccione la opción 'Puerto virtual' y luego el puerto COM utilizado por el Simulador GPS para pasar oraciones a Proteus (COM1 en este caso). Luego haga clic en el botón 'Agregar puerto'. Repita el mismo procedimiento para el lado de salida, pero seleccione el puerto COM2. Una vez que se hayan agregado los puertos de entrada y salida, haga clic en el botón 'Agregar paquete'. Un paquete creado correctamente aparecerá en el lado izquierdo de la ventana del software, como se muestra en la figura. Se puede descargar una versión de prueba de 14 días de Serial Splitter desde el siguiente enlace:
La pestaña Diagrama de circuito muestra el circuito Proteus para la simulación. Un cristal de 15,9744 MHz está conectado a los pines 13 y 14 del microcontrolador PIC18F458. El interruptor SW1 es el interruptor de reinicio. El pin RXD del componente P2 COMPIM está conectado al pin RX (pin 26) del controlador. No se requiere un IC MAX232 ya que está integrado en el componente COMPIM. El puerto D del controlador está conectado a las líneas de datos paralelas D0:D7 de la pantalla LCD. Los pines VSS y VDD de la pantalla LCD están conectados a tierra y proporcionan un voltaje de 5 V respectivamente. Los pines RS, R/W y E de la pantalla LCD están conectados a los pines 38, 39 y 40 respectivamente en el puerto B.
Para desarrollar la lógica de control para el análisis de sentencias GPS, se configuró el módulo UART y se analizó la información de latitud y longitud mediante manipulación de cadenas. Para configurar el módulo UART, se configuró el pin RX para entrada y se habilitó la recepción en serie asignando un valor 0x90 al registro de recepción RCSTA. El registro generador de velocidad en baudios SPBRG recibió un valor de 0x19 para una velocidad en baudios de 9600 bps. El modo asíncrono se eligió borrando el bit SYNC en el estado de transmisión y el registro de control del TXSTA. El indicador de recepción se borró y los datos se copiaron del registro de recepción RCREG a una variable temporal cuando se estableció el indicador al recibir los datos. Luego se borró el bit de habilitación de recepción continua CREN en el registro de recepción RCSTA para permitir la recepción continua de datos.
Las sentencias $GPRMC se pasaron desde el simulador GPS al pin RX del controlador a través del componente COMPIM. Se grabaron previamente dos conjuntos de estas frases utilizando un teléfono móvil con GPS para dos condiciones: una ubicación GPS variable y sin señal GPS. Para una ubicación GPS variable, el primer conjunto de frases se registró a una distancia de 100 m. En ausencia de una señal de GPS, el segundo conjunto de frases de GPS se grabaron en el interior. Las oraciones $GPRMC y $GPGGA (condición de señal GPS encontrada) tenían la misma longitud (76 caracteres). Si no se encontró ninguna señal de GPS, las oraciones de menos de 76 caracteres no contenían información de latitud y longitud; en cambio, se encontraron una serie de comas en las frases grabadas. Estas características de las oraciones grabadas se utilizaron para identificar la oración $GPRMC y luego extraer información de latitud y longitud. La identificación de la sentencia $GPRMC y la ausencia de señal GPS se obtuvo mediante comparación de cadenas. Una vez encontrada la señal GPS y $GPRMC, se extrajeron la latitud y longitud determinando la posición inicial y el número de caracteres en los valores de latitud y longitud. La Figura 5 muestra la lógica de control para analizar la oración $GPRMC.
Figura 3: Lógica de control para el análisis de sentencias GPS
Para ejecutar la simulación se deben realizar los siguientes pasos en el orden indicado:
1) Inicie el Serial Splitter y cree el paquete complejo entre el puerto de entrada del Simulador GPS y el puerto COM2 del circuito Proteus.
2) Abra 'gps.DSN' en Proteus
3) Inicie GPS Simulator y seleccione el archivo de registro
4) Inicie la simulación en Proteus y luego comience a transmitir el archivo de registro en GPS Simulator
La pantalla LCD mostrará que se ha encontrado la señal GPS y mostrará información de latitud y longitud. Solo una parte de esta información se muestra en la Figura 6, ya que la pantalla LCD está apagada y se muestra la siguiente información de latitud y longitud. Para el segundo archivo de registro, la pantalla LCD mostrará que no se encuentra la señal GPS.
Fig. 6: Información de latitud que se muestra parcialmente
Código fuente del proyecto
###
#incluir
###
Diagramas de circuito
gps_proteus |