GPS-Decoder mit ARDUINO-Boards und BASCOM-Software
NEU: mit zusaetzlicher Temperaturanzeige
22. Januar 2013

Schon an anderer Stelle [1] hatte ich mich ausführlich über die Verwendung von ARDUINO-Hardware in Verbindung mit BASCOM-AVR-Projekten ausgelassen. Neben einigen weiteren Projekten [2-5] wurde dabei auch der hier kurz zu beschreibende GPS-Decoder realisiert. Hardwaremässig setzt er sich aus einem Standard-ARDUINO-Board ( "UNO" oder ähnliche ) und einem aufsteckbaren LCD, Keypad-Shield [1] zusammen. Dazu kommt ein mit 3.3V oder 5V zu versorgendes GPS-Modul mit seriellem NMEA-Datenausgang, wobei z.B. der auch schon in [5] verwendete Baustein zum Einsatz kommen kann. Der Decoder verarbeitet an Port "#0" bzw. Prozessor: "D0" des ARDUINO-Boards mit TTL-Pegel anliegende NMEA-Protokolle des Typs "RMC". Stehen die vom GPS-Empfänger gelieferten Daten NUR mit RS232-Pegel zur Verfügung, so kann beispielsweise die auch in [5] beschriebene Pegelwandlung mithilfe eines zusätzlichen Transistors die Lösung bringen. Im Normalzustand werden Eingangsdaten mit einer Rate von 4800bps verarbeitet. Nach Verbindung von Porteingang "#A1" bzw. "PC1" mit Masse können aber auch solche mit 9600bps decodiert werden.


Abb.1  Displaydarstellung während des Empfangs gültiger GPS-Daten

Neu ist die Möglichkeit, auch die Daten eines Temperaturfühlers vom Typ "DS18B20" auswerten zu können. Er liefert seine Ausgangsdaten über einen sog. "1-Wire-Bus" und ist mit dem ARDUINO-Board über den Porteingang "#A3" bzw. "PC3" zu verbinden. Weiterhin sind nur noch eine Masse- und die 5V-Spannungsverbindung herzustellen ( Abb.2 ).


Abb.2  Beschaltung des Temperaturfühlers "DS18B20"

Nach dem Einschalten wird der GPS-Empfänger zuerst einmal keine oder ungültige Navigationsdaten liefern. Nutzbare Zeitinformationen stehen allerdings auch schon bei minimalem Satellitenempfang zur Verfügung. Bei angeschlossenem Temperaturfühler werden sie zusammen mit dessen Daten angezeigt ( Abb.1 ). Das Programm rechnet die vom GPS-Empfänger gelieferten UTC-Werte in mitteleuropäische Zeit um. Um zwischen der im Normalzustand angezeigten Winterzeit ( +1 Stunde ) und Sommerzeit ( +2 Stunden ) zu wechseln, wird Porteingang "#A2" bzw. "PC2" benutzt. Im Sommerhalbjahr ist hier eine Drahtbrücke mit Masse herzustellen.


Abb.3    Displaydarstellung bei gültigem GPS-Datenempfang

Ein Tiefstrich in Position 9 der oberen Displayzeile ( Abb.1 ) signalisiert die Verfügbarkeit GÜLTIGER GPS-Daten bzw. eines GPS-FIXES ( Synchronisation nach Empfang einer ausreichenden Anzahl von GPS-Satelliten. Erst jetzt macht auch ein Aufruf der weiteren verfügbaren Anzeigefenster Sinn. Insgesamt stehen 4 verschiedenen Fenster zur Verfügung, wobei die Umschaltung über den Taster "SELECT" erfolgt. Er ist jeweils solange zu drücken, bis das jeweils nächste Fenster erscheint. Im zweiten Fenster erkennen wir die aktuellen Werte von Breiten- und Längengrad, sowie der Uhrzeit ( beide aus Kapazitätsgründen in komprimierter Darstellung ) und den aus den Positionsdaten berechnenten Maidenhead-Locator ( Abb.3 ). Durch erneute Betätigung des Tasters "SELECT" lassen sich noch weitere Darstellungsformate anwählen. So ist hierüber z.B. die erweiterte Anzeige von Postionsdaten und eine Ausgabe der Werte von Bewegungsgeschwindigkeit- und Richtung selektierbar.

NACHBAU

Download des BASCOM-Quellcodes und HEX-Files

LINKLISTE

[1] http://www.kh-gps.de/bascom_arduino.htm
[2] http://www.kh-gps.de/dcf77.htm
[3] http://www.kh-gps.de/dds.htm
[4] http://www.kh-gps.de/dtmf_arduino.htm
[5] http://www.kh-gps.de/ardudec.htm

E-Mail contact via: