Motivation
Letztens bin ich einmal wieder über die HamClock von Elwood Downey gestolpert. Das ist ein unter Linux laufendes Programm für Amateurfunker (Ham radio = Amateurfunk, Ham = Schinken), welches viele sehr interessante und aktuelle Daten der Erde im Zusammenhang mit Sonne und Mond grafisch ansprechend visualisiert. Mit dem Programm ist es möglich eine Anzeigetafel zu bauen, die diese Daten zu Hause an einem über WiFi zugänglichen Ort präsentiert, so dass ich sie mir jederzeit ansehen kann. Gleichzeitig ist es ein hübscher Blickfang für den wissenschaftlich interessierten Betrachter. Was dabei möglich ist zeigt ein Anbieter, der dieses Programm auf einem Raspberry Pi fertig installiert in verschiedenen Holzrahmen anbietet.
Ich möchte hier nicht den Anschein erwecken als erster eine absolute Neuheit vorzustellen. HamClock wurde schon oft auf englisch- und deutschsprachigen Seiten oder in Videos auf Youtube vorgestellt. Da ich aber zur Realisierung der Anzeigetafel eine aktuell eher ungewöhnliche Kombination aus einem alten Raspberry Pi 2 Model B und einem recht kleinen 4.3 Zoll Display gewählt habe und bei der Implementierung auf einige Probleme gestoßen bin, dachte ich es hier auf meinem Blog vorzustellen, so dass die dabei gewonnenen Informationen für mich und andere schriftlich fixiert sind. Wer neben des Sonnenverlaufs, der Uhrzeit und dem Wetter auch alle anderen angebotenen Anzeigen für sich nutzen will, kommt um ein Kennenlernen der dahinter liegenden Mathematik und Physik nicht herum. Für mich ist die Anzeigetafel darum eine fortwährende Inspiration zum Erlernen der wissenschaftlichen Grundlagen dahinter.
Hier ist eine Liste der Hauptfunktionen von HamClock mit einer kurzen Erklärung des wissenschaftlichen Hintergrunds:
1. Lokale Zeit, Datum und Koordinaten (DE und DX Panel)
-
Die Ortszeit basiert auf den Prinzipien der Erdrotation und der geographischen Lage (Breiten- und Längengrad). Diese Faktoren beeinflussen, wann Sonnenauf- und -untergang an einem bestimmten Ort stattfinden. Die Koordinaten, insbesondere in Form von Grid Squares, nutzen das geographische Koordinatensystem, das auf der Kugelform der Erde basiert.
2. Sonnenauf- und -untergang
-
Diese Ereignisse hängen von der Erdrotation und der Neigung der Erdachse ab. Die Position der Sonne relativ zum Beobachtungsort ändert sich täglich und beeinflusst die Lichtverhältnisse und Temperaturen, was eine wichtige Rolle für die tägliche Meteorologie und die Planung von Funkverbindungen spielt.
3. Satellitenanzeige
-
Hier wird die Himmelsmechanik angewendet, um die Umlaufbahnen von Satelliten um die Erde zu berechnen. Die Elevation (Höhe des Satelliten über dem Horizont) und der Azimut (die Himmelsrichtung) bestimmen, wann ein Satellit für einen Beobachter sichtbar ist. Diese Berechnungen basieren auf Newtons Gesetzen der Bewegung.
4. HF-Funkwellen (DX-Pfad und VOACAP)
-
Die Funkwellen werden durch die Ionosphäre der Erde reflektiert, wodurch sie über große Entfernungen übertragen werden können. Dies nutzt das Konzept der Wellenausbreitung und elektromagnetischen Wellen. VOACAP berechnet die Wahrscheinlichkeit von Funkverbindungen basierend auf der Sonnenaktivität und der aktuellen Beschaffenheit der Ionosphäre.
5. Umweltdaten (Temperatur, Luftfeuchtigkeit, Druck)
-
Diese Werte stammen von Sensoren (z. B. BME280) oder einem Internet Wetterdienst und basieren auf den physikalischen Prinzipien der Thermodynamik und des Gasgesetzes. Temperatur und Luftdruck sind wichtige meteorologische Größen, die direkt mit der Wetterentwicklung zusammenhängen.
6. Weltraumwetter (Space Wx)
-
Das Weltraumwetter beschreibt die Bedingungen im erdnahen Weltraum, die durch Sonnenaktivität beeinflusst werden. Sonnenstürme und geomagnetische Störungen, verursacht durch Sonneneruptionen und den Sonnenwind, können die Erde und die Ionosphäre beeinflussen, was die Funkwellenübertragung stört. Diese Phänomene werden durch die Astrophysik untersucht.
7. Magnetfeld (Bz/Bt)
-
Das Magnetfeld der Erde schützt uns vor kosmischer Strahlung. Bz und Bt beschreiben die Komponenten des interplanetaren Magnetfelds, das durch Sonnenwinde gestört wird. Wenn das Erdmagnetfeld geschwächt ist, wie bei negativen Bz-Werten, kann das Funkwellen und sogar Satelliten beeinflussen.
8. Solarfluss und Sonnenflecken
-
Der Solarfluss misst die Intensität der Sonnenstrahlung bei einer Wellenlänge von 10,7 cm, was als Indikator für Sonnenaktivität dient. Sonnenflecken sind Bereiche auf der Sonnenoberfläche mit starker Magnetaktivität, die direkte Auswirkungen auf das Weltraumwetter und die Funkwellenausbreitung haben.
9. Satellitenüberwachung und Bahndaten
-
Die Berechnung von Satellitenbahnen nutzt die Gravitation der Erde und Himmelsmechanik, um vorherzusagen, wann ein Satellit für einen Beobachter sichtbar ist. Diese Berechnungen beruhen auf den Keplerschen Gesetzen der Planetenbewegung und der Orbitalmechanik.
10. DRAP-Karte (HF-Absorption)
-
DRAP steht für „D Region Absorption Prediction“ und beschreibt die Absorption von Funkwellen durch die D-Schicht der Ionosphäre während intensiver Sonnenaktivität. Die Ionosphäre ist ein ionisiertes Gas, das durch Sonnenstrahlung verändert wird, wodurch Funkwellen reflektiert oder absorbiert werden.
11. Mondphasen und Mondaufgang/-untergang
-
Die Phasen des Mondes und seine Position am Himmel resultieren aus der Bewegung des Mondes um die Erde und seiner Beleuchtung durch die Sonne. Diese Bewegung wird durch die Gezeitenkräfte zwischen Erde und Mond bestimmt und beeinflusst verschiedene natürliche Phänomene, einschließlich der Gezeiten auf der Erde.
12. Rotatorsteuerung (Azimut/Elevation)
-
Diese Funktion steuert die Ausrichtung einer Antenne, um präzise auf ein Signal zu zielen. Die Berechnung des Azimuts und der Elevation erfolgt nach den Prinzipien der sphärischen Trigonometrie, um Himmelsobjekte wie Satelliten oder Funkziele zu verfolgen.
13. VOACAP-Funkprognosen
-
Die VOACAP-Prognosen verwenden komplexe Modelle der Ionosphäre, um die Zuverlässigkeit von Funkverbindungen zu berechnen. Die Modelle beruhen auf physikalischen Eigenschaften wie der Strahlenbrechung und -reflexion in der Ionosphäre, die von der Sonnenaktivität abhängt.
14. Aurora-Anzeige
-
Polarlichter entstehen, wenn geladene Teilchen aus dem Sonnenwind auf das Magnetfeld der Erde treffen und in die oberen Schichten der Erdatmosphäre eindringen. Diese Prozesse gehören zur Magnetosphärenphysik und zeigen die Interaktion zwischen der Sonne und dem Erdmagnetfeld.
Diese Funktionen bieten nicht nur spannende Möglichkeiten für Amateurfunker, sondern auch eine großartige Gelegenheit, die dahinter stehenden physikalischen und wissenschaftlichen Prinzipien zu erkunden. Es verbindet Funktechnik, Astronomie, Meteorologie und Elektromagnetismus auf faszinierende Weise!
Implementierung
Auf AliExpress entdeckte ich ein 4.3 Zoll Touch-Display, welches ich mit Gehäuse für 37,19 Euro kaufte. Eigentlich ist das Display für den gedachten Anwendungszweck zu klein, aber ich mag es so auf meinem Schreibtisch stehend!
Zu Hause habe ich noch verschiedene Raspberry Pi Model 2 herum liegen, von denen ich einen für dieses Projekt verwendet habe.
Da HamClock einige Daten aus dem Internet holt, ist ein WiFi Stick unabdingbar. Auch so einen (TP-Link TL-WN823N) hatte ich noch bei mir herum liegen.
Die erste Hürde stellte für mich das zu verwendende Betriebssystem dar. Zuerst versuchte ich es mit dem ‚Raspberry Pi OS with desktop‘ (Bookworm). Ich lud es herunter und schrieb es mit dem Raspberry Pi Imager auf eine microSD Karte. Idealerweise gebt Ihr kurz vor dem Flashen noch Eure WLAN Zugangsdaten ein, denn dann könnt Ihr später ohne externen Monitor, Tastatur und Maus auf den Raspberry Pi zugreifen. Die microSd Karte steckte ich in den Raspberry Pi 2B und versorgte ihn mit Strom aus meinem USB Hub. Leider wurde das Display nicht richtig aktiviert. Dafür funktionierte aber der WiFi Stick einwandfrei und ich konnte mit Putty auf den RasPi zugreifen und weitere Konfigurationsarbeiten durchführen. Aber ich bekam das Display nicht zum Laufen. Dabei bemühte ich das Internet aber auch ChatGPT (4o) und versuchte zahllose Lösungsvorschläge.
Als mir das zu viel wurde probierte ich ‚Raspberry Pi OS (Legacy) with desktop’ (Bullseye) aus. Diesmal funktionierte das Display auf Anhieb, jedoch bekam ich jetzt das WiFi mit meinem WLAN Stick nicht zum Laufen! Auch hier probierte ich eine ganze Weile herum bis ich schließlich entnervt aufgab und einen ganzen Tag verstreichen lies, bevor ich mich wieder mit dem Thema beschäftigte. Einen Tag später entschied ich mich doch mit dem zuerst probierten ‚Bookwork‘ weiter zu machen. Immerhin wusste ich jetzt dass das Display grundsätzlich laufen muss! Mir erschien es leichter mit einem funktionierenden WiFi das Display zum Laufen zu bringen als umgekehrt ohne WiFi mit einer Mäusetastatur das Display zum Laufen zubringen. Denn über Putty ist es leicht möglich die vielen im Internet stehenden Lösungsideen per Copy-and-Paste auszuprobieren.
Die Lösung war schließlich relativ einfach. Einfach ein Terminalfenster öffnen und mit:
sudo nano /boot/firmware/config.txt
den Nano Editor aufrufen und diese Zeile:
dtoverlay=vc4-kms-v3d
durch ein ‚f‘ ergänzen:
dtoverlay=vc4-fkms-v3d
Mit [Strg-O] speichern und mit [Strg-X] den Nano Editor beenden.
Dadurch kommt der Fake KMS Treiber zum Einsatz:
Der FKMS-Treiber (Fake KMS) unter Linux steht für „Fake Kernel Mode Setting“. Es ist eine Übergangslösung, die in erster Linie auf dem Raspberry Pi verwendet wird, um den alten proprietären Videotreiber (der auf dem sogenannten „legacy“ Mode basiert) zu unterstützen, während trotzdem einige der Vorteile des moderneren KMS-Systems genutzt werden.
Jetzt mit:
sudo reboot
neu booten und schon funktioniert das Display als auch das WiFi!
Aber es gab noch ein Problem welches mich abermals einige graue Haare kostete. Touchte ich mit dem Finger auf das Display erschien der Mauszeiger einige Zentimeter nach rechts verschoben. So konnte ich Linux und vor allem HamClock natürlich nicht verwenden. Nach abermaligen längerem Recherchieren und viel Ausprobieren fand ich aber auch dafür eine Lösung. Das Display muss kalibriert werden. Dazu mit:
sudo mkdir -p /etc/X11/xorg.conf.d/
ein Verzeichnis anlegen und mit:
sudo nano /etc/X11/xorg.conf.d/99-calibration.conf
eine Datei anlegen und gleichzeitig öffnen. In diese Datei muss folgendes eingegeben werden:
Section "InputClass" Identifier "calibration" MatchProduct "raspberrypi-ts" Option "TransformationMatrix" "0.52 0 0 0 1 0 0 0 1" # Matrix für keine Verzerrung EndSection
Wieder mit [Strg-O] speichern und mit [Strg-X] den Nano Editor beenden.
Die Zahlenreihe im Text nennt sich Transformationsmatrix und hat folgende Bedeutung:
[ scaleX shearX offsetX ] [ shearY scaleY offsetY ] [ 0 0 1 ]
Ein erneutes Booten lässt dann den Mauszeiger dort erscheinen, wo auch der Finger hin getippt hat.
Um ein Deaktivieren des Displays zu vermeiden kann man mit ‚sudo raspi-config‘ unter Display Options -> D2 Screen Blanking’ das Deaktivieren abschalten. Damit ist der RasPi jetzt soweit fertig für die Installation von HamClock:
cd curl -O https://www.clearskyinstitute.com/ham/HamClock/install-hc-rpi chmod u+x install-hc-rpi ./install-hc-rpi
Das dauert dann ein paar Minuten…
Am Ende wird man noch gefragt, ob HamClock und das Manual auf dem Desktop einen Link bekommen und ob HamClock automatisch gestartet werden soll.
Mit nachfolgenden Zeilen ist es möglich ein Programm inklusive eines Menüpunkts zu installieren, mit dem die Hintergrundbeleuchtung geregelt werden kann.
wget https://files.waveshare.com/upload/f/f4/Brightness.zip unzip Brightness.zip cd Brightness sudo chmod +x install.sh ./install.sh
Die Helligkeit lässt sich auch im Terminal ändern:
echo X | tee /sys/class/backlight/*/brightness
Das X durch einen Wert zwischen 0 und 255 ersetzen.
Aber am einfachsten geht es mit HamClock selbst. Wenn man die beim Start durch Touchen aufzurufende Einstellungsseite aufruft und auf ‚<Page4>‘ geht, gibt es dort die Einstellung ‚Max%‘, mit der man die Helligkeit prozentual einstellen kann!
Ich habe den Raspberry Pi an meinem USB Hub laufen und da scheint die Spannung bzw. der Strom nicht auszureichen. Darum erscheint ständig der gelbe Blitz und die ‚Low voltage‘-Warnung, obwohl eigentlich meistens alles funktioniert. Um die beiden Dinge zu deaktivieren ist es möglich mit:
sudo nano /boot/firmware/config.txt
am Ende die Zeile:
avoid_warnings=2
einzufügen.