Usando el módulo MiniGPS/BDS de M5Stack

En la actualidad hay un gran número de dispositivos que integran un GPS para obtener su ubicación: telefónos móviles, tablets, autos y hasta algunos relojes de pulsera ya incluyen un localizador basado en esta tecnología. Pero, ¿cómo hacemos si queremos crear nuestro propio equipo con capacidad de geolocalización? Existen muchas placas que podemos utilizar en combinación con controladores como Arduino, ESP o Raspberry. En este artículo te explico específicamente como usar el módulo GPS/BDS de M5Stack y como desarrollar una aplicación empleando un M5Stick programado en UIFlow.

¿Qué significa GPS?

La sigla GPS significa Global Positioning System o en español, Sistema de Posicionamiento Global. Es un conjunto de tecnologías que permiten determinar con gran precisión la posición y el movimiento de un objeto. El sistema GPS fué desarrollado por Estados Unidos (originalmente con el nombre NAVSTAR) a partir del año 1978 y fué pensado fundamentalmente para aplicaciones militares, aunque con el paso del tiempo se abrió su uso a aplicaciones civiles.

Fig.1. El sistema GPS

Es fácil imaginar que los rusos y chinos no estarían tranquilos dependiendo del GPS controlado por Estados Unidos, así que se dieron a la tarea de crear cada uno el suyo. Así nacieron Glonass (Globalnaya Navigazionnaya Sputnikovaya Sistema) y BeiDou (que significa “Osa Mayor” en Chino) también conocido como BDS. La Unión Europea también cuenta con su propio sistema de navegación Galileo, Japón con uno que es complementario del GPS llamado QZSS y la India su sistema regional NavIC.

Esto significa que, pese a la costumbre, en la actualidad “GPS” no es sinónimo de sistema de localización satelital y es mas correcto hablar de GNSS (Global Navigation Satellite System). De acuerdo a esto, GPS, Glonass, Beidou y todos los otros son diferentes sistemas GNSS.

¿Cómo funciona un GNSS?

Un sistema GNSS funciona gracias a una constelación, un conjunto de muchos satélites orbitando nuestro planeta a una distancia promedio de 20.000 km. La constelación de BeiDou contiene 35 satélites y la de Glonass 24, por ejemplo.

Cada satélite en la constelación transmite una señal hacia la Tierra. Los receptores GNSS reciben esta señal y a partir de la información de posición de cada satélite y del tiempo que demora en llegar la señal al receptor, y aplicando una técnica matemática llamada trilateración, estos son capaces de determinar su posición sobre la superficie de la Tierra en valores de Latitud y Longitud.

Si quieres una explicación mas completa, te recomiendo este excelente video del canal VirtualBrain:

El módulo Mini GPS/BDS

M5Stack pone a nuestra disposición más de un módulo GPS o GNSS. Existe una base GPS para el Atom, otras para los modelos Core y el Mini GPS/BDS que puede ser utilizado por cualquier otro dispositivo que tenga un conector Grove tipo UART.

Si no conoces aún los distintos tipos de conectores Grove de M5Stack puedes leer este otro artículo donde lo explico

Módulo Mini GPS/BDS
Fig. 2. El módulo Mini GPS/BDS

Este módulo incluye en su interior el chip SciStar AT6558 que es capaz de utilizar hasta seis sistemas de localización, lo que le permite lograr determinar su posición casi en cualquier condición con una precisión de hasta 2,5 metros. Adicionalmente, se encuentra el chip MAX2659 como amplificador de señal.

La antena se incluye en el interior, lo que significa que es mejor que el módulo trabaje en el exterior para lograr así una señal aceptable.

La comunicación con otros dispositivos se realiza usando el protocolo UART, a una velocidad de 9600 bps (valor por omisión).

Módulo Mini GPS/BDS
Fig. 3. Conexiones del puerto Grove

Tiempos de arranque

Si nunca antes usaste un módulo de este tipo no desesperes si notas demoras hasta que empieza a entregar datos válidos de posición. Esto es normal y depende del tiempo que ha pasado desde el último uso. En general se diferencian tres tipos de arranques distintos, conocidos como Cold Start (arranque en frío), Warm Start (arranque tibio) y Hot Start (arranque en caliente).

Cold start

Se produce cuando el módulo ha sido reseteado y se ha borrado toda la información que almacenaba sobre los satélites. Esto significa que el módulo debe recibir esta información y almacenarla nuevamente, lo que le puede llevar entre 30 segundos y un par de minutos.

Warm start

Ocurre cuando el módulo se prende y ha pasado algún tiempo (horas) desde la última vez que estuvo en funcionamiento, por lo que debe actualizar algunos parámetros de los satélites a la vista. Esto demora menos de 1 minuto.

Hot start

El arranque en caliente se produce al encender el módulo sin que haya pasado mas que una o dos horas desde que se lo apagó y su posición no ha variado durante ese tiempo, por lo que la información a actualizar es mínima. La demora en este caso es de unos pocos segundos.

Cuando el Mini GPS/BDS entrega datos válidos se enciende un led azul en uno de sus laterales.

Leyendo el módulo

Vamos a ver ahora como leer datos del módulo usando UIFLow1.

Si abrimos la página del editor de UIFlow, no encontraremos bloques específicos para el módulo GPS/BDS. Para poder usarlo vamos a tener que agregarlo haciendo click sobre el signo “+” en la parte izquierda de la pantalla, debajo de la sección de diseño de interfaz.

Fig. 4. Agregando el módulo en UIFlow

Luego de hacer click se abrirá una pantalla con todos los módulos disponibles. Podemos navegar en ella hasta encontrar el módulo GPS/BDS o buscarlo en el campo etiquetado “Search”.

Fig. 5.

Si pulsamos el botón OK se agregará este módulo a UIFlow con todos los bloques asociados:

Fig. 6. Bloques del GPS

Veamos el significado de cada uno de ellos:

Inicialización

Asocia el módulo con un puerto UART. En el caso del M5StickC Plus2 lo puedes dejar así, con el UART 1.

Lectura

Estos son varios bloques para leer los distintos datos que entrega el GPS.

Leen los datos de hora y fecha, respectivamente, desde el GPS.

Estos bloques leen los datos de latitud y longitud, respectivamente. Estos valores están dados en grados y minutos con sus decimales. Adicionalmente se especifica si la latitud es Norte (N) o Sur (S) y si la longitud es Este (E) u Oeste (W) (parece que hay un error en los textos dentro de los bloques). Los valores devueltos tienen el formato de una cadena de texto.

Lee el dato de altitud en metros, medido sobre el nivel del mar (msnm).

Estos bloques devuelven los datos de latitud y longitud pero como números que expresan valores en grados con decimales.

Estos bloques proveen información adicional como:

Cantidad de satélites en vista: Cantidad de satélites que el módulo puede “ver” para recibir señal. Se requiere un mínimo de 4.

Calidad de la posición: Código indicador de la calidad de la posición.

Velocidad: Expresada en nudos (knots) o kilómetros por hora (kph).

Curso: Dirección en la que se mueve el módulo (respecto a las posiciones anteriores)

Escritura

Establece la zona horaria local para ajustar correctamente el dato de fecha y hora.

Ejemplo

El siguiente es un programa de ejemplo que lee algunos de los datos que entrega el GPS y los muestra en la pantalla del M5Stick cada 3 segundos.

La zona horaria está definida en -3 porque es la que corresponde a mi país (Argentina) pero debes modificarla para que se vea correctamente en tu caso (si usas el bloque para leer la hora).

Te recomiendo que pruebes el programa en exteriores, para que la antena interna que no tiene mucha ganancia pueda tener vision directa de los satélites.

Fig. 7. Código e interface del ejemplo

Puedes encontrar este ejemplo y otros en mi repositorio de GitHub:

Fig. 8. El programa de ejemplo en funcionamiento

Aplicaciones

Las aplicaciones de un módulo GPS/GNSS como éste en combinación con el M5Stick son innumerables. Por ejemplo puedes construir un velocimetro y medidor de distancia recorrida para un vehículo como un auto o una bicicleta, grabar recorridos de trekking o montañismo para luego verlos en un mapa (para eso tal vez sería necesario agregar una tarjeta SD), seguir la posición y el movimiento de un vehículo o un paquete en tiempo real, con el auxilio de un módulo de comunicaciones celular, por ejemplo, y un sinnúmero de otros proyectos fascinantes.

Mas info

Página de producto de M5Stack

El módulo Mini GPS/BDS en Aliexpress

Conclusiones

En este artículo te expliqué como usar el módulo Mini GPS/BDS de M5Stack. Vimos el principio de funcionamiento y sus características principales. También te mostré como programarlo usando UIFlow, los bloques relacionados y el significado de cada uno. Finalmente, te compartí un programa de ejemplo para que veas como se utilizan esos bloques en la práctica y puedas incluirlos es tus propios programas.

Espero que este breve tutorial te haya servido para empezar a utilizar este módulo tan interesnte que te permitirá desarrollar una gran cantidad de aplicaciones con tu M5Stick o cualquier otro dispositivo M5Stack que tengas.

En próximos artículos te compartiré mas proyectos con este y otros módulos. Cualquier duda o sugerencia dejala mas abajo en la sección de comentarios. Nos vemos!

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Habilitar notificaciones OK No, gracias