Der Fieldday-Buddy:

Das Helferlein für unterwegs


Features:

  • GPS-Koordinaten u. QTH-Locator
  • GPS-Zeit und PC-Zeitsynchrisation
  • Anzeige der aktuell sendenden NCDXF-Baken
  • analoge Zeitanzeige
  • Hardware: Arduino, GPS-Modul und LC-Display

Bild 1: Prototyp des Fieldday-Buddy auf dem Holzbrett.

Der Fieldday-Buddy

Das Helferlein für unterwegs

Was tun, wenn auf einem Fieldday - in der freien Natur – kein Handynetz und damit kein Internet verfügbar ist? Wie soll der QTH-Locator exakt festgestellt werden, die Systemzeit des PC auf die Sekunde genau justiert werden? Wie erlangt man einen Überblick über die aktuellen Ausbreitungsbedingungen auf KW? Der Fieldday-Buddy hilft! Etwas Strom und ein wenig freie Sicht zum Himmel sind die Zutaten. Die Hardware stützt sich auf einen Arduino. Daran angeschlossen wurden ein LC-Display, ein GPS-Empfänger sowie ein Taster.

Ein Sommer-Fieldday ist eine tolle Sache und wird oft mit einem der zahlreichen Funkwettbewerbe kombiniert. Draußen in der Natur stehen die Antennen weit weg von störenden Einflüssen. Und je weiter man von der Stadt entfernt ist, desto öfter kommt es vor, dass das Smartphone versagt, weil kein Netz bzw. Internet zur Verfügung steht. Eine Aktualisierung der PC-Systemzeit – wichtig für beliebte Digimodes wie FT8/4 – kann via NTP-Server nicht erfolgen. Hier ist der Fieldday-Buddy gefragt: Via GPS ist stets die aktuelle Zeit in UTC bekannt und kann mit dem Logbuch-PC synchronisiert werden. Ein USB-Kabel stellt die Verbindung zum PC her, ein kleines Windows-Programm erledigt den Rest, also die Systemzeit des PC zu aktualisieren. Im Contest ist die Kenntnis über den eigenen QTH-Locator wichtig. Anhand der GPS-Koordinaten berechnet der Fieldday-Buddy den Maidenhead-Locator und stellt ihn mit weiteren GPS-Daten auf dem LCD dar.

Die Hardware: Aufbau

Entwicklungsziel war es, auf das Löten von SMD-Bauelemente zu verzichten. So bietet sich die Nutzung gefertigter Komponenten an. Grundlage ist ein Arduino Mega 2560, der mit seinem leistungsfähigen Prozessor genug Arbeitsspeicher und Platz für Programm und Variablen bietet, um auch größere Aufgaben und Berechnungen zu bewältigen. Vorteilhaft sind auch die vier UARTS (serielle Schnittstellen), von denen zwei zur Anwendung kommen. Eine wird für die GPS-Daten benutzt, die andere zur Kommunikation mit dem PC via USB-Kabel. Ein weiterer Vorteil ist die unproblematische Übertragung des Programms auf dem Arduino Mega mittels der Arduino-Entwicklungsumgebung (Arduino IDE). Da die Schaltung nur aus wenigen Komponenten besteht, kann ein Aufbau wahlweise auf einem Steckbrett oder auf Lochrasterplatine erfolgen. Denkbar wäre auch, vor einem Fieldday die Komponenten zeitweise miteinander zu verbinden und diese nach dem Fieldday wieder anderen Aufgaben zuzuführen. Wer einen permanenten Aufbau wünscht, setzt alles auf eine Lochrasterplatine, verbindet die Komponenten fest miteinander und verpackt alles in ein Gehäuse.


Bild 2: Das LC-Display benötigt zum Betrieb an 3,3 Volt einige Kondensatoren (1µF). Es müssen keine Elkos sein. Der Anschluss der Signale erfolgt nicht direkt, sondern über einen Level-Shifter an die angegebenen Arduino-Pins.

Ein schickes, grafikfähiges LC-Display soll das „Aushängeschild“ des Fieldday-Buddies sein. Neben mehreren Zeilen Text ist es wünschenswert, etwas Grafik anzeigen zu können. Geeignet und beliebt ist das EA-DOGM128 mit 128 x 64 Pixeln als monochromes Display. Es wird ohne Hintergrundbeleuchtung geliefert, diese wird separat – wählbar in verschiedenen Farben – geordert. Ich habe mich für das edel aussehende, bernsteinfarbene Modell entschieden. Bezug von LCD und Beleuchtung z. B. über [1]. Es sei erwähnt, dass mit nur einer kleinen Änderung im Programm (eine Zeile) die Möglichkeit besteht, aus einer langen Liste von Displays zu wählen. Der Grund dafür ist die Nutzung der sehr bekannten Grafik-Bibliothek von Oli Kraus mit der Bezeichnung U8G2. Sie unterstützt viele beliebte LC-Displays, die auf unterschiedliche Grafikprozessoren basieren [4]. Das alternative LCD sollte mindestens über 128 x 64 Pixel verfügen und über SPI ansprechbar sein. Letzteres ist nicht zwingend, U8G2 unterstützt neben SPI diverse LCD, die über I2C angesprochen werden.

Als GPS-Modul dient ein preiswertes Sirf-IV-Modul mit der Bezeichnung EM-506. Ohne weitere Programmierung desselben kann es benutzt werden. Es liefert zuverlässig GPS-Daten im NMEA-Format mit 4800 Baud und wird am Arduino Mega auf UART1 (Serial1) betrieben. Nur zwei Leitungen sind nötig, um das GPS-Modul mit dem Arduino zu verbinden: (EM-506) TX -> (Arduino) RX1 sowie GND. Es benötigt 5 Volt.


Bild 3: Der Taster liefert bei Betätigung einen Low-Pegel an den digitalen Eingang des Arduino.

Schließlich bleibt noch ein Taster, der am Arduino den Pin 6 (digitaler Pin 6) bei Betätigung auf Masse schaltet. Er dient dazu, von einer Funktion zur nächsten zu wechseln – schaltet also auf den nächsten Bildschirm um.


Bild 4: Praktisch: Level-Shifter mit SMD-Transistoren und einige SMD-Widerstände, bereits fertig montiert auf kleiner Platine im DIL14-Format.


Bild 5: So wird der Level-Shifter zwischen LC-Display und Arduino eingefügt.

Arduino Mega und EM-506 werkeln mit 5V, doch das DOGM128-LCD ist auf 3,3 Volt getrimmt. Damit es keinen Schaden nimmt, werden die Signale des Arduino über einen bidirektionalen Level-Shifter auf 3,3 Volt Pegel umgewandelt (und die 3,3 Volt-Pegel in 5 Volt in Richtung Arduino). Ich bevorzuge dazu eine Fertiglösung: Eine kleine Platine mit ein paar SMD-Transistoren im Format eines DIL14-Gehäuses ist für den Einsatz auf einem Steckbrett oder einer Lochrasterplatine gut geeignet [2].

Die Spannungsversorgung des GPS-Moduls, des LCD und des Tasters kann man gefahrlos dem Arduino Mega 2560 entnehmen. Dieser verfügt zu diesem Zweck über Spannungsausgänge von 5V und 3,3Volt. Der Arduino selbst wird wahlweise über das USB-Kabel mit Spannung versorgt oder über einen Batterie- oder Akkusatz mit einer Spannung von 6 – 12 Volt über die dafür vorgesehene Buchse.

Das Programm

Zyklisch sendet das GPS-Modul NMEA-Daten an den Arduino. Dieser nimmt sie in Empfang und extrahiert daraus Informationen wie Zeit, GPS-Koordinaten, Qualität des Empfangs, ungefähre Höhe über NN und einiges mehr. Aus den Koordinaten wird der Maidenhead QTH-Locator berechnet und im ersten Bildschirm angezeigt. Alternativ kann mit dem Taster auf eine Darstellung der analogen Uhr gewechselt werden (UTC). Die NCDXF-Baken senden nach festem Zeitschema, aus der aktuellen UTC-Zeit kann man die gerade sendenden Baken bestimmen und auf dem LCD anzeigen.


Bild 11: Mit Hilfe eines kleinen Windows-Programms wird über einen USB-Port des PC die Systemzeit synchronisiert. Es muss mit den Rechten eines Administrators gestartet werden, damit Erlaubnis besteht, die Systemzeit des PC zu verändern.

Zeigt das LCD den Bildschirm zur Zeitsynchronisation, schließt man den Fieldday-Buddy an einen USB-Port eines PC an, startet das Windows-Programm (Bild oben) und übernimmt mit einem Mausklick die UTC-Zeit auf dem PC, präziser ausgedrückt sind es nur die Minuten und Sekunden. Vorteil: Regionale Zeiteinstellungen in Windows wie die Sommer- oder Normalzeit bleiben dabei unverändert.

Den Arduino programmieren

Ist die Hardware vorbereitet und wurden alle Verbindungen sowie die korrekte Platzierung aller Kondensatoren rund um des LCD geprüft, kann man den Arduino Mega mit dem Programm des Fieldday-Buddies versehen. Das ist recht einfach: Man lädt zunächst die Arduino-IDE (Entwicklungsumgebung) von [3] auf den heimischen PC und startet die Installation. Danach gibt es auf dem Desktop ein neues Icon „Arduino“. Starten Sie nun die Arduino-Entwicklungsumgebung und öffnen Sie das Programm Fieldday-Buddy.ino. Im Menü Werkzeuge -> Board stellen Sie Arduino/Genuino Mega oder Mega2560 ein.


Bild 6: Programmieren des Arduino: Mit einem Klick auf das runde Pfeil-Symbol startet die Übertragung des Programms auf den Arduino Mega 2560.

Verbinden Sie nun den Arduino Mega mit dem PC mittels eines USB-Kabels. Windows erkennt die neue Hardware und erzeugt einen virtuellen, serieller Port. Ein paar Sekunden später wählen Sie dann im Menü Werkzeuge -> Port den virtuellen Com-Port des Mega aus. Unterhalb des Menüs sehen Sie die Funktionsleiste mit zwei runden Symbolen, das Symbol links kompiliert das Programm zur Überprüfung auf Fehler, das Pfeil-Rechts-Symbol daneben bringt das Programm auf den Arduino Mega. Das gelingt auch dem bisher nicht versierten Arduino-Anwender problemlos.


Bild 7: Der Bildschirm zeigt empfangene GPS-Daten und den ermittelten QTH-Locator.


Bild 8: Das LCD zeigt die auf den angegebenen Frequenzen sendenden Baken.


Bild 9: Als Gimmick zeigt dieser Bildschirm eine analoge UTC-Uhr.


Bild 10: Hier wird via USB-Kabel die aktuelle Zeit (Minuten und Sekunden) auf einen Windows-PC übertragen.

Hobbyprogrammierer mit ersten Arduino-Erfahrungen dürfen und sollen den Fieldday-Buddy nach eigenen Wünschen funktionell erweitern. Soll er zusätzlich als APRS-Bake dienen? Für den Arduino gibt es (auf Github) eine prima APRS-Bibliothek, die man dafür nutzen kann, ohne sich in die Bits und Bytes des AX25-Protokolls einarbeiten zu müssen. Sicher wird ihnen die eine oder andere weitere Anwendung für den Fieldday-Buddy einfallen – und diese vielleicht umsetzen. Der Arduino Mega2560 bietet ja Speicher genug.

Die Dateien zu diesem Projekt wie Abbildungen und das Arduino- und Windows-Programm finden Sie im Dowenload. Viel Spaß mit ihrem „kleinen Kumpel“.

Links:
[1] Bezug DOGM128 z.B. via Reichelt: reichelt.de
[2] Bezug Level-Shifter, z.B. via Watterott: watterott.com
[3] Arduino-IDE auf http://arduino.cc
[4] U8G2-Lib von Oli Kraus auf Github: https://github.com/olikraus/u8g2


sh2019


Download von Dateien zu diesem Projekt

Arduino-Programm, Windows-Software und weitere Bilder sowie weitere Dateien stehen zum Download bereit. Und hier geht es zum Download.