7.7 · GPS

14 April 2026

Por:
Anton
Sección:
Módulo 7 · Raspberry Pi y SBCs
Lectura:
6 min
Infografía: 7.7 · GPS

GPS: gpsd + Meshtastic posición, network manager para WiFi/BT tethering

Un cyberdeck de campo cobra otra dimensión cuando sabe dónde está. Añadir GPS te da posición para mapas offline, sello de localización en mensajes Meshtastic, registro de rutas y referencia horaria precisa. En este artículo conectamos un módulo GPS a la Pi, lo servimos con gpsd y lo integramos con la red del deck.

El módulo GPS

Lo más habitual es un módulo GPS por UART (el puerto serie de dos hilos, TX y RX, que viste en el artículo 7-1) que emite sentencias NMEA (el formato de texto estándar que usan los receptores GPS para reportar posición, hora y satélites, una línea por dato) a la velocidad serie configurada. Los chips u-blox (un fabricante suizo de referencia en receptores GNSS; modelos M8N, M9, M10) son el estándar de facto: reciben varias constelaciones a la vez (las distintas redes de satélites de navegación: GPS estadounidense, GLONASS ruso, Galileo europeo, BeiDou chino), lo que mejora el número de satélites a la vista y, por tanto, la fijación.

La conexión a la Pi es sencilla, cuatro hilos:

  • VCC a 3,3V (o 5V según el módulo).
  • GND a masa.
  • TX del módulo al RX de la Pi (GPIO 15, pin 10).
  • RX del módulo al TX de la Pi (GPIO 14, pin 8).

Muchos módulos exponen también una señal PPS (Pulse Per Second, pulso por segundo: un flanco eléctrico muy estable alineado con el inicio de cada segundo) para sincronización horaria de muy alta precisión, útil si quieres usar el deck como fuente de tiempo.

Habilitar el puerto serie

La UART de la Pi suele estar ocupada por la consola serie. Hay que liberarla y dejar activo el hardware. Con raspi-config:

sudo raspi-config
# Interface Options > Serial Port
# "Login shell over serial?"  -> No
# "Serial port hardware enabled?" -> Yes

Esto deja el puerto disponible como dispositivo serie sin que el sistema lo use para una consola de login. Reinicia. El módulo aparecerá normalmente como /dev/serial0 (un alias) o /dev/ttyAMA0.

Comprueba que llegan datos crudos del módulo. Desde la línea de comandos, cat vuelca el contenido del dispositivo serie a la pantalla, así ves directamente lo que emite el GPS:

cat /dev/serial0

Deberías ver líneas tipo $GPGGA,..., $GPRMC,.... Si salen, el módulo habla con la Pi. Si no, revisa cableado (TX/RX cruzados), velocidad y que el puerto esté liberado.

Instalar y configurar gpsd

gpsd es el demonio (un proceso que corre en segundo plano de forma permanente, sin interfaz, prestando un servicio) que se encarga de leer el puerto serie, interpretar las sentencias NMEA y ofrecer la posición a cualquier programa que la pida, por un socket de red local (un punto de conexión por el que los programas se comunican, como una toma a la que otros se enchufan). Así, en lugar de que cada aplicación parsee NMEA por su cuenta, todas consultan a gpsd.

sudo apt install gpsd gpsd-clients

Configura qué dispositivo debe leer editando /etc/default/gpsd:

DEVICES="/dev/serial0"
GPSD_OPTIONS="-n"
START_DAEMON="true"
USBAUTO="false"

La opción -n hace que gpsd empiece a sondear el GPS sin esperar a que un cliente se conecte, lo que acelera la primera fijación. Reinicia el servicio:

sudo systemctl restart gpsd
sudo systemctl enable gpsd

Comprobar la posición

Con gpsd corriendo, usa sus clientes desde la línea de comandos para ver el estado. El más cómodo es cgps, que muestra una pantalla de texto con coordenadas, altitud, satélites y precisión:

cgps -s

O gpsmon, otro cliente de gpsd, para ver el detalle de las sentencias y los satélites en seguimiento. La primera fijación en frío puede tardar desde decenas de segundos hasta varios minutos, sobre todo en interiores; saca la antena a cielo abierto. Una vez fijado, las siguientes son mucho más rápidas.

Para módulos u-blox, la herramienta ubxtool (de gpsd) permite afinar la configuración: activar constelaciones, cambiar la tasa de actualización o restaurar valores de fábrica. Los receptores u-blox son quisquillosos con configuraciones en conflicto, así que conviene partir de fábrica antes de tocar nada.

Integrar la posición con Meshtastic

Si tu deck lleva radio Meshtastic, puedes alimentar su campo de posición. Hay dos enfoques:

  • Que el propio nodo Meshtastic tenga su GPS conectado a la placa de la radio y reporte posición directamente. Es lo más sencillo si la radio ya trae módulo GPS.
  • Que la Pi lea el GPS (vía gpsd) y envíe la posición al nodo. Esto te permite usar un único GPS de buena calidad conectado a la Pi como fuente para todo el deck (mapas, logs y la malla).

Con la CLI de Meshtastic puedes fijar una posición fija o trabajar con la posición del dispositivo según la configuración. Lo importante a nivel de diseño es decidir dónde vive el GPS: en la radio o en la Pi. Tener un solo módulo de calidad en la Pi y compartir su lectura suele dar mejor precisión y evita duplicar antenas.

NetworkManager: WiFi y tethering por Bluetooth

Un deck de campo cambia de red constantemente: WiFi de casa, hotspot del móvil, o tethering por Bluetooth cuando no hay otra cosa. Raspberry Pi OS reciente usa NetworkManager (el servicio estándar de Linux que administra las conexiones de red, cableadas e inalámbricas), que gestiona todo esto de forma uniforme. Su CLI, nmcli (la herramienta de NetworkManager para la línea de comandos), es perfecta para un entorno sin escritorio:

# Listar redes WiFi disponibles
nmcli device wifi list

# Conectar a una red
nmcli device wifi connect "MiSSID" password "miclave"

# Ver el estado de las conexiones
nmcli connection show

Para tethering por Bluetooth (compartir los datos del móvil con la Pi sin WiFi), emparejas el teléfono por Bluetooth y levantas una red PAN (Personal Area Network, una red de corto alcance entre dispositivos cercanos; por Bluetooth permite que la Pi salga a internet a través del móvil); NetworkManager puede gestionar esa conexión como una más. Es la red de seguridad cuando estás lejos de cualquier WiFi y quieres salida a internet desde el deck.

Guardar varias conexiones definidas (casa, móvil, hotspot) hace que el deck se conecte solo a la que tenga disponible al encender, sin intervención.

Cierre

Con GPS servido por gpsd, posición disponible para mapas y para la malla Meshtastic, y NetworkManager gestionando WiFi y tethering, tu cyberdeck deja de ser un ordenador de mesa metido en una caja y se convierte en un equipo de campo consciente de dónde está y capaz de comunicarse en cualquier circunstancia. Es la pieza que cierra el módulo: el deck, ya completo, listo para salir al mundo.

Del blog al libro Este post forma parte del temario de Guía del constructor de cyberdecks. El libro completo incluye el capítulo de UX y dotfiles, el árbol de alimentación paso a paso y los scripts del repo complementario.

Ver el libro

En construcción

Estamos preparando algo. Vuelve pronto.

Newsletter gratis

Novedades y montajes.

Directo a tu correo.

Sin spam.

Sin anuncios.

Al suscribirte aceptas recibir correos del taller. Puedes darte de baja cuando quieras.

Síguenos