GPS fasziniert mich irgendwie. Darum findet ihr auch schon einen anderen Post zu dem Thema. Nun geht es aber ums Selbermachen.
Als ich auf die Idee kam, einen kleinen GPS Tracker selbst zu bauen, dauerte es nicht lange, und der dazu benötigte und bestellte GPS Receiver traf bei mir ein. Natürlich liess ich keine Minute verstreichen um ihn auszuprobieren. Und nach kürzester Zeit erreichten die ersten Daten aus der Erdumlaufbahn meinen Mac via Arduino.
$GPGGA,212102,,N,,E,0,00,,,M,,M,,6F
$GPRMC,212102,V,,N,,E,,,250112,,,N5F
$GPGGA,212103,,N,,E,0,00,,,M,,M,,6E
$GPRMC,212103,V,,N,,E,,,250112,,,N5E
...
Die oben stehenden Hieroglyphen sind die rohen Daten des Receivers. Die einzelnen Zeilen werden NEMA sentence oder auch NMEA string genannt und transportieren die Daten. NMEA ist eine standardisierte Sprache, in der sich ein GPS Gerät ausdrückt. Ihre Anfänge hatte dieser Standard in der Schifffahrt, die aus diesen sentences alle Daten wie Längen- und Breitengrade, Geschwindigkeit, Zeit usw. liest. Der detaillierte Aufbau eines solchen Datensatzes findet man im web.
Bei näherer Betrachtung meines ersten übermittelten $GPRMC string musste ich ernüchtert feststellen, dass an der Position, an der ein A stehen sollte, ein V, nämlich eine Fehlermeldung, erschien. Ein A zeigt an, dass die Daten verlässlich und in Ordnung sind.
$GPGGA,212225,4707.4282,N,00853.7112,E,1,05,02.2,00714.0,M,048.0,M,,4E
$GPRMC,212225,A,4707.4282,N,00853.7112,E,000.0,000.0,250112,,,A72
$GPGGA,212226,4707.4283,N,00853.7112,E,1,05,02.2,00714.0,M,048.0,M,,4C
$GPRMC,212226,A,4707.4283,N,00853.7112,E,000.0,000.0,250112,,,A70
...
Den nächsten Versuch unternahm ich outdoor. Unter den leicht irritierten Blicken meiner Nachbarn stand ich mit MacBook in eisiger Kälte im Garten. Nach einer Minute Wartezeit wurde aus dem V wirklich ein A. Und tatsächlich erschienen die genauen Daten meiner Position in dem string. Als nächstes stand nun an, die rohen Daten in eine neue Form zu bringen, in der die relevanten Informationen herausgelesen sind.
Hierbei konnte ich glücklicherweise auf die tatkräftige Hilfe meines guten Freundes @stektograph zählen. Er schloss vor kurzem seine Elektronikerlehre ab und brachte das Wissen mit, dass ich benötigte. Ab jetzt war mein Projekt das unsere. Gemeinsam brachten wir dem Arduino bei, den einzelnen NMEA string zu erkennen. In dieser Form werden die gelieferten Informationen für ihn greifbarer.
Die nächsten Schritte betreffen das Abspeichern und Übermitteln an einen Webserver. Wir planen, die Daten auf einer SD-Karte zwischenzulagern und sie dann in einem festgelegten Intervall via mobiles Internet an einen Server zu übertragen. Das dazu benötigte Modul, welches beispielsweise mit der Swisscom kommuniziert, ist bestellt und hoffentlich bereits unterwegs.
Vielleicht entsteht ja auch noch eine Webseite, die die einzelnen Positionsangaben auf Google Maps zu einem Pfad verbindet. Zu welchem Zweck will ich noch nicht verraten.
Übrigens, blauerHimmel entstand aus der Erkenntnis, dass GPS indoor gar nicht funktioniert. Und demzufolge die Nerds wohl oder übel unter blauem Himmel tüfteln müssen. Den Code findet ihr bei jedem Wetter: github:blauerHimmel