Based on the test setups with the Arduino, decribed here, I developed circuit boards for the avionics panel. The panel dimensions are only 50 x 80 mm. See here the system design.
The panel is connected to the FS-PC via Ethernet. The Arduino sketch processes the button / encoder events, which are transmitted via UDP (Ethernet) to an interface software on the PC, which generates FS commands from this. The updated variables are transferred to the Arduino panel and displayed there on the LC display. The communication software uses SimConnect clients for MSFS (FSX, FS2020) and P3D as well as X-Plane plug-ins for X-Plane. Further software is not necessary for the operation of the panel.
For the purchase of hardware and the communication software please contact me by e-mail. The hex-files and Arduino sources are also available on request for DIY projects.
For programming the Arduino, a USB-serial adapter such as this one is required.
The printed circuit board is equipped with buttons and a rotary encoder. Furthermore, commercially available modules are connected to the printed circuit board. Due to the relatively simple construction and the free availability of the printed circuit board, the module is also suitable for DIY projects. No SMD assembly is used in the preferred assembly of this module.
Two different Ethernet modules can be connected to the PCB. With the ENC28J60, the Arduino must use the IP stack in software, which requires significantly more resources. In addition, the 3.3V regulator is needed for the modules found. The WizNET module W5500 should therefore be preferred.
It is possible to equip an inexpensive rotary encoder with one axis, which is then used to switch between pre- and post-decimal places by pressing the encoder axis. The other possibility is to equip a much more expensive rotary encoder with two shafts. Finding suitable knobs for this is problematic. A source of 3D printing data for a suitable pair of knobs is listed in the parts list.
A separate sketch is used for each of the two variants. The identifier that is sent when the connection is established may then be processed in the client/plugin.
Alternative assembly, not usable for dual encore, not recommended:
Power (+5V) is supplied via a mini USB socket J4 or via the pin header of the Arduino Pro Mini.
The components and development of the panel are described here (german).
In this variant the ATmega328 is integrated on the circuit board. The pin assignment corresponds to the Arduino Pro Mini, 5V, 16MHz. In addition, the push buttons and the rotary encoder are included on the PCB.
This PCB variant is only used with the version for the programmed module because of the SMD assembly and initial programming of the IC.
Red LC displays and OLED displays of similar design are also available. The I²C-to-parallel converter must be procured and mounted separately in each case. With the red LC displays, however, the viewing angle is not very large and the contrast decreases. The OLEDs are very clearly viewable, but the control is somewhat different, especially the initialisation. The OLED displays are considerably more expensive. The OLED displays are considerably more expensive.
M2.5 stud bolts were inserted into an acrylic plate and the circuit board is mounted to them.
Front panel
A cover made of photo paper was glued onto the acrylic plate.
Cover
Based on the avionics panel of variant 2, this board was extended by a second display, three buttons and an encoder. This makes it possible to set or display the COM frequencies and the NAV functions with the NAVCOM panel. The ATmega328 is integrated on the PCB.
The functions correspond to the NAV and COM individual displays, but only one network connection is necessary. The modes are descibed below.
Two function versions are possible, COM1 and NAV1 or COM2 and NAV2. The function can be reprogrammed during switch-on/boot-up by holding down one of the two SWAP buttons <
-
>
.
Printed Circuit Board
For the version with dual encoders, the inputs of the Arduino are only sufficient for connecting 4 buttons, which are then the two swap buttons, the mode button on the NAV and the push button on the rotary encoder. For this version I also used LC displays with a red background. These displays have a very limited lateral viewing area. The contrast decreases significantly. But it looks more realistic. Everything was mounted on a front panel onto which a printed photo paper was then glued.
The Multi-Function Panel combines the six functions that are possible with the avionics module described above. Use the buttons on the side to switch between functions. The functions COM1, COM2, NAV1, NAV2, ADF and XPDR are available.
I tried to synchronize the functions with the flight simulator, but these commands are often not supported by the developer of the aircraft panel.
The modes are descibed below.
The principle is the same as in the avionics modules described above. There is a socket for the Arduino Pro Mini on the carrier plate. LCD and Ethernet module are connected to pin headers.
Only the Ethernet module WIZnet W5500 is supported..
Power (+5V) is supplied via a mini USB socket J4 or the connector at the Arduino.
Schematic
Assembly
Shared PCB at Aisler
BOM
Example with front panel
A black acrylic plate was laser-machined for the structure shown. Six 2.5 mm stud bolts were inserted into the plate to which the circuit boards are mounted.
Front panel
A cover made of photo paper is glued onto the acrylic plate.
Cover
As with the avionics modules, the ATmega328 was integrated on the circuit board. This variant is used for the version for the programmed module.
This variant has the same design, but is not driven by an Arduino Pro Mini, but by a board with the processor ESP8266. This contains a WIFI module with complete IP stack. Programming continues via the Arduino IDE, the ESP hardware can be added to the IDE. See here.
The WeMos D1 mini module contains a USB to serial converter and can thus be connected directly to the PC and programmed from the IDE.
The program could be almost completely transfered with fix programmed SSID / password only by changing the libraries and adjusting the ports.
Major changes came with the support of WPS. With this feature, the router (which must support WPS) and the device negotiate the connection data within a short period of time after pressing the WPS button on the router and then the WPS button on the device.
The circuit board contains a socket to connect the WeMos D1 mini module
Power (+5V) is supplied via a mini USB socket J4 or via the USB socket of the WeMos module.
The avionics panel with the Arduino sketch is a front end to the SimConnect client or X-Plane plug-in.
The panel connects to the communication software on the PC, events are transmitted to it and the variable values supplied are displayed.
The Ethernet module is connected to the network and must get a network address via DHCP. The WIFI variant must exchange the connection data once via WPS with the router and then also receives a network address from the DHCP server. For the data connection the UDP protocol is used. It should be noted here that a unique MAC address and a unique port are always neccessary. Both are defined in the sketch.
Active and standby frequencies are supported in the COM panel, with the buttons you can activate the transmit mode and the receive-both mode.
The NAV panel is programmed more complex. In addition to the active and standby frequencies, a simple scale representation of the CDI is also possible. This feature is possible with the use of custom characters on the LCD panel. The display functions are implemented by the SimConnect client or the X-Plane plugin.
When starting or resetting the controller, the module function can be changed by pressing the three keys during start/reset. This change is stored in the EEPROM memory of the controller so that this setting is retained until it is changed again.
Key variants for changing the function:
right key COM1 middle key NAV1 right + middle key COM2 left key NAV2 left + right key ADF left + middle key XPDR
The started software displays the function and briefly the assigned network address and then waits for the connection to be established by the communication software. If connected, the Arduino software knows where to send the data.
If the connection is established key and encoder events can be sent and data can displayed by the communication software in appropriate format.
The communication software establishes the connection between the flight simulator and the avionics panel. If a PC has found more than one network card, it must be defined via the client's/plugin's configuration file. At startup, the found network adapters are listed with their ID.
Via the network adapter, a request is sent to the broadcast address of the network segment and the UDP port assigned to the respective panel function (this must match the sketch) to search for the Avionics Controller. The Avionics Controller receives this request and thus knows the IP address of the sending communication software. The confirmation is then sent to this IP address, whereby the controller IP address is transmitted to the communication software. The connection is now established. The controller now knows the IP address of the Flight Simulator and the Flight Simulator knows the IP address of the controller.
Now events of the avionics panel can be sent via UDP to the client/plugin, which then converts them into flight simulator events or sets display variants. The updated variables are converted into display strings and sent back to the avionics panel in defined form and displayed on the LCD panel
Cyclically it is queried whether the panel is still in the system. If, within a certain time, no response is received to this request, then the client/plugin goes back into the call setup phase and sends search requests on the broadcast address.
The SimConnect client (FSX, FS2020, P3D) is a stand-alone program and can be started directly from a folder, e.g. the installation folder. The configuration file
Arduino-Panel.cfg
can be created in this folder or in a subfolder of the AppData area.
.\AppData\Roaming\Sim&IT\SimConnect\Avionics-Panel.cfg
→ More information about the Arduino SimConnect clients and their configuration can be found here.
Client Setup FSX
Client Setup FS2020
The X-Plane plugin corresponds to a DLL. These are stored in the subfolder
.\ressources\plugins
. The found plugin can be displayed in the started flight simulator via the menu. The info area displays either the connection to the Arduino panel or the selection of network adapters if more than one adapter was found. This must be defined in the configuration file.
.\AppData\Roaming\Sim&IT\X-Plane-Plugins\Avionics-Panel.cfg
→ More information about the Arduino X-Plane plug-ins and their configuration can be found here.
Plugin Setup
The function of the panels can be changed by pressing keys like written in the section Artuino Sketch when the operating voltage is switched on.
The COM-Panel shows the Active/Standby frequencies. The following functions are possible:
TRANS
activates the panel as transmitter, indicated by T
←→
swaps between standby and active frequencyMODE
switches the Both-Receive mode on/off, indicated by a speaker symbol
The functions of the NAV-Panel are based at some functions of KX155A/KX165A.
the following states are possible:
IDENT
activates the respective NAV Sound, indicated by a speaker symbol←→
swaps between standby and active frequencyMODE
switches to the ACTIVE/CDI modeIDENT
activates the respective NAV Sound, indicated by a speaker symbol←→
swaps between the hidden standby and active frequencyTO
or FROM
is shown in the middle of the scaleTO
a ca. 2s push at the axis of the rotary encoder may acquire the actual Bearing-TO course>
LOC
instead of the OBS courseMODE
switches to the ACTIVE/BEARING modeIDENT
activates the respective NAV Sound, indicated by a speaker symbol←→
swaps between the hidden standby and active frequencyMODE
switches to the ACTIVE/RADIAL modeIDENT
activates the respective NAV Sound, indicated by a speaker symbol←→
swaps between the hidden standby and active frequencyMODE
switches to the ACTIVE/DME modesel
IDENT
activates the respective DME Sound (only in selected mode), indicated by a speaker symbol←→
swaps between the hidden standby and active frequencyMODE
switches to the ACTIVE/STANDBY modeThe ADF-Panel displays the following modes:
IDENT
activates the ADF1 Sound, indicated by a speaker symbol←→
swaps between standby and active frequencyMODE
switches to the ACTIVE/RAD modeIDENT
activates the ADF1 Sound, indicated by a speaker symbol←→
swaps between the hidden standby and active frequency<
or >
at the end of the scale>
MODE
switches to ACTIVE/ET modeIDENT
starts/stops/sets the Timer←→
swaps between the hidden standby and active frequencyMODE
switches to ACTIVE/STANDBY modeThe Transponder-Panel XPDR displays the Flight Level and the Transponder Code.
IDENT
activates the Transponder IDENT←→
switches between ON and ALTMODE
switches between OFF and StandbyInstallation instructions
Development of the Flightsim panels in german
Encoder Controller (english)
Audio-Panel
Autopilot in german
Cockpit-Panel-PC in german