Aufbauend auf den Test-Aufbauten mit dem Arduino, die hier beschrieben sind, habe ich Leiterplatten für Avionics-Panel entwickelt. Das Panel ist nur 50 x 80 mm groß.
Hier ist der Systemaufbau dargestellt.
Das Panel wird über Ethernet mit dem FS-PC verbunden. Der Arduino-Sketch verarbeitet die Taster-/Drehgeber-Ereignisse, die über UDP (Ethernet) zu einer Schnittstellensoftware auf dem PC übertragen werden, der hieraus FS-Kommandos generiert. Die aktualisierten Variablen werden an das Arduino-Panel übertragen und dort auf dem LC-Display angezeigt. Als Kommunikationssoftware kommen SimConnect-Clients für MSFS (FSX, FS2020) und P3D sowie X-Plane-Plugins für X-Plane zum Einsatz. Weitere Software ist für den Betrieb der Panel nicht notwendig.
Für den Erwerb von Hardware und der Kommunikationssoftware kontaktieren Sie mich bitte per E-Mail. Die Hex-Files und Arduino-Quellen sind für Selbstbauprojekte ebenfalls auf Anfrage erhältich.
Für die Programmierung des Arduino wird ein USB-Seriell-Adapter wie z.B. dieser benötigt.
Die Leiterplatte wird bestückt mit Tastern und einem Drehimpulsgeber. Weiterhin werden handelsüblichen Module mit der Leiterplatte verbunden. Durch den relativ einfachen Aufbau und die freie Verfügbarkeit der Leiterplatte ist das Modul auch für der Selbstbau geeignet. Es wird bei der bevorzugten Bestückung dieser Baugruppe keine SMD-Bestückung verwendet.
An die Leiterplatte können zwei unterschiedliche Ethernetmodule angeschlossen werden. Beim ENC28J60 muss der Arduino den IP-Stack in Software verwenden, was deutlich mehr Ressourcen benötigt. Außerdem wird für die gefundenen Module der 3,3V-Regler benötigt. Dem WizNET-Moduls W5500 ist deswegen der Vorzug zu geben:
Es besteht die Möglichkeit einen preiswerten Drehimpulsgeber mit einer Achse zu bestücken, mit dem dann mit einem Druck auf die Drehgeberachse zwischen Vor- und Nachkommastelle umgeschaltet wird. Die andere Möglichkeit ist die Bestückung eines deutlich teureren Drehimpulsgebers mit zwei Wellen. Problematisch ist das Finden von geeigneten Knöpfen dafür. In der Stückliste ist eine Quelle für 3D-Druckdaten eines geeigneten Knopf-Paares aufgeführt.
Für beide Varianten wird jeweils ein separater Sketch verwendet. Die Kennung, die beim Verbindungsaufbau gesendet wird, kann dann im Client/Plugin ausgewertet werden.
alternative Bestückung, nicht für Dual-Encoder verwendbar, nicht empfohlen:
Die Spannungsversorgung (+5V) erfolgt über eine Mini-USB-Buchse J4 oder über die Stiftleiste des Arduino Pro Mini.
Die Bestandteile und die Entwicklung des Panels sind hier beschrieben.
Bei dieser Variante ist der ATmega328 auf der Leiterplatte integriert. Die Anschlussbelegung entspricht dem Arduino Pro Mini, 5V, 16MHz. Zusätzlich sind die Taster und der Drehimpulsgeber auf der Leiterplatte enthalten.
Schaltplan
Bestückung
Stückliste
Diese Leiterplatten-Variante wird wegen der SMD-Bestückung und Erstprogrammierung des IC nur bei der Version für die programmierte Baugruppe eingesetzt.
Es stehen auch rote LC-Displays und OLED-Displays in ähnlicher Bauform zur Verfügung. Der I²C-zu-Parallel-Wandler muss jeweils separat beschafft und montiert werden. Bei den roten LC-Displays ist der Blickwinkel jedoch nicht sehr groß, der Kontrast nimmt dabei ab, die OLEDs sind sehr gut lesbar, bei der Ansteuerung aber etwas anders, insbesondere die Initialisierung. Die OLED-Displays sind deutlich preisintensiver.
In eine Acrylplatte wurden M2,5 Stehbolzen eingesetzt, an die die Leiterplatte montiert wird.
Frontplatte
Auf die Acrylplatte wurde eine Abdeckung aus Fotopapier geklebt.
Abdeckung
Aufbauend auf dem Avionics-Panel der Variante 2 wurde dieses um eine zweite Anzeige, drei Taster und einen Encoder erweitert. Damit kann man mit dem NAVCOM-Panel die COM-Frequenzen und die NAV-Funktionen einstellen bzw. anzeigen. Der ATmega328 ist auf der Leiterplatte integriert.
Die Funktionen entsprechen den NAV- und COM-Einzelanzeigen, es ist jedoch nur ein Netzwerkanschluss notwendig. Die Modis sind unten beschrieben.
Es sind zwei Funktions-Versionen möglich, COM1 und NAV1 oder COM2 und NAV2. Die Funktion kann beim Einschalten/Booten durch Festhalten einer der beiden SWAP-Tasten <
-
>
umprogrammiert werden.
Leiterplatte
Schaltplan
Bestückungsplan
Stückliste
Für die Version mit Dual-Encoder reichen die Eingänge des Arduino nur noch für den Anschluss von 4 Tasten, das sind dann die beiden Swap-Tasten, beim NAV die Mode-Taste und der Push-Button am Drehimpulsgeber. Für diese Version habe ich auch LC-Displays mit rotem Hintergrund verwendet. Diese Displays haben einen eingeschränkten Sichtwinkel. Der Kontrast nimmt deutlich ab. Aber es sieht realistischer aus. Alles wurde an eine Acryl-Frontplatte montiert, auf welche dann ein bedrucktes Fotopapier geklebt wurde.
Eine Variante mit rotem OLED-Display ist möglich.
Schaltplan
Bestückungsplan
Stückliste
Das Multi-Funktions-Panel vereint sechs Funktionen, die mit dem oben beschriebenen Avionics-Modul möglich sind. Mit den Tasten an der Seite kann zwischen den Funktionen gewechselt werden. Es stehen die Funktionen COM1, COM2, NAV1, NAV2, ADF und XPDR zur Verfügung.
Ich habe versucht, die Funktionen mit dem Flugsimulator zu synchronisieren, aber diese Kommandos werden oft nicht vom Entwickler der Flugzeug-Panel unterstützt.
Die Modis sind unten beschrieben.
Das Prinzip ist das gleiche wie bei den oben beschriebenen Avionics-Modulen. Auf der Trägerplatte befindet sich eine Fassung für den Arduino Pro Mini. LCD und Ethernetmodul werden an Stiftleisten angeschlossen.
Nur das Ethernet-Modul WIZnet W5500 wird unterstützt.
Die Spannungsversorgung (+5V) erfolgt über eine Mini-USB-Buchse J4 oder über den Arduino-Steckverbinder.
Schaltplan
Bestückung
Shared PCB bei Aisler
Stückliste
Beispiel mit Frontplatte
Für den abgebildeten Aufbau wurde eine schwarze Acryl-Platte mit Laser bearbeitet. In die Platte wurden sechs 2,5 mm Stehbolzen eingesetzt, an die die Leiterplatten montiert werden.
Frontplatte
Auf die Acryl-Platte wird eine Abdeckung aus Fotopapier geklebt.
Abdeckung
Wie bereits bei den Avionics Modulen erfolgte auch hier eine Integration des ATmega328 auf der Leiterplatte. Diese Variante bei der Version für die programmierte Baugruppe eingesetzt
Schaltplan
Bestückung
Stückliste
Auch hier ist eine OLED-Version mit Dual-Encoder möglich.
Dies ist eine experimentelle Entwicklung
Diese Variante hat das gleiche Design, wie die oben beschriebene erste Variante, wird aber nicht von einem Arduino-Pro-Mini angesteuert, sondern als Prozessor dient der ESP8266. Dieser enthält ein WIFI-Modul mit komplettem IP-Stack. Die Programmierung erfolgt weiterhin über die Arduino-Oberfläche, die ESP-Hardware kann ergänzt werden. Grundlegendes dazu ist hier beschrieben.
Das WeMos-D1-Mini-Modul enthält einen USB-Seriell-Wandler und kann somit direkt an den PC angeschlossen und aus der Oberfläche programmiert werden.
Das Programm konnte bei fest einprogrammierter SSID/Kennwort fast vollständig übernommen werden nur durch den Austausch von Bibliotheken und Anpassung der Ports.
Größere Änderungen grachte die Ünterstützung von WPS mit sich. Mit dieser Funktion handeln der Router (muss WPS unterstützen) und das Gerät innerhalb eines kurzen Zeitraumes nach dem Drücken des WPS-Knopfes am Router und dann des WPS-Knopfes am Gerät die Verbindungsdaten aus.
Die Leiterplatte enthält einen Sockel, um ein WeMos-D1-Mini-Modul aufzunehmen
Die Spannungsversorgung (+5V) erfolgt über eine Mini-USB-Buchse J4 oder über die USB-Buchse des WeMos-Moduls.
Das Avionics-Panel mit dem Arduino-Sketch stellt ein Frontend zum SimConnect-Client bzw. X-Plane-Plugin dar.
Das Panel verbindet sich mit der Kommunikations-Software auf dem PC, Ereignisse werden an diese übertragen und die gelieferten Variablen-Werte werden angezeigt.
Das Ethernet-Modul wird mit dem Netzwerk verbunden und muss über DHCP eine Netzwerk-Adresse zugewiesen bekommen. Die WIFI-Variante muss einmalig über WPS mit dem Router die Verbindungsdaten austauschen und erhält dann ebenfalls vom DHCP-Server eine Netzwerk-Adresse. Für die Datenverbindungund wird das UDP-Protokoll genutzt. Hier ist zu beachten, dass immer eine eindeutige MAC-Adresse und ein eindeutiger Port zugewiesen wird. Beide sind im Sketch definiert.
Im COM-Panel werden Active- und Standby-Frequenzen unterstützt, mit den Tasten kann der Transmit-Mode und der Receive-Both-Mode aktiviert werden.
Das NAV-Panel ist komplexer programmiert. Neben den Active- und Standby-Frequenzen ist auch eine einfache Skalendarstellung des CDI möglich. Diese Funktion wird durch die Möglichkeit von benutzerdefinierten Zeichen des LCD-Panels ermöglicht. Die Anzeigefunktionen werden vom SimConnect-Client bzw. dem X-Plane-Plugin realisiert.
Beim Starten bzw. beim Reset des Controllers kann über das Drücken der drei Tasten während des Startens/Rücksetzens die Modulfunktion geändert werden. Diese Änderung wird im EEPROM-Speicher des Controllers abgelegt, so dass diese Einstellung bis zu einer erneuten Änderung erhalten bleibt.
Tastenvarianten zum Ändern der Funktion beim Avionics-Panel:
rechte Taste COM1 mittlere Taste NAV1 rechte und mittlere Taste COM2 linke Taste NAV2 linke und rechte Taste ADF linke und mittlere Taste XPDR
Tastenvarianten zum Ändern der Funktion beim NAVCOM-Panel:
<-> beim NAV-DISPLAY NAVCOM1 <-> beim COM-Display NAVCOM2
Die gestartete Software zeigt die Funktion und kurz die zugewiesene Netzwerk-Adresse an und wartet dann auf den Verbindungsaufbau durch die Kommunikations-Software. Durch den Verbindungsaufbau weiß die Arduino-Software, wohin sie die Daten senden soll.
Nach dem Verbindungsaufbau können Tasten- und Encoder-Ereignisse gesendet und Daten angezeigt werden, die von der Kommunikationssoftware in definierter Format übertragen werden.
Die Kommunikations-Software stellt die Verbindung zwischen dem Flugsimulator und dem Avionics-Panel her. Wenn ein PC mehr als eine Netzwerkkarte besitzt, dann muss über die Konfigurationsdatei des Clients/Plugins dieser definiert werden. Beim Start werden dann die gefundenen Netzwerkadapter mit ihrer ID aufgelistet.
Über den Netzwerkadapter wird mit einer Anfrage auf der Broadcast-Adresse des Netzwerksegmentes und dem der jeweiligen Panel-Funktion zugeordneten UDP-Port (dieser muss mit dem Sketch übereinstimmen) der Avionics-Controller gesucht. Der Avionics-Controller empfängt diese Anfrage und kennt dadurch die IP-Adresse der sendenden Kommunikations-Software. An diese IP-Adresse wird dann die Bestätigung gesendet, wodurch der Kommunikations-Software die Controller-IP-Adresse übermittelt wird. Damit ist die Verbindung aufgebaut. Der Controller kennt jetzt die IP-Adresse des Flugsimulators und der Flugsimulator die IP-Adresse des Controllers.
Jetzt können Ereignisse des Avionics-Panels über UDP zum Client/Plugin gesendet werden, der diese dann in Flugsimulator-Ereignisse umsetzt bzw. Anzeige-Varianten einstellt. Die aktualisierten Variablen werden in Anzeige-Zeichenketten umgewandelt und in definierter Form zurück an das Avionics-Panel gesendet und dort auf dem Display angezeigt.
Zyklisch wird abgefragt, ob das Panel noch im System ist. Wenn innerhalb einer bestimmten Zeit auf diese Anfrage keine Antwort empfangen wird, dann geht der Client/das Plugin wieder in die Verbindungsaufbau-Phase und sendet Such-Anfragen auf der Broadcast-Adresse.
Der SimConnect-Client (FSX, P3D, FS2020) ist ein eigenständiges Programm und kann direkt aus einem Ordner, z.B. dem Installationsordner, aufgerufen werden. Die Konfigurationsdatei kann in diesem Ordner angelegt sein oder in einem Unterordner des AppData-Bereiches.
.\AppData\Roaming\Sim&IT\SimConnect\Avionics-Panel.cfg
→ Weitere Informationen zu den SimConnect-Clients und deren Konfiguration sind hier zu finden.
Client-Setup FSX
Client-Setup FS2020
Das X-Plane-Plugin entspricht einer DLL. Diese sind im Unterordner .\ressources\plugins
abgelegt. Das gefundene Plugin kann im gestarteten Flugsimulator über das Menü angezeigt werden. Im Info-Bereich wird entweder die Verbindung zum Avionics-Panel oder die Auswahl der Netzwerk-Adapter angezeigt, wenn mehr als ein Adapter gefunden wurde. Dieser muss in der Konfigurationsdatei definiert werden.
.\AppData\Roaming\Sim&IT\X-Plane-Plugins\Avionics-Panel.cfg
→ Weitere Informationen zu den X-Plane-Plugins und deren Konfiguration sind hier zu finden.
Plugin-Setup
Die Funktion der Panels kann durch das Drücken von Tasten beim Einschalten der Betriebsspannung wie im Arduino-Sketch beschrieben, geändert werden:
Das COM-Panel zeigt die Active-/Standby-Frequenzen an. Folgende Funktionen sind möglich:
TRANS
aktiviert das Panel als Transmitter, wird durch T
angezeigt<
-
>
wechselt die Standby- und aktive FrequenzMODE
schaltet den Both-Receive-Mode ein/aus, wird durch Lautsprechersymbol angezeigt
Die Funktionen des NAV-Panels sind an die des KX155A/KX165A angelehnt.
Folgende Zustände sind dargestellt:
IDENT
aktiviert den jeweiligen NAV-Sound, wird durch Lautsprechersymbol angezeigt←→
wechselt die Standby- und aktive FrequenzMODE
schaltet in den ACTIVE/CDI-ModeIDENT
aktiviert den jeweiligen NAV-Sound, wird durch Lautsprechersymbol angezeigt←→
wechselt die versteckte Standby- und aktive FrequenzTO
bzw. FROM
in der Mitte der Skale angezeigtTO
kann durch ca. 2s Druck auf die Drehgeberachse der aktuelle Bearing-TO-Kurs übernommen werden>
signalisiertLOC
anstelle des OBS-KursesMODE
schaltet in den ACTIVE/BEARING-ModeIDENT
aktiviert den jeweiligen NAV-Sound, wird durch Lautsprechersymbol angezeigt←→
wechselt die versteckte Standby- und aktive FrequenzMODE
schaltet in den ACTIVE/RADIAL-ModeIDENT
aktiviert den jeweiligen NAV-Sound, wird durch Lautsprechersymbol angezeigt←→
wechselt die versteckte Standby- und aktive FrequenzMODE
schaltet in den ACTIVE/DME-Modesel
IDENT
aktiviert den jeweiligen DME-Sound (nur im selektierten Mode), angezeigt durch Lautsprechersymbol ←→
wechselt die versteckte Standby- und aktive FrequenzMODE
schaltet in den ACTIVE/STANDBY-ModeDas ADF-Panel kann folgende Zustände darstellen:
IDENT
aktiviert den ADF1-Sound, wird durch Lautsprechersymbol angezeigt←→
wechselt die Standby- und aktive FrequenzMODE
schaltet in den ACTIVE/RAD-ModeIDENT
aktiviert den ADF1-Sound, wird durch Lautsprechersymbol angezeigt←→
wechselt die versteckte Standby- und aktive Frequenz<
und >
am Skalenende angezeigt>
signalisiertMODE
schaltet in den ACTIVE/ET-ModeIDENT
startet/stoppt/setzt den Timer←→
wechselt die versteckte Standby- und aktive FrequenzMODE
schaltet in den ACTIVE/STANDBY-ModeDas Transponder-Panel XPDR zeigt den Flight-Level und den Transponder-Code an.
IDENT
aktiviert den Transponder-IDENT←→
wechselt zwischen ON und ALT, Drehgeber ändert kurzzeitig ModeMODE
wechselt zwischen OFF und Standby, Drehgeber ändert kurzzeitig ModeInstallations-Anleitungen:
Entwicklung des Flightsim-Panels
Audio-Panel
Encoder-Controller
Autopilot
Cockpit-Panel-PC