SimVimCockpit interface architecture doesn't require some special electronic skills from you (besides basic soldering skills). You don't need some specialized electronic components, SimVimCockpit has "modular" structure based on cheap, easily accesible, ready-to-use breakout boards and modules listed in the "Components" page.
So, in most cases, all you need is to buy these cheap components (and all needed common switches and buttons) and connect them as described on our website. Some components, LED drivers or stepper drivers may need basic soldering skills (like this breakout board)
Unlike our previous interfaces, SimVimCockpit has a "address bus" architecture that allows you to extend the number of inputs and outputs for hundreds of toggle switches, buttons, encoders, dozens of numeric displays and gauges, and guarantees that you can make a full set of input controls for any complex cockpit.
The term "bus" is related to a set of unified wires which can be used by multiple components in the system to receive or send data.
As a central control unit for SimVimCockpit Interface any of Atmega2560 based controller boards available on market can be used with SimVim firmware, which you need to upload to this controller directly from the plugin menu.
The firmware is an essential part of SimVim interface, and provides all input/output functionality together with SimVim plugin.
8 contacts of the controller board are allocated as fixed outputs for address bus (pins # 22 ... 25) and 4 output signals to control output devices - 7-segment displays, Serial LED drivers and LCD displays (pins # 26 ... 29):
Note: These 8 pins are configured as outputs, so you should remember the common safety precautions regarding microcontroller (Arduino) pins working as outputs.
One of the rules is that you should not overload output pins with high current. If you mistakenly short one of the wire connected to output pin to ground (GND), this could overload the controller output when it's in a "high level" state and damage it.
In SimVim firmware these outputs are in a high level state for only a very short period of program time, so it's unlikely you could overload the address wire. But, you can add serial safety resistors (133 ohm each) that act as simple current limiting components. If you are sure that all your connections are reliable, you can make the bus without resistors.
These signal lines are for outputs only:
NOTE: The +5V output pin can be used as a source for multiplexers connected to SimVim bus and also it can be used to power some low-current output devices. See more detail about system powering here.
This architecture allows you to create a flexible modular system and you can make a full set of input controls for your cockpit and easily expand it by connecting extension modules to the bus at any time into the working system.
For input (and some outputs) extension the CD74HC4067 multiplexers (sold as cheap breakout boards) are used in our system. CD74HC4067 works as multiposition electronic "switch", when only one of the 16 terminals is connected to the signal (SIG) pin at any given time. The 4 address inputs on this board (S0...S3) are used to select one of 16 ports (0..15) to be connected.
To extend the number of inputs to 16 you need to connect an extension board to SimVim data bus as described here, and select any free pin number for this input extension. The "SIG" (or may be "Z") output of every input multiplexer is connected directly to this pin.
Note: probably no one or only one output extension board will be needed for your system.
To extend a number of 7-segment displays the CD74HC4067 module can be used as output multiplexer. One muliplexer can control up to 16x 7-segment displays.
All inputs of output multiplexer besides of "EN" are connected to the address bus and use 4 address lines and one "S" (SIG) line. The "EN" input is connected to the controller output pin assigned for this output multiplexer board.
Note: Any single extension board can be used either for inputs or outputs only! Don't try to connect switches to output multiplexer.
1. SimVimCockpit supports multiple serial outputs (for large number of LEDs), for this you need to use LED drivers or shift registers (you can see the list of such drivers on the "Components" section).
2. To extend the number of PWM outputs in SimVimCockpit you can use one 24-channel PWM driver TLC5947 ).
3. For stepper motors control additional SimVim Stepper controller board is used. It is one Uno or Nano Arduino board with special SimVim stepper control firmware uploaded to it from the SimVim plugin menu.
This simplified diagram shows principally, how all inputs and outputs are connected using the address bus:
As was mentioned above you can buy any of the available ATMega2560 controller boards, including the "standard" Arduino Mega2560. There are many others manufacturers and sellers of various controller boards with this atmega2560 controller. In the photo you can see three mini controller boards that we are using.
All these controller boards have been tested with SimVimCockpit, the firmware was uploaded to every of these boards from SimVim plugin menu without any problems.
There are some other atmega2560 controller boards on the market like "Crumbuino-Mega", various "core" modules. You can find them yourself using such keywords as "2560 core", "atmega2560 mini", etc.
The SimVim firmware is an optimized program code that should synchronize control of a large number of different input/output devices. SimVimCockpit interface doesn't allow to use the controller board as a "usual" Arduino and users can't add any custom code, as there is no Arduino sketch, and the plugin uploads firmware directly to the board. At this moment we are using Atmega2560 as a convenient and easily available controller platform for SimVim firmware.
In SimVimCockpit you can make almost everything without the need for additional coding. The Interface is supposed to be self-sufficient in creating any I/O configuration, as it will support a large variety of I/O devices, and the ability to provide conditions for complex interaction of these devices with simulator data and each other. But, we are considering the option to connect a programmable slave board to the master controller for additional functionality.