Project Overview
The "FS2020 Arduino Integration Panel" is a high-utility project for flight simulation enthusiasts, bridging the physical and virtual cockpits. While Microsoft Flight Simulator 2020 (FS2020) provides an immersive visual experience, interacting with small cockpit switches using a mouse can be cumbersome. This project uses an Arduino Nano as a hardware bridge, allowing users to control critical aircraft systems—such as flaps, lighting groups, and engine ignition—using tactile physical switches. It also provides real-time status feedback through LED indicators, enhancing situational awareness without needing to look away from the primary flight display.
If you are a Flight Simulator enthusiast and would try to build your first external panel to send some commands and read some status from FS, probably you will be interested in this project because it's simple, flexible and cheap.
This project will let you play with some Arduino programming code but don't need any development effort on the PC side. On the other end you will play also with some very simple hardware stuff other then an Arduino board of any type (i used a Nano). The most important thing, however, is that with a very little effort, thepanel can be highly customized to your needs by changing the function of each button/switch/LED or adding new ones.
For the whole project visit: https://github.com/IWILZ/FS2020-Switch-Panel
You can see a short video here:
What it does
The panel manages and shows the state of:
- flaps incrementing/decrementing them to max 4 positions
- navigation lights (grouped in STROBE, NAV, BEACON, WING, LOGO, CABIN and PANEL)
- landing lights (grouped in LANDING and TAXI)
- pitot heat
- rudder trim
- engine(s) startup and shutdown with AUTO_START and AUTO_SHUTDOWN functions of simulator
- in addition I have also a RESET button that is useful when starting the flight to be sure about the state of all the lights of the plane
Technical Implementation & Communication Bridge
The engineering challenge in this project is the bi-directional communication between the Arduino and the flight simulator.
- Communication Protocol: The project utilizes a serial-to-SimConnect bridge. On the PC, the FS2020TA (or a similar tool) listens to the COM port. When a switch is toggled on the Arduino, it sends a formatted string over Serial. The PC application parses this string and uses the SimConnect API to update variables within the game engine.
- State Synchronization (Bi-Directional): Unlike simple button boxes, this project supports "reading" data back from the sim. If you turn on the landing lights via the keyboard, the FS2020TA software sends a serial update to the Arduino, which then lights up the corresponding physical LED. This ensures that the hardware panel always accurately reflects the in-game state of the aircraft.
- Input Multiplexing: To handle 9 switches and 7 LEDs on a small Arduino Nano, the project uses efficient pin mapping. The switches are configured with
INPUT_PULLUPto eliminate the need for external resistors, while the LEDs are driven by PWM-capable digital pins to allow for cockpit dimming effects. - Modular Firmware Design: The Arduino code is structured as a state machine. It prevents "command spamming" by only sending a serial message when a physical state change is detected (edge-triggered) rather than continuously sending the state of the switch. This keeps the CPU load on both the Arduino and the PC to a minimum.
Hardware Construction
The physical panel can be mounted on a laser-cut acrylic sheet or a 3D-printed housing. Industrial-style toggle switches are recommended for the "master" and "lighting" controls to provide the heavy mechanical feel found in real GA (General Aviation) or transport-category aircraft cockpits.