DIY: Crear un Tracker

con una Raspberry Pi y un receptor GPS USB


Raspberry Pi Python Linux GPS

Esta guía explica cómo construir tu propio Trakkit.org live tracker usando una Raspberry Pi o cualquier sistema Linux.

Los sistemas compatibles incluyen:

  • Raspberry Pi OS
  • Ubuntu
  • Debian

  • Para esta guía, usamos un receptor GPS USB BU-355N5 — Asequible, ampliamente utilizado y totalmente compatible.

Tabla de contenidos


Visión general

El proceso es sencillo:

  1. Prepara tu configuración en Trakkit.org
  2. Instala Raspberry Pi OS
  3. Instala Joli_Compagnon
  4. Prueba el tracker
  5. Automatiza el arranque

⚓ - Configura tu Boat en Trakkit.org

Antes de instalar nada en la Raspberry Pi, declara tu tracker en Trakkit.org.

  1. Crea tu Boat
  2. Crea un Tag
    (ponle un nombre reconocible)
  3. Crea una password para este Tag
  4. Crea un Track con:
    • Fecha de inicio: 01/01/2020
    • Fecha de fin: 01/01/2050
  5. Marca este track como LiveTrack

Debes tener disponibles:

TAG
TAG PASSWORD

Estas credenciales serán utilizadas por el tracker.


🍓 - Instalar Raspberry Pi OS

Instala Raspberry Pi OS normalmente en tu tarjeta SD.

Sigue las instrucciones oficiales:

https://www.raspberrypi.com/software

No se requiere ninguna configuración especial.

Puedes elegir la versión Desktop, más fácil de configurar, o la versión Lite si te sientes cómodo con Linux.


⚙️ — Configuración básica del sistema

En el primer arranque:

  1. Crea un usuario (en esta guía asumimos que el nombre de usuario es pi)
  2. Configura normalmente:
    • idioma
    • teclado
    • red (Wifi para acceder a Internet)

Se recomienda configurar la zona horaria en UTC.


📦 — Instalar Joli_Compagnon

Descarga el software desde el sitio web de Trakkit:

Trakkit.org → About → Download

Descarga el archivo:

joli_compagnon.tgz

Extráelo en tu directorio personal:

tar -xzf joli_compagnon.tgz

Esto crea el directorio: joli_compagnon_last que contiene todos los scripts.


🐍 — Crear el entorno virtual de Python

Entra en el directorio:

cd joli_compagnon_last

Crea el entorno virtual de Python:

python3 -m venv venv

Actívalo:

source venv/bin/activate

Instala los módulos requeridos:

pip install -r requirements.txt

🛰️ — Conexión y prueba del GPS

Usaremos un BU-353N5 USB GPS ampliamente disponible

Conecta el GPS a la Raspberry Pi y verifica que sea detectado.

Lista los dispositivos USB:

lsusb

Salida de ejemplo:

Bus 001 Device 004: ID 067b:2303 Prolific Technology, Inc. USB-Serial Controller
Bus 001 Device 003: ID 0424:9514 Microchip Technology Hub Controller
Bus 001 Device 002: ID 0424:ec00 Microchip Technology SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

El GPS BU-353N5 suele aparecer como un adaptador USB a serie (a menudo usando un chipset Prolific o similar).


Identificar el dispositivo serie

El GPS creará un dispositivo serie, normalmente:

/dev/ttyUSB0

Para verificarlo, ejecuta:

dmesg | grep tty

Salida de ejemplo:

[  123.456789] usb 1-1.2: pl2303 converter now attached to ttyUSB0

Esto confirma que el GPS está disponible en:

/dev/ttyUSB0

Verificar permisos

Comprueba que el dispositivo existe:

ls -l /dev/ttyUSB*

Ejemplo:

crw-rw---- 1 root dialout 188, 0 Apr 21 12:34 /dev/ttyUSB0

Si es necesario, asegúrate de que tu usuario pertenece al grupo dialout:

sudo usermod -a -G dialout $USER

Luego cierra sesión e inicia sesión de nuevo.


Probar la recepción de datos GPS

Los dispositivos GPS NMEA suelen usar 4800 baudios por defecto.

Muestra las sentencias NMEA entrantes:

cat /dev/ttyUSB0

Si las sentencias NMEA se desplazan continuamente, el GPS funciona correctamente.

Si no aparece nada, el GPS puede estar usando una velocidad serie diferente.
Puedes cambiar manualmente la velocidad en baudios del dispositivo y volver a probar.

Las velocidades NMEA comunes son:

4800
9600
38400

Para cambiar la velocidad del dispositivo serie, usa stty.

Ejemplo para 4800 baudios:

stty -F /dev/ttyUSB0 4800

Luego prueba de nuevo:

cat /dev/ttyUSB0

Si no aparece nada, prueba otra velocidad.

Ejemplo para 9600 baudios:

stty -F /dev/ttyUSB0 9600
cat /dev/ttyUSB0

Una vez encontrada la velocidad correcta, deberías ver sentencias NMEA como:

$GPRMC,184551.00,A,4250.5589,N,07059.3421,W,0.13,309.62,210424,,,A*6C
$GPGGA,184551.00,4250.5589,N,07059.3421,W,1,10,0.8,12.3,M,-33.9,M,,*5A

Una vez visibles las sentencias NMEA, anota:

  • la ruta del dispositivo (normalmente /dev/ttyUSB0)
  • la velocidad en baudios (por ejemplo 4800)

Estos valores se utilizarán más adelante en el archivo config.ini.


🔁 — Lanzamiento manual del tracker

Activa el entorno virtual de Python:

source venv/bin/activate

Renombra el archivo de configuración:

mv config.ini.EXAMPLE config.ini

Edita el archivo:

nano config.ini

Configura la sección del GPS:

###############################################
# 🛰️  Data source from USB GPS device
###############################################
[GPS]
GPS_PORT = /dev/ttyUSB0
GPS_BAUDS = 4800

Luego configura tus credenciales de Trakkit:

###############################################
# 🔑 Your Trakkit.org login credentials
###############################################
[USER]
TAG = YOUR_TAG_HERE
PWD = YOUR_TAG_PASSWORD_HERE

Inicia el lector GPS:

./reader_usb.py

Deberías ver frames NMEA mostrados.

Inicia el sender en otra terminal:

./sender.py

Este script envía las posiciones GPS a Trakkit.org.

Espera unos minutos.

La posición de tu Boat debería aparecer ahora en Trakkit.org.


🚀 - Automatizar el arranque con systemd

En este punto, ya tienes un tracker totalmente funcional para Trakkit.org. El paso final es configurarlo para que se inicie automáticamente al arrancar.

Para el resto de esta guía, asumimos el nombre de usuario pi y la siguiente ruta de instalación:

/home/pi/joli_compagnon_last/

Los scripts y el entorno virtual se encuentran allí.


Servicio para el lector GPS

Crea:

sudo nano /etc/systemd/system/trakkit_reader.service
[Unit]
Description=Trakkit.org Companion GPS Reader
After=network.target

[Service]
User=pi
WorkingDirectory=/home/pi/joli_compagnon_last
ExecStart=/home/pi/joli_compagnon_last/venv/bin/python reader_usb.py
Restart=always

[Install]
WantedBy=multi-user.target

Servicio para el sender

Crea:

sudo nano /etc/systemd/system/trakkit_sender.service
[Unit]
Description=Trakkit.org Companion Sender
After=trakkit_reader.service

[Service]
User=pi
WorkingDirectory=/home/pi/joli_compagnon_last
ExecStart=/home/pi/joli_compagnon_last/venv/bin/python sender.py
Restart=always

[Install]
WantedBy=multi-user.target

Habilitar los servicios

sudo systemctl daemon-reload
sudo systemctl enable trakkit_reader
sudo systemctl enable trakkit_sender

Inícialos:

sudo systemctl start trakkit_reader
sudo systemctl start trakkit_sender

Tu Trakkit.org Companion ahora se iniciará automáticamente al arrancar y enviará la posición de tu Boat de forma continua.