Raspberry Pi, se caracteriza por tener como objetivos la educación, el aprendizaje y la investigación, es por ello nuestra asociación estudiantil BAJA SAE UNAM Puma Off Road Team, quienes formamos parte del programa de #AGPATROCINIOS a partir de nuestro proyecto el cual consiste en un equipo multidisciplinario enfocado al diseño, manufactura y validación de un vehículo monoplaza todoterreno para competir a nivel nacional e internacional en el evento Baja SAE, es por ello que nos vimos en la necesidad de obtener la posición y velocidad del carro en la pista.
Para ello, se desarrolló un GPS con la finalidad de obtener un registro de posición que nos permite obtener información tanto de la pista como del vehículo, y al mismo tiempo, ayuda al equipo a diseñar conforme a datos en la vida real.
Por lo que para la adaptación del GPS, se utilizó la microcomputadora Raspberry Pi 4, la cual brinda diversas aplicaciones debido a su tamaño y adaptabilidad.
El sistema de localización creado con la Raspberry Pi 4, es completamente independiente del vehículo, por lo que podemos usarlo como un sistema de posicionamiento multi-propósito, y en otros proyectos con necesidad de localización como trazado de rutas, registro de recorridos y ubicación sin conexión a internet.
Los sistemas GPS son extremadamente versátiles y pueden encontrarse en cualquier sector industrial, estos se basan en medir la distancia del individuo a múltiples satélites, este es solo uno de varios grupos de satélites que se utilizan para determinar una posición.
Hoy en día se utilizan para crear mapas de bosques, ayudar a agricultores a cultivar con mayor facilidad sus campos y los pilotos de aviones que navegan por tierra o aire.
A continuación les mostraremos paso a paso cómo realizar la obtención de datos de posición del sensor GPS NEO 6M, cómo guardarlos y hacer una gráfica en tiempo real.
Materiales
- Raspberry Pi 4
- GPS NEO 6M
- Pantalla con HDMI para Raspberry
- Módulo UPS HAT para Raspberry pi
- Carcasa impresión 3D (Cotiza tu servicio a lsuarez@agelectronica.mx)
Conexión
El sistema cuenta con cuatro componentes principales, los cuales se relacionan como muestra el siguiente diagrama:

Comenzando con la conexión entre el NEO 6M y la Raspberry Pi 4, estos dos componentes utilizan comunicación UART, por lo que se conectarán como se muestra a continuación:
Para conectar la pantalla, lo único que necesitamos es un cable HDMI a micro HDMI conectado como se ve en la siguiente imagen:
Por último se tiene la alimentación de nuestro sistema.
Alimentación
Tanto la Raspberry Pi 4 como la pantalla funcionan a 5V., de esta se encarga el UPS HAT para Raspberry Pi.
Programa
El programa se divide en dos partes, el primer programa busca recabar los datos de latitud y longitud de los datos proporcionados por el sensor GPS, este sensor usa comunicación serial y cuando se conecta con los satélites, proporciona como salida un datagrama con múltiples datos como: latitud, longitud, altitud, velocidad en nudos, velocidad en [km/hr], hora en UTP, número de satélites conectados, etc.
En este caso usaremos la línea del datagrama que inicia de la siguiente manera: $GPGGA
En la cuál se encuentran la hora (UTC), latitud, dirección de latitud (N y S), longitud, dirección de longitud (E y W), calidad, número de satélites, dilución de la precisión horizontal, altitud de la antena, unidades de la altitud, ondulación (la relación que existe entre el geoide y el elipsoide WGS84), unidades de la ondulación, corrección de datos (segundos), etc.
De esta línea del datagrama sólo nos interesa la latitud, longitud y su “signo”, es decir, si es norte o sur en la latitud y este u oeste en para la longitud.
En el primer programa se comprueba si la línea que recibimos empieza con “$GPGGA” y como siempre se tiene la misma cantidad de caracteres para los datos solo necesitamos el índice donde se localiza la información y la longitud de la cadena para después guardarlo en otra variable.
Segundo programa

En este caso se usará un archivo de texto como medio para almacenar los puntos en lo que se ha estado, por lo que para graficar todo el recorrido hecho hasta ese momento se accede al archivo y se graficó cada punto.
Se usó matplotlib animation para crear una gráfica que se actualice cada segundo.
En el programa la función “animate” es la que se encarga de abrir el archivo y transformar cada línea a coordenadas, además se le colocaron títulos a los ejes para facilitar su lectura y se activó la cuadrícula en la gráfica.
Cabe aclarar que el norte siempre estará apuntando hacia arriba de la pantalla y el este hacia la derecha.

Montaje
Para poder tener todo nuestro sistema junto, se ideó una carcasa para el mismo, se tomaron en cuenta aspectos como las conexiones, ubicación de las entradas, tamaño de los componentes y sujeción de los mismos. Se optó por fijar los componentes de forma mecánica por medio de tuercas y tornillos.
En la siguiente imagen se muestra el acomodo de los componentes en la carcasa:


Funcionamiento

Como se puede ver en la imagen, se tiene la gráfica de varios puntos tomados de una prueba del NEO 6 M, también se puede apreciar el archivo de texto donde se guarda toda la información.
El archivo de salida se puede cargar en formato .csv y crear un mapa.
La siguiente imagen se puede usar como un punto de comparación de nuestro pequeño sistema de localización en comparación con los mismos puntos graficados en Google maps.

Como podemos observar, el programa se puede ajustar a las necesidades del usuario, como trazar la ruta de un viaje, o puede tener aplicaciones en otras actividades como el caso del vehículo dentro de la agrupación.
Es importante por ello conocer y ver qué podemos crear con la tecnología actual y apoyarnos de ella.
Redactado por:
Yéshua Eliezer González Jiménez
Vázquez Espinosa Ximena Itzel
Integrantes de la agrupación estudiantil Baja SAE UNAM