DIY cockpits - which interfaces and boards work for MS2020?

I think that the most beautiful aspect of the flight simulation, specially today, is that can offer to everyone a lot of choices to test your skills and put them to the limit in many sectors.
I’ve always loved planes since I was a kid, so the first Apple II simulator (1 fps, maybe less) was a big emotion for me. Year after year I wanted to transform this simple “game” into a more “phisical” thing, mostly with the purpose of increasing the feeling of realism, but also because I love to deal with technological aspects, building things, testing projects, developing them, improving, etc. So you can prefer writing software, assembling mechanical parts, building the cockpit frame (my current dream), buying plug and play modules (if you can find, e.g. Saitek for the MIP, many others for MCP, etc). What we all (cockpit builders) DON’T like is flying with mouse clicks on virtual parts and other “fake” operations!
I want an immersive, realistic experience, with only sceneries on my windscreen, and - of course - I have to keep my budget under control, so all I can build or find for free is the first choice for me.
And it is also a lot of fun, and I love that is continuously in progress (please consider that my cockpit was 99% working with XPlane, and today is almost 70% working with MSFS!

Limitations are not coming from FSUIPC but from the lack of variables and offsets in simconnect. We need to wait for developers to implement or handle those missing events

@ExpertBog216000 Yes it does require arduino mega board and it will automatically craft and flash the firmware to the board based on the settings you define in the UI. You could develop your own code in arduino but remember that in order to talk to the sim you need to develop a simple program in C# which act as a bridge from arduino (reading and writing data to com serials port) and FS2020 via FSUIPC SDK or directly to simconnect.

I did it for a simple POC and I is working but man I would suggest to use the already made tools rather than reinventing the wheel…

C# is where I stop :smiley:
But doing a PCB or implementing a serial protocol is not reinventing the wheel, really…
What I find really odd is that something aimed to DIY project is closed on the interface. It’s like if FSUIPC were not making available an SDK because there are already programs available and you don’t need to “reinvent the wheel” by developing some new code.

I agree. However you are not necessarily tied to FSUIPC (although their SDK is distributed on nuget and comes with plenty of examples of usage) you can always connect directly to simconnect which is the interface protocol that Microsoft offer. That being said I assure you that there is a lot of work on handling and mapping events and translating back to arduino using serial com. It is doable but won’t be as flexible or reusable as the mobiflight or simvim software. To sum up, no one is preventing you from learning and using simconnect to create your own middleware to talk to your hardware. If you got passion and time go ahead and you will enjoy it.

A sheet of plywood, a monitor and some rotary encoders connected to MSFS 2020 via Air Manager BETA and a cheap Audrino knockoff

Extremely low cost, but add so much depth.

All dials work and respond real-time

3 Likes

Absolutely!
Having gauges and controls separated from the monitor used for the view is a huge step forward.
Here is a pic of the first time I realized that a monitor with a panel appropriately cut was already a good base for an istrument panel.
The issue was: how to connect this to the simulator. And a new world opens. An electronic engineer can start from the scratch and build even the boards for the interface.
In my case I need efficient software and cheap boards, and this is the purpose of this topic. What is better, powerful, easy and reasonably cheap and works for the highest number of controls ?
I think is very interesting, both for absolute beginners and for more experienced builders that are facing the transition to MSFS 2020!

3 Likes

Ok, time to do some summary.
The most suitable board for interfacing hardware with MSFS seems to be the Arduino.
I personally use the Pokeys boards, that come both in USB and in Ethernet version, but the support for these boards seems to be not so easy to find, or very old and no longer supported.
Leo Bodnar are more suitable as joystick emulator, but is not clear if they can be used for outputs.

So let’s choose Arduino as a basis. A Mega 2560 board can be found on Amazon around 19$ and the UNO around 12$. The Mega has 54 digital pins, 16 analog inputs, and 4 serial ports.
It must be connected to an USB port. (there is also an ethernet shield but I think that normally is used as USB). So a good performance/price ratio.

Software Interfaces:
Unless you can write your own interface and work directly with simconnect, you will need FSUIPC,
currently version 7 under development, free until october 2020 to test.
To use it at full potentiality you have to buy a registered version, the price of version 6 was about 42$
The proposed interfaces are

  • MobiFlight (donationware)
  • Air Manager (around 77 $) - very important : supplies display interface for gauges and almost complete instrument panels to display on secondary monitors
  • Lua (free but requires programming skills - for the moment very few reports on its usage)

On other forums I’ve read about the possibility of displaying the MSFS gauges on secondary monitors as iPads or other devices, this is very intresting, please if someone use this solution report the experience and how is achieved.

Is that complete ? (of course not, please help to extend and improve this list !)

1 Like

Summary of hw interfaces and software (continued)

There are other possible choices to add to the list.
HW
Opencockpits sells good and powerful boards, that have the great advantage of being controllable through sioc code (with FSUIPC). Sioc is extremely versatile and powerful, and after all not so difficult to learn and use, and there are a lot of scripts and tutorials available.
These boards chan handle digital inputs and outputs, encoders, analog inputs, 7 seg dispalys, servo motors (not stepper motors to what I know).
It can be a good choice, but must be aware that:

  1. you will need a mix of boards, masters board, expansion board, servo board, specific connectors, etc, and the basic mix will cost above 100 € - non that much, but well over the cost of many arduino boards
  2. for custom panels one must write his own sioc code, many examples and tutorials are available though.
    Given that Fsuipc 7 will handle most of the variables and functions and SIOC can customize a lot of things and interface with the boards, this solution is powerful but imho is more suitable for medium to advanced users.

Other boards that can be used are the Teensy (more XPlane oriented by now ? please correct if I’m wrong) and Raspberry Pi.
A wide range of possibilities (I don’t even mention the mighty ProSim, very powerful but very very expensive for non commercial, home cockpit builders - and probably not yet ready for MSFS at least officially I think)

I’m using a Teensy because you can directly tell it to show up as a joystick controller in Windows. That way you don’t need to run Mobiflight and you can interact directly with FSUIPC with joystick inputs.

I already have a Arduino UNO card, and would like to use that one.
But MobiFlight seems to only support Mega, not UNO :slightly_frowning_face:

I also found this, that looked promising:

But using this I am so far not able to write back to FS, only read values.
(You must have FSUIPC7 running for this SDK to work)

I can program whatever is needed, but I need som “architecture”-pictures to show how it all fits together…

I also looked at fs2link, but that one seems very old.

I have been able to use the Arduino to simulate a joystick, but only for input signals, and not for output from MSFS. (To make an UNO inot a joystick you need to flip the firmware to simulate it as a USB Host)

Currently I uses that for adjusting trim using a potmeter and raising and lowering gears using buttons for each command.
I have added some “stupid” green LEDs that lights up accordingly, but they are currently not connected to FS, only responds on the button being pressed (Due to this, currently the ligths only respond to the buttons, and does not check if the gear is actually up or down)

But it would be great to make MSFS “write back” to the Arduino.
Then I could add a radio LCD-etc.
(and I could then also run it in “normal” COM-mode with the proper firmware which makes things a little easier.)

Any pages/tutorials I should look at?..

I have been told that Mobiflight does not support potentiometers, and that has been a deterrent for me. :frowning:

There is arduino sketch which transform arduino pro micro into 5 axis joystick visible in windows. I use this for potentiometers and it works well.

Thank you! That’s awesome!
I’m very, very new to this kind of thing, so I have what I hope is not a dumb question: Mobiflight puts its own sketch on the Arduino, right? So if I install this controller, does that wipe out or in any way interfere with Mobiflight’s sketch?

Mobiflight is running on arduino mega and you can not have any additional sketch loaded same time.
This joystick sketch needs to be on arduino pro micro as it has Atmega 32u4 chip which is required.You can buy it on aliexpress around 2 usd per piece with free shipping.

Yes, this is an issue also for me indeed. They state that many ways to configure analog axis exist and is useless to “reinvent the wheel” but the fact is that, eg. for the trottles quadrant, I need 2 boards, 2 usb port and maybe 1 usb hub, just because they don’t support analog axis…
I can’t figure out how complex this task could be, but all other drivers do read and send analog data…
Nevertheless, MobiFlight is a very good free (or donationware if you wish) tool, I have started testing it and it’s very interesting and reasonably easy to use.
A big issue for me seems to be that it desn’t detect the status of switches, but just the transition (button push or button release) but for home cockpits at least an initial read of the switches status is important.
EG if I forget to set the parking brake before starting the flight, the lever is still on the release position, but the PB light goes on and parking brakes are set by default, so there is an incongruence between te lever position and PB status. The same for gear lever, lights switches, everything… what a pity.
Maybe I haven’t understood something, I hope this can be solved.

that’s true. At the moment it doesn’t support potentiometer. But it’s really good with encoders and especially output devices like servos, steppers, lcd, 7 segment displays, led

1 Like

the initial sync can be triggered by a switch. there is a special input action for that.

2 Likes

MobiFlight was originally created to fill the gap for displaying data. Even 7 years ago leobodnar, arcaze, pokeys already existed and i started out with old gamepads where i attached buttons. But displaying values through LEDs or Displays was not possible, at least not for cheap.

So I started Mobiflight to use cheap Arduinos focusing on displaying data, always having the user in mind who cannot code and script.
Then I needed encoders and they didn’t work with the gamepads. that’s why i added buttons and encoders as inputs to mobiflight. Inputs are not done as a USB HID Device but through the MobiFlight interface. At first glance this seems a disadvantage but actually it is not. MobiFlight allows to add a lot of logic and manipulation of the input values which cannot be achieved easily with a standard game controller device.

I always hesitated to add potentiometers because other boards do that fairly well but ok. I am willing to prioritize potentiometers high again if there is sufficient request from the community.

8 Likes

Hi tanks a lot for your great work and for your answers! I really appreciate MobiFlight and it seems to be one of the best choices for home cockpit builders like me thar looks for stable, easy to configure and extensive software interface at reasonable price (and in this case FREE!). MobiFlight has almost all of these things and I suggest strongly to give it a try.
Next steps for me will be to test the initial position alignment (if I discover how to do as you suggested) and stepper mitor gauges (extremely interesting option)
Thanks again!