DIY: Einen Tracker erstellen

mit einem Raspberry Pi und einem USB-GPS-Empfänger


Raspberry Pi Python Linux GPS

Diese Anleitung erklärt, wie du deinen eigenen Trakkit.org Live-Tracker mit einem Raspberry Pi oder einem beliebigen Linux-System bauen kannst.

Kompatible Systeme sind unter anderem:

  • Raspberry Pi OS
  • Ubuntu
  • Debian

  • Für diese Anleitung verwenden wir einen BU-355N5 USB-GPS-Empfänger — günstig, weit verbreitet und vollständig kompatibel.

Inhaltsverzeichnis


Übersicht

Der Prozess ist einfach:

  1. Bereite deine Konfiguration auf Trakkit.org vor
  2. Installiere Raspberry Pi OS
  3. Installiere Joli_Compagnon
  4. Teste den Tracker
  5. Automatisiere den Start

⚓ – Konfiguriere dein Boat auf Trakkit.org

Bevor du irgendetwas auf dem Raspberry Pi installierst, deklariere deinen Tracker auf Trakkit.org.

  1. Erstelle dein Boat
  2. Erstelle ein Tag
    (gib ihm einen wiedererkennbaren Namen)
  3. Erstelle ein Passwort für dieses Tag
  4. Erstelle einen Track mit:
    • Startdatum: 01/01/2020
    • Enddatum: 01/01/2050
  5. Markiere diesen Track als LiveTrack

Du musst Folgendes verfügbar haben:

TAG
TAG PASSWORD

Diese Zugangsdaten werden vom Tracker verwendet.


🍓 – Raspberry Pi OS installieren

Installiere Raspberry Pi OS normal auf deiner SD-Karte.

Folge den offiziellen Anweisungen:

https://www.raspberrypi.com/software

Es ist keine spezielle Konfiguration erforderlich.

Du kannst die Desktop-Version wählen (einfacher zu konfigurieren) oder die Lite-Version, wenn du dich mit Linux auskennst.


⚙️ — Grundlegende Systemkonfiguration

Beim ersten Start:

  1. Erstelle einen Benutzer (in dieser Anleitung gehen wir vom Benutzernamen pi aus)
  2. Konfiguriere wie üblich:
    • Sprache
    • Tastatur
    • Netzwerk (WLAN, um auf das Internet zuzugreifen)

Es wird empfohlen, die Zeitzone auf UTC zu setzen.


📦 — Joli_Compagnon installieren

Lade die Software von der Trakkit-Website herunter:

Trakkit.org → About → Download

Lade die Datei herunter:

joli_compagnon.tgz

Entpacke sie in deinem Home-Verzeichnis:

tar -xzf joli_compagnon.tgz

Dadurch wird das Verzeichnis: joli_compagnon_last erstellt, das alle Skripte enthält.


🐍 — Die Python-Virtual-Environment erstellen

Wechsle in das Verzeichnis:

cd joli_compagnon_last

Erstelle die Python-Virtual-Environment:

python3 -m venv venv

Aktiviere sie:

source venv/bin/activate

Installiere die benötigten Module:

pip install -r requirements.txt

🛰️ — GPS-Verbindung und Test

Wir verwenden ein weit verbreitetes BU-353N5 USB GPS

Schließe das GPS an den Raspberry Pi an und überprüfe, ob es erkannt wird.

Liste die USB-Geräte auf:

lsusb

Beispielausgabe:

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

Das BU-353N5-GPS erscheint typischerweise als USB-zu-Seriell-Adapter (oft mit einem Prolific- oder ähnlichen Chipsatz).


Das serielle Gerät identifizieren

Das GPS erzeugt ein serielles Gerät, üblicherweise:

/dev/ttyUSB0

Zur Überprüfung führe aus:

dmesg | grep tty

Beispielausgabe:

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

Dies bestätigt, dass das GPS verfügbar ist unter:

/dev/ttyUSB0

Berechtigungen überprüfen

Prüfe, ob das Gerät existiert:

ls -l /dev/ttyUSB*

Beispiel:

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

Falls nötig, stelle sicher, dass dein Benutzer zur Gruppe dialout gehört:

sudo usermod -a -G dialout $USER

Melde dich dann ab und wieder an.


Empfang der GPS-Daten testen

NMEA-GPS-Geräte verwenden standardmäßig typischerweise 4800 Baud.

Zeige die eingehenden NMEA-Sätze an:

cat /dev/ttyUSB0

Wenn NMEA-Sätze kontinuierlich durchlaufen, funktioniert das GPS korrekt.

Wenn nichts erscheint, verwendet das GPS möglicherweise eine andere serielle Geschwindigkeit.
Du kannst die Baudrate des Geräts manuell ändern und erneut testen.

Gängige NMEA-Geschwindigkeiten sind:

4800
9600
38400

Um die Geschwindigkeit des seriellen Geräts zu ändern, verwende stty.

Beispiel für 4800 Baud:

stty -F /dev/ttyUSB0 4800

Dann erneut testen:

cat /dev/ttyUSB0

Wenn nichts erscheint, probiere eine andere Geschwindigkeit.

Beispiel für 9600 Baud:

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

Sobald die richtige Geschwindigkeit gefunden ist, solltest du NMEA-Sätze sehen wie:

$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

Sobald NMEA-Sätze sichtbar sind, notiere:

  • den Gerätepfad (üblicherweise /dev/ttyUSB0)
  • die Baudrate (z. B. 4800)

Diese Werte werden später in der Datei config.ini verwendet.


🔁 — Manueller Start des Trackers

Aktiviere die Python-Virtual-Environment:

source venv/bin/activate

Benenne die Konfigurationsdatei um:

mv config.ini.EXAMPLE config.ini

Bearbeite die Datei:

nano config.ini

Konfiguriere den GPS-Abschnitt:

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

Konfiguriere dann deine Trakkit-Zugangsdaten:

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

Starte den GPS-Reader:

./reader_usb.py

Du solltest NMEA-Frames angezeigt bekommen.

Starte den Sender in einem anderen Terminal:

./sender.py

Dieses Skript sendet die GPS-Positionen an Trakkit.org.

Warte ein paar Minuten.

Die Position deines Boat sollte jetzt auf Trakkit.org erscheinen.


🚀 – Automatischen Start mit systemd einrichten

An diesem Punkt hast du nun einen vollständig funktionsfähigen Tracker für Trakkit.org. Der letzte Schritt ist, ihn so zu konfigurieren, dass er beim Booten automatisch startet.

Für den Rest dieser Anleitung gehen wir vom Benutzernamen pi und dem folgenden Installationspfad aus:

/home/pi/joli_compagnon_last/

Skripte und Virtual-Environment befinden sich dort.


Service für den GPS-Reader

Erstelle:

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

Service für den Sender

Erstelle:

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

Services aktivieren

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

Starte sie:

sudo systemctl start trakkit_reader
sudo systemctl start trakkit_sender

Dein Trakkit.org Companion startet nun beim Booten automatisch und sendet die Position deines Boat kontinuierlich.