Wer wollte nicht schon immer mal wissen, wo er im Urlaub seine Bilder gemacht hat? Wen interessiert es nicht, welche Wege auf der letzten Wanderung oder Radtour zurückgelegt wurden?

Dafür gibt es sogenannte GEO-Tagger inzwischen überall zu kaufen. Aber das war zu einfach.

Inzwischen ist das Projekt schon recht ausgereift und in der dritten Version. Folgende Features bietet mein im folgenden vorgestelltes Gerät: 

  • Aufzeichung der GPS-Daten auf eine Micro-SD Karte - daher nahezu unbegrenzte Speichermöglichkeiten
  • Aufzeichnung der Daten im üblichen GPX-Format
  • Unterteilung des aufgezeichneten Tracks in verschiedene Segmente möglich
  • Stromversorgung über einen LiPo-Akku mit integriertem Ladegerät
  • Aufladen über USB-Schnittstelle oder USB-Netzgerät
  • Anzeige der GPS-Daten auf einem Display
  • automatische Abschaltung und Speicherung der Daten bei niedriger Batterie
  • Softwareupdate über USB möglich

Das Herz des Gerätes: der Mikrocontroller

Als Controller kommt ein Atmel ATmega328P zum Einsatz.

  • Flash Speicher von 32kByte
  • RAM Speicher von 2kByte
  • 23 programmierbare Ein/Ausgänge
  • kann auch bei 3,3V Versorgungsspannung noch bis zu 12Mhz getaktet werden (wichtig für die USB-Anbindung, siehe unten)
  • relativ klein, selbst in der DIP Ausführung

Der Arbeitsspeicher ist wichtig für die Verwaltung des FAT-Dateisystems auf der SD-Karte. Desweiteren wird noch weiterer Speicher für die vom GPS-Empfänger gesendeten Daten und die Anzeige auf dem Display benötigt. Ich habe mich nicht für die SMD-Variante entschieden, da diese zum Einen nicht einfach ist zu löten, zum Anderen muss auf den Controller zu Beginn der sogenannte Bootloader geladen werden. Für eine SMD-Variante steht hierzu kein Geräte zur Verfügung... Die Programmierung erfolgte im freien C-Compiler WinAvr. Das machte die ganze Sache um vieles einfacher, da zudem noch ein freien FAT-Dateisystem für eben diesen Compiler zur Verfügung steht (siehe unten).

Auswahl des GPS-Empfängersnavilock

Das Gerät wird mit 3,3V an Spannung versorgt. Der GPS-Empfänger muss daher für diese Spannung geeignet sein. Die Daten werden im standardisierten NMEA-0183-Format über eine serielle Schnittstelle übertragen. Da der Controller eine Onboard Schnittstelle für serielle Daten bietet, braucht der GPS-Emfpänger weder USB noch sonstige Schnittstellenwandler (dies würde die Sache nur erschweren). Eine gute Seite mit Beschreibung und Erklärung der GPS Signale und Protokolle findet man hier.

Im ersten Wurf kam ein GPS-Empfängermodul NL-504ETTL der Firma Navilock zum Einsatz. Dieses Modul war mit dem MTK Chipsatz bestückt und mit einer Backup-Batterie versehen. Diese Backuplösung führt dazu, dass sich der Empfänger bei nicht verändertem Standort schneller auf die Satelliten aufsynchonisiert. Da die Module recht teuer (ca. 35€) und von den Maßen auch an der Grenze sind, wurde für den weiteren Ausbau ein anderes Modul gesucht.GPS SMALL

In der aktuellen Version kommt ein Modul ST22 mit dem Skytraq Venus 6 Chipsatz zum Einsatz. Diese Module können z.B. im CatCam Shop bezogen werden. Der Preis liegt momentan bei ca. 19€ (+2,5€ Versandkosten) und ist damit deutlich geringer als bei oben genannten Modul. Zudem ist das Modul weitaus kleiner und anschlusstechnisch besser in die Platine integriert werden. Die günstige Variante besitzt allerdings keine Backuplösung, welche jedoch extern vorgesehen werden könnte. Ich habe darauf verzichtet, da kein Platz vorhanden ist und sich das Modul bei ausreichend Satelliten recht schnell aufsynchronisiert.

In der dritten Version kann wahlweise eines dieser beiden GPS-Module bestückt werden.

Beide Module übertragen die NMEA Daten im Standard mit 9600 bit/s, was völlig ausreichend ist. Das Positionsupdate erfolgt ohne Änderung ebenfalls alle Sekunde. Auch das ist für diese Anwendung völlig ausreichend, könnte aber auch noch verändert werden. Somit können die Module einfach eingebaut werden und funktionieren!

Stromversorgung und Ladeeinheit

Um das Gerät möglichst klein und leicht zu bekommen, wurde als Stromversorgung einakku LiPo-Akku eingesetzt. Diese Akkus sind inzwischen im Modellbau weit verbreitet. 1 Zelle hat einen Nennspannung von 3,7V, welche im aufgeladenen Zustand bis zu 4,2V erreichen kann. Die Kapazität liegt bei wenigen mAh bis zu einigen Ah. Bei ebay sind diese Akkus recht günstig zu bekommen (ca. 5-6€ für eine Zelle mit 1200mAh, inkl. Versandkosten). Es ist darauf zu achten, nicht zu kleine Kapazitäten zu nehmen, um eine entsprechende Laufzeit des Gerätes zu erhalten. Bei zu großen Kapazitäten werden die Zellen jedoch auch immer größer, weshalb hier ein Kompromiss gefunden werden muss.

Um demax1811n Akku im Gerät zu laden, wurde der IC MAX1811ESA von Maxim eingesetzt. Dieser IC ist ein speziell für die Aufladung von Lithium-Ionen Akkus vorgesehener Chip. Er benötigt sehr wenige externe Bauteile (ein paar Kondensatoren und Widerstände) und schon kann der Akku über einen USB Anschluss geladen werden. Er ist daher ideal für diesen Anwendungsfall. Auch die SMD-Bauform lässt sich noch gut von Hand löten. Für den GPS Datenlogger wurde der Ladestrom auf 500mA eingestellt, damit das Aufladen nicht zu lange benötigt. Der USB-Hub sollte das jedoch liefern können! Außerdem wurde die Ladeanzeige auf eine LED gelegt, damit der Ladevorgang sichtbar ist.

Die Spannungs- und Stromversorgung des gesamten Gerätes war eigentlich das schwierigste Thema. Das Geräte sollte mit einer stabilisierten Spannung von 3,3V arbeiten. Da die Spannung vom Akku aber von ca. 3V-4,2V betlp2292rieben werden kann, brauchte ich einen Spannungsregler. Ein normaler linearer Spannungsregler hat aber einen zu hohen Spannungsabfall über den Regler, so dass die 3,3V nicht immer sichergestellt waren. Der erste Versuch verwendete einen getakteten Up/Down Regler, der sowohl bei 4,2V als auch bis runter zu 3V Eingangsspannung eine stabilisierte Spannung von 3,3V am Ausgang lieferte. Der Schaltungsaufwand war jedoch immens. Außerdem fällt die Spannung des Akkus ab ca. 3,6V recht schnell ab, so dass der Vorteil die Spannung bis zu 3V abfallen zu lassen, nicht groß war. Im zweiten Versuch kam ein Low-Drop Festspannungsregler für 3,3V Ausgang zum Einsatz. Ausgewählt wurde der LP2292 von National Semiconductors. Dieser Spannungsregler benötigt so gut wie keine externe Beschaltung und kann am Ausgang bis zu 250mA liefern, also völlig ausreichend. Ein weitere Vorteil dieses Spannungsreglers ist der externe Abschalteingang. Damit konnte endlich die Abschaltproblematik bei niederer Batteriespannung gelöst werden. Der Controller kann bei Bedarf einfach dieses Eingang abschalten und damit die Batterie vom Rest des Gerätes wegschalten. Mit diesem Spannungsregler kann nun ein Eingangsbereich von 3,5V - 4,2V verwendet werden. Zudem ist diese Lösung wiederum günstiger als der Schaltregler.

Display

Durch Zufall bin ich auf die Ansteuerung eines Handydisplays mit dem Atmel Controller getoßen (gutes "Datenblatt" gibt es hier). Das war displaydie Initialzündung für die Integration eines Displays in das Gerät.

Im ersten Zustand war das Gerät nur mit ein paar LEDs zur Anzeige des Zustandes ausgestattet. Das funktionierte zwar gut, aber es war dann doch nicht zu sehen, welche Geschwindigkeit bzw. Höhe aktuell erreicht ist. Ein Display hatte ich da aber noch nicht gefunden, da es klein sein, wenig Strom brauchen und mit 3,3V arbeiten sollte.

All diese Voraussetzungen erfüllt ein Handydisplay! Zudem sind die Displays Grafikdisplays, so dass theoretisch sogar Grafiken dargestellt werden könnten. Gewählt wurde ein Display aus einem Nokia 3310 Handy. Diese Displays gibt es bei Ebay recht günstig als Ersatzteile (< 10€). Es sollte auf original Nokia Displays geachtet werden, da diese am besten gelötet werden können. Die Nachbauten haben als Anschluss ein Folienkabel, das kaum gelötet werden kann!

Das Display kann ganz einfach über den SPI-Bus des Controllers angesteuert werden. Problematisch ist nur der Speicherverbrauch, da der gesamte Bildschirminhalt im Speicher gehalten werden muss (84x48 Pixel = 4032 Pixel, da nur Schwarzweiß können 8 Pixel in einem Byte zusammengefasst werden -> 504 Byte). Deshalb konnte auch kein Display mit höherer Auflösung verbaut werden. Stromverbrauch ist für das Display kaum zu messen, also auch hier kein Nachteil.

Software

Die Software ist komplett in C geschrieben. Zur Speicherung der Daten auf die SD-Karte wird ein Dateisystem benötigt. Üblicherweise sind die Karte in FAT16 oder FAT32 formatiert. Dazu gibt es ein freies Dateisystem von Holger Klabunde. Dieses Dateisystem ist speziell für die Atmel Controller optimiert und benötigt daher so wenig wie möglich Arbeitsspeicher. Ein besonderer Dank für die Freigabe des Quellcodes auf der Homepage. Es waren nur kleine Anpassungen und Optimierungen notwendig und schon konnten Dateien auf der SD-Karte erstellt werden. Die SD-Karte wird, wie das Nokia Display, an den SPI-Bus des Controllers angeschlossen. Der GPS-Empfänger ist an die serielle Schnittstelle angschlossen, über welche der Controller dann jede Sekunde die gesendeten NMEA-Paket erhält, zerlegt und auswertet. Der Status wird über 2 zusätzliche LEDs und das Display angezeigt. Die Aufzeichnung der GPS-Daten wird gestartet, sobald der GPS-Empfänger sich mit den Satelliten synchronisiert hat. Zum Wecheln der Seiten im Display und zum Ein/Ausschalten des Gerätes sind zwei Drucktaster vorhanden.

Damit die Software im Gerät ohne besondere Geräte und ohne Zerlegen des Gerätes vonstatten geht, wurde ein Bootloader mit USB-Unterstützung integriert. Der Durchbruch hier war der freie USB-Treiber V-USB von objective Development. Dieser Treiber benötigt keinen externen Schnittstellenwandler, da er direkt das USB-Protokoll im Controller nachbildet. Da das USB-Protokoll etwas zeitkritisch ist, wurde die USB-Unterstütztung nur im Bootloader eingebaut. Damit kein weiterer Windows-Treiber notwendig ist, simuliert der Bootloader ein USB-HID Gerät, welches von Windows automatisch erkannt und installiert wird. Somit lassen sich Softwareaktualisierungen einfach an das Gerät übertragen. Der Bootloader basiert auf einem Beispiel der V-USB Homepage und wurde noch um einige Features erweitert, z.B. die Übertragung der NMEA Daten oder den Zugriff auf die internen Geräteeinstellungen im EEPORM des Controllers.

Die Software und der Bootloader können unten geladen werden. Damit das ganze funktioniert müssen noch die sogenannten Fuse-Bits im Controller richtig gesetzt werden:

  • Low Fuse auf 0xDE (hex)
  • High Fuse auf 0xD8 (hex)
  • Extended Fuse auf 0xFD (hex)

Dies funktioniert nicht über den Bootloader, da dieser erst ausgeführt wird, wenn diese Bits richtig sitzen! Damit der Bootloader beim Start geladen wird, müssen beide Taster für ca. 2s beim Einschalten gleichzeit gedrückt werden. Dann bleibt die rote LED an und die gelbe LED blinkt jedesmal, wenn ein NMEA Paket empfangen wurde (flackert). Außerdem erkennt Windows ein neues USB Gerät, sofern der Datalogger mit einem USB Anschluss verbunden ist.

technische Daten

  • Stromverbrauch ca. 80mA
  • Gewicht ca. 83g
  • Maße (BxHXT) ca. 55x79x24mm
  • Preis ca. 62€ (je nach ebay-Kosten)

Die Bauteile gibt es bei  Reichelt und  CSD-Electronic. Beide haben leider nicht alle Bauteile, so dass jeweils die Versandkosten bezahlt werden müssen.

optionale Erweiterung um einen Temperatursensor

In meinem letzten Urlaub kam der Datalogger intensiv zum Einsatz. Es kam dann die Idee aTO 92 3uf, ob es nicht auch noch möglich wäre, die Temperatur anzeigen. Kaum zu Hause, ging die Suche nach einem geeigneten Sensor los. Ein PT100 oder ein Thermoelement war zu kompliziert, da hier noch eine zusätzliche analoge Schaltung mit Verstärker usw. notwendig gewesen wäre. Nach einiger Suche fiel die Wahl dann auf einen digitalen Sensor DS1820 (bzw. DS18S20). Der noch notwendige zusätzliche digitale Ein/Ausgang war gerade noch vorhanden, also war der Sensor optimal.

Ab der Firmware V4 wird die Temperatur eingelesen, auf einer separaten Displayseite angezeigt und als zusätzliche Information in die GPX-Datei geschrieben. Zum Einbau werden die 3 Pins des Sensors einfach an die entsprechenden Pins des Controllers gelötet (siehe Bilder unten). Ein Widerstand zwischen der Spannungsversorgung und der Datenleitung ist empfohlen (siehe auch Schaltplan) Zur Einstellungen eines Korrekturwertes wird die neueste Version der Konfigurationssoftware benötigt.

Downloads

  • Bootloader als HEX Datei zum direkten Einspielen in einen leeren Controller:  USBBootloader.hex (ca. 9kByte)
  • Firmware V2 zum direkten Einspielen in einen leeren Controller bzw. über die Konfigurationssoftware und den Bootloader:  FirmwareV2.zip (ca. 22kByte)
  • Kurzbedienungsanleitung im PDF Format (ca. 264kByte)
  • Konfigurationssoftware (ist noch im Betastadium), Vorraussetzung ist .NET 2.0: GPSKonfig.zip (ca. 17kBytes)
  • Schaltplan V3 im PDF Format (ca. 50kByte)
  • Stückliste als Excel-Tabelle mit optimierten Preisen und Bestellnummern (ca. 25kByte)
  • Platinenlayout für oben und unten im PDF Format
  • Patinenbestückung für oben und unten im PDF Format
  • Auswertesoftware für die GPX-Dateien siehe GPX-Analyse bei "Software"
  • hervorragende Freeware fürs Geotagging von Digitalbildern ist die Software GeoSetter von Friedemann Schmidt

aktuelle Firmware V7 (FirmwareV7.zip) (ca. 24kB)

  • ungültige Temperaturwerte werden nicht aufgezeichnet
  • an Pin PB1 kann ein SMD-Signalgeber angeschlossen werden (z.B. Euklit SMD-P16). Dieser Signalgeber gibt einen kurzen Piepston beim Einschalten und bei niedrigem Batteriestatus ab. Wenn der Einschaltknopf verklemmt ist und das Gerät ausgeschaltet wird, gibt der Signalgeber einen Dauerton von sich (auf diese Weise habe ich mir mal einen Akku geschrottet - das passiert jetzt nicht mehr)