MyAWOS

[Automated Weather Observing System]

von Dennis Cox und Johann Wiesheu, Nov. 2022

Nachdem nun endlich „Fliegen ohne Flugleiter“ in Deutschland möglich ist, kann es vorkommen, dass sich keine „fachkundige“ Person am Flugplatz befindet, die Empfehlungen zur Landung per Funk geben kann.

Die Lösung: Ein AWOS System

Entweder als sehr teures professionelles Kaufgerät oder als kostengünstige DIY-Lösung mit einer lokalen Wetterstation (mit Internetanbindung), einem (evtl. vorhandenem) Funkgerät, einem Raspberry Pi Computer (rPi) und einem Arduino Prozessor, sowie etwas Geschick.

 

Die Basis dafür stammt von Dennis Cox. Ich habe mir erlaubt, das System etwas zu optimieren: Anbindung einer vorhandenen Ecowitt Wetterstation, online Sprachumwandlung per gTTS, Kommandozeilen Parameter, Steuerung des Triggerlevels am Arduino per serieller Schnittstelle vom rPi, RTS/CTS Steuersignale, 3-, 5- 7 Klickerkennung und einiges mehr.

Die Bauanleitung und der Source Code ist auf der Webseite von Dennis Cox zu finden: https://www.myawos.com/.

So funktioniert es:

Der Raspberry Pi holt sich regelmäßig Wetterdaten von der Wetterstation und wandelt diese in eine Audiodatei um. Das kann mit einer computergenerierten Stimme in mehreren Sprachen geschehen oder per eigener Stimmaufzeichnung. Der Lautsprecher des Funkgerätes ist mit einem Analog-Eingang des Arduinos verbunden. Der Arduino zählt die Anzahl von Klicks binnen einer vorgegebenen Zeit von z.B. 5 Sekunden und informiert den rPi darüber. Dieser führt die gewünschte Aktion aus und spielt z.B. bei 5 Klicks das aktuelle Wetter über seinen Audio-Ausgang (welcher mit dem MIC -Eingang des Funkgerätes verbunden ist) ab.

Es können mehrere Aktionen für die Anzahl der erkannten Klicks konfiguriert werden. Wenn Sie z. B. nur den Wind prüfen möchten, können Sie dies mit 5 Klicks tun und das vollständige Wetter mit 7 Klicks abrufen. Mein System aktiviert bei 3 Klicks eine Ampel/Blitzlicht (via funkferngesteuerter Schaltsteckdose), die die Benutzer eines Feldweges am Flugplatz über Flugaktivität informiert.

Aktuell ist das System angepasst für Yaesu und Icom Handfunksprechgeräte. Demnächst erfolgt die Adaption für ein KRT2 Funkgerät (CoPilot). Als Wetterstation dient eine Ecowitt Wetterstation mit Internet-Anbindung und API.

 

Ein wesentliches Problem bei der Umsetzung im Zusammenhang mit einem alten Icom Handfunkgerät sind die von Klick zu Klick stark unterschiedlichen Signalpegel am Lautsprecher-Ausgang. So muss geeignetes Trigger-Level zur Erkennung der Klicks gefunden werden. Erschwerend kommt hinzu, dass die fallende Flanke eines Klicks nur sehr langsam abfällt und dabei evtl. die Triggerschwelle vor Eintreffen des nächsten Klicks noch nicht unterschritten wurde.

 

Das Urheberrecht für MyAWOS liegt bei Dennis Cox. Sie dürfen den Code und die Dokumentation nach eigenem Ermessen verwenden, solange Sie sich darüber im Klaren sind, dass alle Rechte vorbehalten sind und Sie das Produkt nicht weiterverkaufen oder den Code in einem anderen Produkt ohne schriftliche Genehmigung von Dennis Cox und/oder Johann Wiesheu verwenden dürfen. Wir übernehmen keine Gewähr, dass der Aufbau in Ihrer Umgebung erwartungsgemäß funktioniert und haften nicht für eventuelle Störungen.

 

MyAWOS 2.0

Eine weitere Optimierung stellt der Ersatz des Arduino Controllers durch einen Adafruit ADS1115 A/D Wandler direkt am rPi dar. Durch den Wegfall des Arduinos wird der Aufbau wesentlich vereinfacht. In diesem Fall erkennt der rPi die Klick-Signale am Funkgerät und führt wie oben erwähnt die gewünschten Aktivitäten aus. Eine Flankenerkennung verbessert die Trennschärfe der einzelnen Klicks. Ein weiterer Fortschritt ist die gänzlich umgestaltete Übersetzung von Text in Sprache ein einem Python Modul und lokale Sprachbibliotheken. Das Messaging Modul sendet Informationen und Nachrichten an ein optionales OLED-Display oder an einen Email-Empfänger. Verschiedene LEDs informieren über den aktuellen Status. Ergänzt wurde einen 433 MHz Sender und -Empfänger zur Steuerung einer Ampel/Blitzlicht (via funkferngesteuerter Schaltsteckdose), die die Anrainer bei der Benutzung eines Feldweges am Platz bei Flugbetrieb warnt.
Die PTT-Taste des Funkgerätes wird nicht über ein mechanisches Relais bedient, sondern durch ein Solid State Relais (AQY211EH), welches nicht mehr klemmen kann.

Der Source-Code und weitere Dokumentation von MyAWOS2.0 steht als Version 2 auf Dennis‘ Seite bzw. Github repository zur Verfügung.

    in action

Erforderliche Teile:

Wetterstation mit Ecowitt API
(z.B. Ventus W830 Pro Wifi)

ca. 140 € (besser ist eine Davis Wetterstation mit LAN Schnittstelle)

Raspberry Pi3B oder Pi4B

ca. 45 – 70 €, momentan kaum verfügbar und teuer

SD-Karte 32GB

ca. 8 €

ADS1115 A/D Wandler

ca. 5 €

Gehäuse

ca. 15 €

OLED (nicht erforderlich)

ca. 8 €

Kleinteile und Kabel

ca. 8 €

und natürlich ein Funkgerät

z.B. Yaesu FTA250 für ca. 250 € oder vorhandenes

 

Wir wünschen viel Spaß beim Aufbau und würden uns über Feedback freuen - noch mehr, wenn dieses AWOS System an einem Fluplatz eingesetzt wird!

 

Das Urheberrecht für MyAWOS 2.0 liegt bei Dennis Cox und Johann Wiesheu. Sie dürfen den Code und die Dokumentation nach eigenem Ermessen verwenden, solange Sie sich darüber im Klaren sind, dass alle Rechte vorbehalten sind und Sie das Produkt nicht weiterverkaufen oder den Code in einem anderen Produkt ohne schriftliche Genehmigung von Dennis Cox und/oder Johann Wiesheu verwenden dürfen. Wir übernehmen keine Gewähr, dass der Aufbau in Ihrer Umgebung erwartungsgemäß funktioniert und haften nicht für eventuelle Störungen.

 

MyAWOS 4.0

Reduziert auf das Minimum: Der rPi wertet das Vorhandensein eines Trägersignals aus - digital.

Der elektrische Aufbau wird mit dem Ersatz des ADS1115 A/D Wandlers durch den 1-bit A/D Wandler LM393 erheblich reduziert. Der LM393 ist ein Komperator und vergleicht zwei Eingangssignale (Referenz-Spannungspegel und das zu prüfende Lautsprechersignal) und gibt bei Überschreiten der Referenzspannung den Spannungspegel der Versorgungsspannung Vss am Ausgang aus. Am GPIO Eingang des rPi müssen diese Pulse nur noch gezählt werden.
In diesem Aufbau wurde eine weitere Herausforderung gemeistert: Als Funkgerät soll das bei uns am Flugplatz verwendeten Einbaufunkgerätes KRT2 (Copiloten Seite) verwendet werden. Besonders dabei ist der am Speaker+ Ausgang abzugreifende Signalpegel. Dieser beträgt 6 bis 8 Volt und ist LOW-Aktiv. D.H. bei einem empfangenen Signal sinkt dieser Pegel auf ca. 3 Volt ab. Auch musste der Schutzwiderstand im Stromkreis der PTT Taste entfallen, da am KRT2 ein höherer Strom zur Aktivierung von PTT erforderlich ist.
Der Source-Code wurde auf ein Minimum reduziert. Der Code des Click_Listeners wurde im Kern neu erstellt und enthält ebenfalls eine Flankenerkennung. Längere Klicks/Funksprüche (>1 sec.) werden ignoriert. Neu ist die Option, dass das zu erkennende Signal auch LOW-aktiv sein kann. Das Wetter-Modul aus der Version 2 wurde optimiert, so dass der Wetterabruf und die Transcodierung als Python Funktion aus dem Click-Listener heraus aufrufbar sind. Weiterhin verbaut bleibt der 433 MHz Sender und -Empfänger zur Steuerung einer Ampel. Sobald im nächsten Winter Zeit ist, werden all die Erweiterungen aus der Version 2 ergänzt.
Im Labor wurde der 1-bit-A/D Wandler diskret auf einem Breadboard aufgebaut. Folgende Schaltung wurde erfolgreich getestet:

In der Produktionsumgebung ist momentan ein „ready to use“ LM393 Modul eingesetzt, das es für 2 bis 3 Euro zu kaufen gibt:

Da der zu erfassende Signalpegel sehr viel höher ist als 5 Volt und auch die Referenzspannung bei ca. 4,5 Volt liegt, ist die Versorgung des LM393 mit der am rPi verfügbaren Spannung von 5 V nicht ausreichend. Weil am KRT2 12 Volt zur Verfügung stehen und das LM393 Modul für eine Versorgungspannung von bis zu 24 Volt ausgelegt ist, kann einfach diese Versorgungsspannung verwendet werden. Dabei ist allerdings zu beachten, dass das Ausgangssignal des LM393 der Versorgungsspannung (also 12 Volt) entspricht. Eine Spannung von mehr als 3,3 Volt am GPIO-Eingang des rPi kann diesen beschädigen oder zerstören. Ein einfacher Spannungsteiler, der die Eingangsspannung am GPIO auf z.B. 2,5 bis 3 Volt begrenzt schützt den Raspberry. Nun muss nur noch die invertierte Signallage (LOW-Aktiv) entweder am Source-Code oder durch einen weiteren, invertierenden LM393 Baustein angepasst werden.

Der Aufbau gestaltet sich wie folgt:

     

Mein Gerät wurde um den zusätzlichen digitalen Eingang erweitert:

In der aktuellen Konfiguration sind folgende Aktionen definiert:

·         7 Klicks: Wetteransage komplett

·         5 Klicks: Ampel ROT für 200 Sekunden

·         3 Klicks Ansage der aktuellen Windverhältnisse

Während der Rotphase der Ampel reagiert das System nicht auf weitere Klicks

Der Source-Code und weitere Dokumentation von MyAWOS4.0 steht als Version 4 (v4) auf Dennis‘ Seite bzw. Github repository zur Verfügung.

 

Das Urheberrecht für MyAWOS 4.0 liegt bei Dennis Cox und Johann Wiesheu. Sie dürfen den Code und die Dokumentation nach eigenem Ermessen verwenden, solange Sie sich darüber im Klaren sind, dass alle Rechte vorbehalten sind und Sie das Produkt nicht weiterverkaufen oder den Code in einem anderen Produkt ohne schriftliche Genehmigung von Dennis Cox und/oder Johann Wiesheu verwenden dürfen. Wir übernehmen keine Gewähr, dass der Aufbau in Ihrer Umgebung erwartungsgemäß funktioniert und haften nicht für eventuelle Störungen.


MyAWOS 6.0

In der Version 6.0 werden die Vorzüge der Version 2 (Ansteuerung OLED Display und Email-Versand mit der im Feld sehr gut funktionierenden Minimal-Version 4 vereint.
Zusätzlich wurde die Kommunikation zwischen dem click_listener Modul und dem Messenger-Modul umgebaut und auf der Basis MQTT realisiert. Ein MQTT Broker erlaub jetzt den Datenaustausch zwischen verschiedenen Modulen, sogar Standortübergreifend. Dies erlaub auch den Einsatz einer MQTT fähigen Steckdose (smart plug), welche sich am MQTT-Broker anmeldet und angesteuert wird, bzw. dort ihren Status abliefert. Der Verkabelungsaufwand wird dadurch erheblich verringert: die RF433 Sender und Empfänger am rPi können entfallen.
Der bisherige (Queue basierende) Messaging Modul wurde durch den mqtt_messenger.py ersetzt. Die Module zum email Versand und Ansteuerung des OLED Displays werden weiterverwendet.

Es wurde eine neue Option zur Aufnahme des Startlogs (Flugplatzkladde) ergänzt, welche bei 6 Klicks die Startmeldung des Piloten aufnimmt und per email versendet. Diese Opiton ist noch experimental.

Ein paar kleine Hürden gab es beim neuen Aufbau zu überwinden:
Die am rPi standardmäßig installiert und konfigurierte Firewall „firewalld“ verhinderte die Verbindung der smarten Steckdose am Port 1883. Die Firewall wurde durch UFW ersetzt und benötigte Regeln für TCP 22 und TCP1883 igres konfiguriert.


 

MyAWOS-SDR

MyAWOS v10

Mein AWOS-Projekt hat sich inzwischen deutlich weiterentwickelt und ist erheblich gewachsen. Aktuell sind folgende Funktionen über Click implementiert:

Hardware & Infrastruktur

Der Click-Empfänger läuft mittlerweile in einer VM unter Ubuntu Linux (zur not reicht ein altes Notebook mit Linux). Zur Erkennung der Clicks wird inzwischen nicht mehr der Lautsprecherausgang des Funkgerätes in Kombination mit einem Ein-Bit-A/D-Wandler verwendet.
Stattdessen wird das Trägersignal direkt über einen SDR-Empfänger (USB) detektiert. Dies ermöglicht eine deutlich zuverlässigere und sauberere Erkennung der PTT-Signale, unabhängig von der Audio-Ausgabe des Funkgerätes.

Als Relais für den PTT-Taster kommt ein Shelly Uni Plus zum Einsatz.

Auf derselben VM ist auch ein ADS-B-Empfänger aktiv, der einen Geofence rund um unseren Flugplatz überwacht.

 

Geofence um den Flugplatz

Sobald ein am Platz stationiertes Flugzeug (Rufzeichen, ADS-B Signal) in den überwachten Bereich einfliegt, passiert Folgendes automatisch:

  1. Die Ampel, die den Feldweg über die Piste absperrt, wird aktiviert.
  2. Der große Mähroboter, der sich permanent auf der Piste befindet, wird zur Ladestation zurückgeschickt.

Auch der Rasenmäher lässt sich manuell per Klick über meinen Click-Empfänger vom Platz verweisen.
Beide Funktionen sind in Betrieb in einer Ubuntu VM mit ADS-B Decoder und funktionieren sehr zuverlässig.

 

Smart-Home-Integration

Auf einer weiteren VM-Instanz läuft Home Assistant, das die gesamte Infrastruktur am Flugplatz steuert:

Home Assistant bietet zudem eine komfortable Smartphone-App für die mobile Steuerung.
Natürlich kann die Ampel und alle anderen Kontakte auch mit der HA App bzw. dem Web-Interface davon oder sogar zu Not mit der Cloud Oberfläche von Shelly alleine gesteuert werden.

 

Nächste Schritte

Aktuell arbeite ich an der Spracherkennung, um das System noch intuitiver bedienbar zu machen.

 

Englisch:

My AWOS Project – Current Status

during last month, my AWOS project has matured and grown significantly. The following functions are currently implemented via Click:

Hardware & Infrastructure

The Click listener is now running in a VM under Ubuntu Linux. Click detection no longer relies on the radio's speaker output combined with a one-bit A/D converter. Instead, the carrier signal is detected directly via an SDR receiver (USB). This enables significantly more reliable and cleaner detection of PTT signals, independent of the radio's audio output.

A Shelly Uni Plus is used as a relay for the PTT button.

An ADS-B receiver is also running on the same VM, monitoring a geofence around our airfield.

Airfield Automation

As soon as an aircraft stationed at the local airfield enters the monitored area, the following happens automatically:

  1. The traffic light blocking the dirt road across the runway is activated.
  2. The large robotic lawn mower, which is permanently on the runway, is sent back to the charging station.

This automation can also be triggered manually via a click through the Click listener.

Smart Home Integration

Home Assistant is running on a separate VM instance, controlling the entire infrastructure at the airfield:

Home Assistant also offers a convenient smartphone app for mobile control.

Next Steps

Speech recognition is currently in development to make the system even more intuitive to operate.