GPS Logger

Dieses Beispiel ist aus der Kategorie Mikrocontroller.

Idee

Jeder Radfahrer, Wanderer, Skifahrer und Bergsteiger kennt die Frage: "Wo bin ich überall gewesen?" Seit es Google Maps gibt, kann man seine Route direkt auf der Landkarte einzeichnen und analysieren. Dazu soll ein kleines Gerät entwickelt werden, das den aktuellen Standort in regelmäßigen Abständen abspeichert. Die so aufgezeichnete Route soll dann mittels USB auf einen Computer und dann weiter auf Google Maps übertragen werden.

Route durch die Wiener Innenstadt

Top-Down-Design

Laut dem bewährten Top-Down-Prinzip legen wir zuerst die groben Ideen fest, und planen dann immer mehr Details.

Funktion

Mit dem GPS Logger soll die Route aufgezeichnet werden. Dafür braucht er ein kleines Display und Tasten zur Bedienung. Damit kann die Aufzeichnung gestartet und nach dem Ende des Trips auch wieder gestoppt werden. Außerdem sollen die aktuelle Uhrzeit und die Dauer der Aktivität angezeigt werden. Wenn der Speicher voll oder die Batterie leer wird, soll rechtzeitig eine Warnung ausgegeben werden.

Bedienung

Als nächstes muss geplant werden, wie das Gerät bedient wird. Es wird überlegt, was das Display anzeigt, welche Menüs es gibt, welche Tasten für die Navigation und Bedienung notwendig sind usw.

Aufbau

Das geplante Gerät lässt sich am besten mit einem Mikrocontroller (µC oder MCU) als zentralen Bestandteil realisieren, der alle anderen Bausteine ansteuert. Die aktuelle Position wird mit einem GPS Modul ermittelt. Als Speicher wird eine microSD Karte verwendet. Da das Gerät für unterwegs ist, muss eine Batterie verwendet werden. Am besten verwenden wir dazu einen Ein-Zellen Lithium-Polymer Akku, der sich durch hohe Kapazität, geringe Selbstentladung und keinen Memory-Effekt auszeichnet. Die Zellenspannung beträgt je nach Ladezustand 3,0 V bis 4,2 V.

Beim Einbau muss sehr vorsichtig vorgegangen werden, da ein Kurzschluss oder eine Beschädigung sowie zu hohe Ladung und zu starke Entladung sehr leicht zu einer Explosion führen können. Daher müssen auch spezielle Lade- und Entlade-Regler eingesetzt werden.

Die gespeicherten Positionsdaten werden mittels USB zum PC übertragen. Die darin integrierte Versorgung mit (ungefähr) 5 V wird auch zum Laden des LiPo Akkus verwendet.

GPS Logger

Bausteine

Im nächsten Schritt müssen konkrete Bauteile für die einzelnen Blöcke ausgewählt werden. Grundsätzlich sollen sie günstig und leicht verfügbar sein. Das Gerät soll mit Batterien betrieben werden, daher sollen sie auch wenig Strom verbrauchen und alle mit 3,3 V Versorgung zufrieden sein.

GPS-Module sind mit integrierter Antenne von € 30,- bis € 80,- bei allen wichtigen Elektronik-Distributoren erhältlich. Die meisten geben die aktuelle Position und Uhrzeit über eine RS232-Schnittstelle mit normalen Logik-Pegeln im so genannten NMEA Format aus.

Für die microSD Karte wird nur ein entsprechender Sockel benötigt.

Als Taster kann jeder beliebige verwendet werden.

Als LCD-Modul soll ein einfaches 2- oder 4-zeiliges Character-Display (also ohne graphische Darstellung) mit 20 Zeichen pro Zeile verwendet werden. Fast alle solchen LCDs haben einen integrierten Controller, der kompatibel zu HD44780 ist. Auch dieses soll mit einer Betriebsspannung von 3,3 V betrieben werden können.

Signale

Als nächstes müssen die Signale zwischen allen Bauteilen festgelegt werden. Dazu müssen die jeweiligen Datenblätter gelesen werden. Für das GPS Modul reichen zwei Leitungen für die serielle Schnittstelle RxD und TxD, die zum µC führen. Die microSD Karte wird im SPI Modus betrieben (da die Funktionsweise des schnelleren SD Modus geheim gehalten wird). Für das SPI Protokoll werden vier Signale SS, SCK, MOSI und MISO benötigt. Für jeden Taster wird je ein Signal benötigt. Und das LCD mit dem HD44780 Controller wird mit acht Datenleitungen D0-D7, RS (Befehl/Daten), R/W (lesen/schreiben) und E (Enable) angesteuert.

Mikrocontroller

Nachdem alle Schnittstellen und Signale festgelegt sind, kann der Mikrocontroller ausgewählt werden. Er soll natürlich alle erforderlichen Schnittstellen unterstützen. Außerdem müssen seine Rechenleistung und der verfügbare Programm- und Daten-Speicher groß genug sein.

  • Für das GPS Modul wird eine RS232 Schnittstelle (auch UART genannt) benötigt.
  • Für die microSD Karte muss eine SPI-Master Schnittstelle vorhanden sein.
  • Die Taster werden jeweils mit einem eigenen digitalen Eingang verbunden (bei Microcontrollern wird das meist als GPIO bezeichnet).
  • Auch das LCD wird über solche GPIOs angesteuert.
  • Weiters soll der GPS Logger den aktuellen Batteriefüllstand anzeigen. Dazu soll die Batteriespannung mittels eines AD-Wandlers digitalisiert werden. Der µC braucht also auch einen AD-Wandler.
  • Zur Kommunikation mit dem PC braucht der µC eine USB Schnittstelle. Wegen der geringen Datenmengen reicht aber der ältere USB Standard 1.1.

Mit dieser Liste an Anforderungen kann der Mikrocontroller ausgewählt werden. Aus der Fülle an Angeboten würden sich als einfache 8-bit MCUs z. B. Atmel ATmega und Microchip PIC gut eignen. Beide haben eine weite Verbreitung, wodurch man viele interessante Projekte und viel Support im Internet findet (z. B. auf mikrocontroller.net).

Wer gerne etwas leistungsfähigere MCUs verwendet, ist sicher mit der ARM Architektur gut bedient. Das Besondere dabei ist, dass die Firma ARM selbst keine Chips herstellt, sondern ihre Pläne an andere Firmen verkauft, die dann damit die Chips herstellen, z. B. NXP, ST Microelectronics, TI, Atmel, ... Aus den verschiedenen ARM Architekturen empfiehlt sich hier sicherlich die relativ neue Cortex-M3 Architektur. Derartige Mikrocontroller sind eigentlich schon zu leistungsfähig für dieses Projekt, daher sollten auch Cortex-M0 in Betracht gezogen werden, die wesentlich günstiger sind und deren Gehäuse viel einfacher zu löten ist.

Bei der Auswahl eines geeigneten Mikrocontrollers darf man auch nicht vergessen, wie gut die Programme zum Entwickeln der Firmware sind. Hier können insbesondere ATmega und ARM punkten, da es auch Open-Source Software vom Compiler, über den Debugger bis zum JTAG Treiber gibt.

Stromversorgung

Nachdem alle Bauteile festgelegt wurden, kann der gesamte Stromverbrauch berechnet werden. Der Akku muss diesen Strom lange genug liefern können. Für eine Tageswanderung sollten das schon zwölf Stunden sein. Daraus ergibt sich die notwendige Akkukapazität.

Die Zellenspannung eines LiPo-Akkus beträgt je nach Ladezustand 3,0 V bis 4,2 V. Für die Versorgung der Bauteile werden aber 3,3 V benötigt. Hier bietet sich ein DC/DC-Wandler an, der den großen Bereich der Akkuspannung auf die konstante Versorgungsspannung hinauf- und hinabwandeln kann. Aber Achtung: LiPo-Akkus können explodieren, wenn sie zu stark geladen, zu tief entladen, beschädigt, kurzgeschlossen oder anders misshandelt werden.

Das Laden des Akkus ist über USB geplant. Dazu gibt es auch schon fertige Chips, z. B. MAX1811, die sich um alles kümmern.

Firmware

Bis jetzt wurde vom eigentlich GPS Logger nur die Hardware festgelegt. Diese bestimmt den elektrischen und mechanischen Aufbau des GPS Loggers. Die Funktionalität wird in Software programmiert. Für solche Geräte mit (relativ) kleinen MCUs wird die Software meistens als Firmware bezeichnet.

Die Firmware soll – wie jedes andere Programm auch – gut geplant sein. Natürlich wieder zuerst grob, und dann immer detaillierter. Erst dann sollte man zu programmieren beginnen. Auch wenn's schon in den Fingern juckt. :-)

Aufbau

ZuständeAls erstes werden die Betriebszustände des GPS Loggers definiert. Die oben beschriebenen Pläne zur Bedienung des Geräts werden hier in technischerer Art ausgedrückt.

  • Off: nichts tun (z. B. wenn Akku leer ist)
  • Sleep: nichts tun außer Uhrzeit anzeigen und auf Tastendruck warten
  • Logging: in regelmäßigen Abständen (z. B. jede Sekunde) aktuelle Position in eine Datei auf der SD-Karte abspeichern, Position und Uhrzeit anzeigen
  • Communicate: Kommunikation über USB mit dem PC, Übertragen der abgespeicherten Dateien
  • ...

Am besten bildet man diese Zustände und die Übergänge (die z. B. durch das Drücken einer Taste erfolgen) in einer so genannten State Machine, auch Endlicher Automat genannt, ab (siehe Bild rechts). Die Zustände werden übersichtlich als Kreise gezeichnet, und die Pfeile zeigen an, wie man jeweils in den nächsten Zustand kommt.

Der nächste Punkt ist, wie intern die Daten "fließen". Zum Beispiel wird für den Zustand "Logging" das GPS-Modul aktiviert. Es liefert dann regelmäßig die aktuelle Position im NMEA Format. Diese Daten müssen vom Mikrocontroller verarbeitet und dann weiter auf die SD-Karte geschrieben werden. Die Uhrzeit wird vom GPS Modul auf die interne Uhr des Mikrocontrollers übertragen, und von dort weiter auf das Display.

Im Gegensatz zu Programmen am PC ist die Firmware im Mikrocontroller sehr hardwarenahe. Am Besten teilt man sich daher die Programmierung in mehrere "Schichten" (ähnlich den sieben OSI-Layern für Netzwerke), wobei die unterste Schicht die Hardware direkt ansteuert. Man könnte sie auch "Treiber" nennen, z. B. für die serielle Schnittstelle, die mit dem GPS-Modul kommuniziert. Sie bietet einfache Funktionen an, die dann von höheren Schichten verwendet werden. Der Treiber für SPI (Verbindung zur mircoSD Karte) wird dann von der nächsten Schicht, die sich um das FAT Dateisystem kümmert, verwendet. Und diese Schicht wird wiederum von der nächsten verwendet, die für jede aufgezeichnete Route eine eigene Datei anlegt und dort die Positionsdaten abspeichert.

USB Protokoll

USBZur Übertragung der aufgezeichneten Routen über USB müssen natürlich der GPS Logger (genauer: die Firmware im Mikrocontroller) und der PC (genauer: die Software) die gleiche Sprache sprechen, also die gleiche Bedeutung der Bits und Bytes in der Übertragung verwenden. So eine Definition, wie die Daten genau zu verstehen sind, heißt auch (Kommunikations-)Protokoll.

Im ersten Schritt wird festgelegt, welche Funktionalität über das Protokoll realisiert werden soll: Abrufen einer Liste aller aufgezeichneten Routen, Daten einer Route übertragen, Uhrzeit einstellen, ... Danach wird überlegt, welche Datenfelder für jede dieser Funktionen benötigt wird (z. B. Tag, Monat, Jahr, Stunde, Minute und Sekunde für die Uhrzeit), und wie diese Datenfelder in Bits und Bytes aufgeteilt werden (z. B. je ein Byte für jedes Feld).

Als Nächstes müssen diese Daten in die von USB genormte Übertragung in Endpunkte und Modi eingepasst werden. Und als Letztes kann man festlegen, wie die Firmware aufgebaut sein muss, um die Daten zu empfangen und zu senden.

Programmierung

Die Arbeit beim eigentlichen Programmieren ist durch die gründliche Planung wesentlich einfacher. Man braucht sich nicht ständig überlegen, wie die Funktionen arbeiten, weil das ja schon längst definiert wurde.

Am besten startet man zuerst mit der untersten Schicht, den Treibern. Wichtig ist dabei, dass man jeden Treiber einzeln gründlich testet. Dazu fertigt man eigene Test-Programme an, die dann im fertigen Projekt nicht mehr verwendet werden. Jeder macht dabei Fehler, egal wie erfahren er ist. Aber mit kleinen Test-Programmen findet man die Fehler am schnellsten.

Die getesteten und für gut befundenen Treiber können dann von den nächsten Schichten einfach verwendet werden. Das Zusammensetzen der Funktionen geht dann ganz schnell, weil die Basis-Funktionen schon vorhanden und getestet sind.

Die Planung ist wie oben erwähnt Top-Down (von grob zu fein). Die Realisierung wird aber Bottom-Up durchgeführt, bis man schließlich den fertigen GPS-Logger beisammen hat.

Platine

Schaltplan eines GPS Loggers (verbessert nach http:/ /w ww.mikrocontroller.net/articles/GPS_Logger)Der GPS Logger soll nicht als Labor-Demonstration aufgebaut werden, sondern für eigene Touren taugen. Das heißt, dass er in ein möglichst kleines und leichtes, evtl. sogar wasserdichtes und stoßfestes Gehäuse eingebaut werden soll. Die Abmessungen der Platine entsprechen daher den Innenmaßen des gewählten Gehäuses.

Auf die Platine kommen alle oben besprochenen Bauteile (Mikrocontroller, SD-Karten-Halterung, Stecker für das GPS-Modul und LCD, ...) sowie noch Stützkondensatoren und andere Kleinigkeiten. Dafür wird als Erstes der Schaltplan mit einem geeigneten Programm (z. B. Eagle) gezeichnet.

Layout eines GPS Loggers (verbessert nach http:/ /w ww.mikrocontroller.net/articles/GPS_Logger)Danach kann das Layout der Platine gezeichnet werden. Man wird dabei vom Programm unterstützt, das anzeigt, welche Pins miteinander verbunden werden müssen. Es kann auch prüfen, ob man versehentlich Kurzschlüsse fabriziert oder Leitungen zu nahe aneinander gezeichnet hat.

Ein Tipp: Bevor man die Platine herstellen lässt, sollte man selbst überprüfen, ob man das richtige Layout der Bauteile verwendet hat. Am besten bestellt man alle Bauteile und legt sie auf einen Ausdruck des Layouts.

PC Software

Da die Daten vom Gerät über USB in den PC und dann weiter zu Google übertragen werden sollen, wird auch eine PC Software benötigt.

Funktionalität

Welche Funktionen soll die PC Software anbieten? Die Hauptsache ist die Übertragung der Daten vom GPS Logger auf den PC, die dann auf der Festplatte abgespeichert werden. Außerdem sollen die aufgezeichneten Routen in das KML-Format umgewandelt werden, damit man sie später mit einem Browser auf Google Maps hochladen kann.

Diese Minimal-Funktionen wären damit abgedeckt. Man könnte z.B. noch eine Art "Tagebuch" mit den aufgezeichneten Routen implementieren. Die Daten könnten auch ausgewertet und als Statistik mit Graphen dargestellt werden.

Aufbau

Wie bei der Firmware muss man sich überlegen, wie die PC Software aufgebaut ist. Ein Teil ist die USB Kommunikation, die z. B. mit libusb sehr einfach und zuverlässig in Linux programmiert werden kann. Das ist dann die unterste Schicht auf der PC Seite. Darüber wird das Kommunikations-Protokoll implementiert. Die nächste Schicht realisiert das Abspeichern der Routen auf dem PC. Und noch eine Schicht implementiert schließlich den Export im KML Format, Analyse, statistische Auswertung, usw.

GPS Logger

Nachdem die Hardware mit der dazu gehörenden Firmware und auch die PC Software entwickelt wurden, kann der nagelneue GPS Logger Marke Eigenbau in Betrieb genommen werden. Einer Wanderung oder einer Bergtour mit dem neuen Begleiter steht nichts mehr im Weg. Einfach einschalten und loslegen.

Nach der Tour wird die zurückgelegte Route per USB in den PC überspielt und gleich auf Google Maps hochgeladen. Schon kann man den eigenen Weg nochmals Revue passieren lassen oder die sportliche Leistung mit ein bisschen Stolz seinen Freunden zeigen.

Ein GPS Logger auf der Donauinsel

 

  © 2012 OVE Österreichischer Verband für Elektrotechnik Kontakt