<<<      Development outlines for SimVimCockpit

Preliminary notes:

SimVim project is not finished productl, it's not static, has many potentia and functionality that can be improved and changed in the process of development.

Even if all main connection principles and basic operations will be stable (mostly but not necessary), the software part, configuration protocol, hardware connections can be changed sometimes, even drastically. Please don't rush to make some kind of PCBs, modules for yourself ( and proposing them to the community)

Besides, the SimVim architecture is specially designed the way when anyone can simply buy ready-to-use breakout boards listed in the "Components" page and wire them.

    Main Features currently supported


  • Direct digital input for any of available 70 pins for switches, buttons, encoders).
  • Multiplexed x16 digital input extension for any of available 70 pins.
  • Direct analog input for any of 16 pins for snalog sensors.
  • Multiplexed x16 analog input extension for ONE of available analog pins.
  • Axis calibration from the plugin, zero-position (for pitch/roll/rudder) and movement range.
  • Non-linear input for pitch and roll axis (Quadratic curve), higher precision near neutral (or zero) position.
  • The initial states of all toggle switches and rotary switches connected are sent on start to the plugin for proper synchronization the switches in virtual cockpit.
  • LED or digital outputs

  • Direct digital output (LEDs Relays, control signals) for any of available 70 pins (see limitations .
  • Multiple serial LED outputs based on DM13A or similar 16-bit LED drivers
  • Support for LED bargraph output (i.e. linear flaps trimmer position indication)
  • 7-segment displays

  • Universal configurable output for any type of 7-Segment Displays (built around latch registers, LED drivers or complete modules, MAx7219, TM1637)
  • Any display can be configured to output several parameter values, each with its own position shift and data display options.
  • "Text" output support (custom text, conditional output) for 7-segment displays (Read more here)
  • Brightness control for MAX2719 or TM1637 displays from plugin. Any display can be associated with specific regulator. You will be able to link a brightness knob with any display.
  • Brightness control for 7-segment displays assembled on DM13A LED drivers. Controlled by separate PWM signal - you need to assign brighness parameter to any PWM output and connect it to your module
  • PWM outputs

    (for moving-coil meters, DC motors, adjustable LEDs, other PWM controlled devices)
  • 1. Direct PWM outputs (8-bit) can be used with several PWR-ready pins only.
  • 2. PWM outputs (12-bit) using one 24-channel PWM driver board -
  • LCD displays

  • Direct LCD display support. Configurable output to 16x2, 16x4, 40x2 etc. character display.
  • Any numeric data values can be easily assigned to be displayed in any position along with any custom text. Read more...
  • Selecting "LCD conditional text" for annunciator-type parameters is an easier way to assign "conditionally" displayed text to LCD.
  • Mechanical drives

  • Direct support for X27.168 stepper motors as default for SimVimCockpit firmware (using external SimVim Stepper Driver board)
  • Servo control support (using external servo drivers).
  • Modes and conditions

  • Unified mode switches and data value conditions functionality for all input and output types
  • Any input or output is configurable "by condition" (can be activated/deactivated on specific parameter value conditions), you can define as many conditional states as you need, to use them for programming some input logic or for conditional outputs (like displaying different data on one indicator)
  • Other features and options

  • Some of the input parameters use flight model properties for their range values (plugin reads them from plane flight model on start), such as RPM range for "constant-speed" props in radians per seconds.
  • The posiibility to assign different output devices (including serial LEDs) to the same extension board (output multiplexer)
  • Some parameter values can be stored in memory stack with memory button (COM radio frequency channels).
  • Loading any specified parameter values on startup (frequencies, fuel quantity etc.), section [Start]

Status, work in progress

Launch online shared data "repository" on the SimVim website for custom planes, where registered users can create and edit the tables with custom commands/datarefs for any specific plane to use them with SimVimCockpit. In process
Direct support for some popular custom planes, such as X-Plane 11 Laminar planes (B738) etc. Here is the list In process, some planes are added
Add all new parameters for Autopilots in X-Plane 11 described on developers website to SimVIm parameters list Partially added in the v.0.9.17+
The problem of "a single toggle command for toggle switch" in custom planes - the monitoring of associated "read-only" datarefs to synchronize switch position is added. since v.0.9.17
The problem of "a single direction command for rotary switch" in custom planes - the monitoring of the associated "read-only" datarefs to synchronize switch position is added. since v.0.9.20
Memory read and memory write buttons can be used for radios to write into the memory and restore several frequencies (like Collins radios) Since v.0.9.17
CHAN button (program memory) can be used for KX155A/KX165A> style COM radios to store in memory 32 frequencies In development
Servo control support, using external servo PCA9685 driver as temporary solution. Supported
Special "Slave" Nano or Uno controller board connected to the SimVim Master board and used as SimVim Stepper Controller for 8 - 20 stepper motors (the number depends on zero-position sensor use). To be added soon
Servo output support, on additional "slave" Nano or Uno controller board connected to the SimVim Master board and used as SimVim Controller for 10-16 servos. in development

Currently not working/pending features

Output to the stepper motors. The plugin code problem, need to revise. will be available again in v 0.9.26
To be added: support zero-position sensors for full-circle Stepper motor gauges. ---
Output to the stepper motors X27.x with dedicated controllers only supported. Other controllers (EasyDriver etc) should work but not tested yet. ....
28BYJ-48 stepper motor with gearbox Will be supported, pending
Encoder types are not used in the cocnfiguration Not implemented, considered

Additional Features

Gear vibration effect outputs. Plane moving on the ground, touching down all simulate realistic impact and vibration forces. To be added later
Force Feedback outputs, turbulence effect Postponed, To be added later
Custom axis mapping curve just considered
"Digital" axis inputs, using contactless magnetic rotary encoders Considered in future
Head position tracking to emulate far-distance view effect on a closely located screen (not related to a head rotation). Considered in future

Connection, Initialization

How it all should work (our test system is Linux Mint 64-bit):

  • The controller board is always connected to USB (never unplugged, starts working when computer is ON).
  • Several different I/O devices are always connected (multiplexers LCD and 7-segment displays, serial LEDs, PWM).
  • Reset button on the board is never ever used (besides it's useless on 2560 when serial port is busy)
  • Computer is working (turned ON) literally all day round
  • X-Plane may be launched/reloaded many times during the whole day
  • Every time X-Plane is loading, the plugin and controller are always connecting automatically, without touching Arduino and using Reconnect.

So, the system allows you to keep you controller board plugged into USB permanently, and never use reset button. Plugin should always establish connection every time X-Plane is started, no matter how many times you did this and how many changes you made in the data config file.

Plugin Interface:

  • Reload Configuration button reloads all SimVim configuration, it should be used everytime you made any changes in your data configuration file.
  • Hardware Reconnect menu item resets everything inside the plugin and reopens all ports and reloads all SimVim configuration. Use it only if you need to reconnect, for some reason, your controller board physically (plug it to USB).
  • Reload Plugins menu item will restart the SimVim plugin (and other plugins in your system). Use it when you have updated the plugin< /li>
  • Restarting X-Plane is never required, since using "Reload Plugins" will do the same thing as a clean restart.
  • If the USB device (Arduino) has NOT appeared in the status window too long this is because of virtual serial driver problem, physical connection issues.

With LAN, all data packages are more easily defined, but with USB connection, wich actually used as asynchronous virtual serial interface (USB ports are just used for serial emulation) it's a bit more tricky to synchronize data exchange and keep large amout of data consistent, we are constantly working on making it more stable.

Currently serial communication protocol in SimVim is synchronized with X-Plane frames and FPS timing is used to send "strobes" in the end of each frame (you can see blinking RX LED) to more effectively synchronize I/O data and avoid loosing any bit of data packet.

You should know that any plugin that works with external programs / devices can send or receive data no more frequently than the X-Plane frame rate allows. So, if your X-Plane frame rate is 20 FPS for example, it can provide next changed data values for the plugin only in time 50 ms after the previous change.

And only after that time plugin can process and send these data to the controller. The same way the plugin can provide data received from the controller to the X-Plane only with X-Plane frame rate.

© Copyright 2012-2018 - SimVim Design