Interface…translating real world actions to bits and bytes…

PCB Diagram of the Arduino Mega

 

We have a design which replicates in exact detail the cockpit of the Supermarine Spitfire Mk.IX. We have 75 controls which can be wiggled, poked and jiggled.

How do we connect this into the virtual world?! We need something that translates our physical actions and presents it to our simulation in a manner that it can understand.

We need an Interface.

Firstly, it needs to be clear that our product is being designed in such a way that all wires from switches, encoders, sensors and potentiometers are easily accessible on wire terminal blocks, and can be connected to any interface the builder prefers to use.

That said, the last few weeks we have been doing intensive research on how we will be implementing our own design while also getting to understand other available options.

The interface consists of the necessary hardware to gather and interpret the data and then the software to present that data to the simulator in a manner it can understand.

Hardware

Those of you familiar with the Maker Culture will have come across the term Arduino. It is a wonderful open source microcontroller that has made man-machine interaction so much more accessable through its low cost and simple interface.

The Arduino was a simple choice if it could be shown that it could handle the 75 control inputs required and that it could do so simply. We knew that the Arduino Mega has 54 digital and 16 analog inputs, but it does not simply show up as a joystick controller when plugged in to a PC, so what would it take to make it talk to the simulator?

Another option would be a ready made solution which operated simply as a plug-and-play joystick. Here the most well known and best supported option would be the LeoBodnar BU0836X with 32 digital and 8 analogue inputs. Other commercial cards offering this functionality include the GP-WIZ40, DSD Designs with a 64 button controller and the Brydling B256A13 joystick controller which offered an array of 256 buttons and 13 axes. However the current support and availability of these are unclear.

The plug-and-play option has the advantage that the Spitfire simulator can be used in conjunction with any number of simulation software programs which portray the Spitfire in one of its incarnations. For VR enabled versions these include IL2 Stalingrad, MS Flight Simulator/Prepar3d and X-Plane. However, none of the versions in the sims mentioned have the fidelity or depth of systems found in the DCS World Spitfire. The P-n-P option also requires quite a bit of controller setup when used with any of these sims, including DSC World.

Software

When working with the Arduino it is no longer a simple case of plugging in your joystick. It requires a program which does the interpretation of the control inputs into a form that the simulator can understand.

Many programs have been created to achieve just that. Some of these communicate directly with the simulator and are quite specific to the simulator being run while others turn the Arduino into a plug-and-play joystick. Most of these are free to use in non-commercial applications, while some are fully open source and may be applied in any manner. These are all factors which needed to be considered in our final selection.

A selection of the software considered follows:

SimVim: As with the others, this is Arduino based. It is a very expandable interface, however there is a somewhat higher degree of complexity and it is focussed on X-Plane. It is also limited to personal use.

MMJOY2: Turns the Arduino into a plug-and-play joystick. Certainly an option for those wishing to save on a Leobodnar card and prepared to follow instructions closely on how to flash their Arduino. Limited to personal, non-commercial use only, so not suitable for museum or training type applications.

Arduino USB Joystick (Overpro): Similar to MMJOY2

MegaJoy Arduino: Similar to MMJOY2

DCS-BIOS: Some very enterprising individuals have directly mapped all the interfaces of a growing number of DCS World aircraft and translated this into a simple set of instructions which run of an Arduino. No setting up in the simulator is required once the program has been loaded onto the Arduino, and it is available for use whenever the simulator is started. It is fully open source. It is however restricted to DCS-World. It also only caters for the clickable items in the cockpit. As such the main flying controls (Rudder, Elevator, Ailerons) and a few specifics such as the primer lock and pump action need to be controlled separately.

Conclusion

There are many potential solutions depending on your preferences and specific requirements. Our selected route considers that the turn-key simulator will be used in a high-fidelity commercial setting with DCS World’s Spitfire Mk.IX. As such we will be taking the approach:

  • Two off Arduino Mega’s running DCS-BIOS and catering for all the functionality that this provides.
  • One Leobodnar board to allow for the non-clickable controls.

The details of our interface are as follows:

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.