In diesem Recipie zeigen wir dir, wie du auf Basis eines Microcontrollers dein eigenes GPS zusammenbauen und programmieren kannst. Das GPS funktioniert als Datalogger und speichert die von dir zurückgelegte Strecke als GPX-Track. Der aufgezeichnete Pfad kann danach in jeder beliebigen GPS-Visualisierungssoftware auf einer Karte genutzt werden um deinen Weg an zu zeigen. Das DIY-GPS kann auch als Basis für weitere Sensoren genutzt werden – in diesem Beispiel verwenden wir zusätzliche Module für Luftdruck/Höhenmeter, Temperatur und Luftfeuchtigkeit.

Tiny GPS Tracker

Der GPS-Tracker zeichnet einen Weg auf, sobald er mit Strom versorgt wird und Satellitenkontakt aufgenommen hat. Mittels des Buttons auf der Seite des Gehäuses lassen sich die angezeigten Informationen auf dem Display umstellen. Der Track wird immer aufgezeichnet, egal welche Daten das Display anzeigt. Sobald du ihn also irgendwo im Outdoor-Bereich einschaltest, zeichnet er auf, bis die Batterie leer ist oder du ihn wieder abschaltest.

Die Plattform erlaub die Weiterentwicklung in verschiedenste Richtungen: mit zusätzlichen Sensoren lassen sich alle möglichen Dinge mit der Geolokalisation verbinden.

Menupunkte in dieser Konfiguration

Mit einem Knopfdruck kannst du beispielsweise zwischen selbstgewählten Menupunkten wechseln:

  • GPS Data
  • Länge/Breite
  • Luftfeuchtigkeit/Temperatur
  • Meter über Meer/Anzahl Satelliten
  • Zeit und Datum
  • etc.

.gpx File

Die gesammelten Daten werden in zwei Formaten auf die Micro SD Karte geschrieben: einmal als Alldata.txt und einmal als Trackxx.gpx. Das GPX-File lässt sich mit diversen Visualisierungstools, wie zum Beispiel GPX See, anzeigen: Du kannst diese Dateien in die ensprechende Applikation ziehen und deinen Weg, dein Höhenprofil und weitere Parameter anschauen. Das Alldata-File ist hierbei als Logfile gedacht. Während das GPX File die dafür relevanten Daten Formatiert aufzeichnet: Länge, Breite, Höhe, aufzeichnet, zeichnet das Alldata-File zusätzlich alle zusätzlich generierten Daten auf.

Vorbereitung

Bill of Material

  • Seeedstudio XIAO
  • OLED-Display 0.96 inch i2c
  • GPS-Modul NEO 6M
  • Luftdruck-, Luftfeuchtigkeits- und Temperatur-Sensor BME280
  • Mirco-SD-Card-Modul
  • Micro-SD-Card (max. 16GB)
  • Batteriehalterung für 16340 Li-Ion-Batterie
  • 16340 Li-Ion-Batterie
  • Taster
  • 10k Ohm Widerstand
  • Litzen 26AWG
  • 3D Druck Gehäuse
  • 2.5M Nylon schrauben und Muttern (je 6 Stück)
  • 6 Tropfen Sekundenkleber
  • 1 Stück dehnungsfreie Schnur

File Download: Code und 3D Druck Files

Das .ino-File (Arduino Code), wie auch das .stl-File (3D Druck Gehäuse) kannst du hier finden:

Für unseren Workshop haben wir die Gehäuse mit unserem Formlabs-Drucker aus Nylon gedruckt, das STL-File lässt sich aber problemlos in allen anderen 3D-Printern verarbeiten.

Hardware

Wieso der XIAO Microcontroller?

Das Herzstück des GPS ist ein Seeedstudio XIAO. Dieses Projekt wurde mit dem XIAO entwickelt, weil der Sketch mit allen nötigen Libraries ziemlich schwer geworden ist. Wir brauchen deshalb dieses Board mit seinem grosszügigen Flashspeicher von 256KB.

Achtung 3.3V Logik

Bitte beachte unbedingt, dass das XIAO mit einer 3.3V Logik läuft! 5V können das Board beschädigen und den Magic Smoke provozieren!

Software

Arduino-IDE installieren

Lade die Arduino-IDE herunter und installiere sie entsprechend deinem Betriebssystem:

Falls du einen Guide für die Installation der Arduino-IDE brauchst, findest du ihn hier:

Seeedstudio XIAO im Boardsmanager der Arduino-IDE installieren

Bevor wir die Arduino IDE mit dem XIAO verwenden können, müssen wir einen weiteren Boardmanager installieren. Wir müssen folgende zwei Schritte unternehmen: die Installation des neuen Boardmanagers und die Installation des XIAO-Boards selbst.

1. Installiere den Seeeduino SAMD21 Boards Manager

Seeedstudio verfügt über einen Boardmanager, der mit dem XIAO und vielen anderen Seeeduino-Produkten funktioniert. Er kann wie folgt installiert werden:

  • Öffne die Arduino-IDE
  • Klicken auf das Menü
    • Mac: ‹Arduino›  und dann auf ‹Preferences›
    • Windows: ‹File› und dann auf ‹Preferences›
  • Das Fenster ‹Einstellungen› wird geöffnet.
  • Suche das Textfeld ‹Additional Boards Manager URLs› am unteren Rand des Einstellungsfensters.

Öffne dieses Feld mit einem klick auf das Symbol rechts:

Kopiere folgende URLs und füge sie der Liste hinzu:

https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json

2. Installiere das XIAO-Board

Nun, da der neue Boardsmanager in deiner Arduino-IDE installiert wurde, kannst du den letzten Schritt durchführen – die Installation des Seeeduino XIAO-Boards selbst.

Zum Öffnen des Boardsmanagers gehe zum Menüpunkt ‹Tools› im oberen Menü und wähle ‹Boards Manager› oder klicke bei der neuen Arduino-IDE auf das Boardsmanager-Icon links im Fenster. Danach kannst du über ‹Filter your search› das Seeedstudio XIAO suchen und installieren.

Libraries in der Arduino IDE installieren

Für dieses Projekt werden folgende Libraries genutzt.

Die oben genannten Libraries müssen in der Arduino-Library installiert werden, damit der verwendete Code funktioniert. Eine Anleitung, wie Libraries in der Arduino-IDE installiert werden können, findest du hier:

Aufbau

Alles installiert? Dann geht es los mit dem Aufbau! Löte die Komponenten wie im Diagramm aufgezeigt zusammen.

Fritzing Diagram

Batterie ModulSD Modul

Um das Modul im Bauch des Gehäuses einzubauen, musst du die am Modul angelöteten Header entfernen und die Litzen von der Rückseite her direkt mit dem PCB verlöten.

  • CS       —> D5
  • SCK    —> D8
  • MOSI —> D10
  • MISO —> D9
  • VCC    —> 5V Batteriehalterung
  • GND   —> GND Batteriehalterung

GPS Modul

Auch hier werden die Header abgelötet und die Litzen direkt an das PCB gelötet.

  • VCC    —> 3V Batteriehalterung
  • GND   —> GND Batteriehalterung
  • TXD    —> D6
  • RXD    —> D7

OLED Display

Um das Modul im Bauch des Gehäuses einzubauen musst du die am Modul angelöteten Header entfernen und die Litzen von der Rückseite her direkt mit dem PCB verlöten.

  • VCC    —> 3V Batteriehalterung
  • GND   —> GND Batteriehalterung
  • SCK     —> D5
  • SDA     —> D4

BME/BMP 280 Modul

Dies ist das zweite Modul dass mit dem XIAO über den I2C verbunden ist. Löte die SCL/SDA an die gleichen Pins wie das OLED Display.

  • VIN    —> 3V XIAO
  • GND   —> GND XIAO
  • SCL     —> D5
  • SDA     —> D4

Button

Achtung, die Verdrahtung des Buttons muss über einen Widerstand geschehen. Die Litzen müssen durch das Gehäuse hindurch gezogen werden.

  • VIN    —> 3V XIAO
  • GND   —> 220 Widerstand —> GND XIAO
  • OUT     —> D1

Code Upload

Alles zusammengebaut? Dann verbinde dein XIAO via USB mit deinem Rechner, öffne die DIY_GPS_5.0.ino-Datei, die du von Github heruntergeladen hast, und lade sie auf das XIAO hoch.

Wenn du alles Richtig gemacht hast UND eine Micro-SD-Karte im Leseteil steckt, sollte nach dem Einstellen der Startbildschirm auf dem Display erscheinen. Sobald das GPS-Modul Daten empfängt, blinkt das gelbe LED ca. 1x in der Sekunde. Wenn du die Koordinaten auf dem Display lesen kannst, zeichnet dein GPS einen Tack auf bis der Akku leer ist oder du es ausschaltest.