<<< Development outlines for SimVimCockpit
Main Features supported
- Multiplexed digital inputs - every pin controls 16 toggle switches or push buttons. Encoder can be connected to any pair of multiplexer inputs, the same way as to a pair of direct inputs
- Unified mode switches and data value conditions functionality for all input and output types
- Non-linear input for pitch and roll axis (Quadratic curve), higher precision near neutral (or zero) position.
- Axis calibration menu in the plugin, setting the axis zero-position (for pitch/roll/rudder) and movement range. Auto-saved in a file
- The initial states of all toggle switches and rotary switches connected to the direct inputs or multiplexers are sent on start to the plugin for proper synchronization the switches in virtual cockpit.
- 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)
- 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)
- 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
- Multiple serial LED outputs based on DM13A or similar 16-bit LED drivers
- The posiibility to assign different output devices (including serial LEDs) to the same extension board (output multiplexer)
- Support for LED bargraph output (i.e. linear flaps trimmer position indication)
- PWM outputs (for moving-coil meters, DC motors, adjustable LEDs, other PWM controlled devices) directly connected to any of PWR-ready pins
- PWM outputs using one 24-channel PWM driver board.
- Native LCD display support. Configurable output to 16x2, 16x4, 40x2 etc. character display. Any data values can be displayed in any position along with any custom text (since v.0.9.17). Read more...
- 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.
- 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]
- Direct support for X27.168 stepper motors as default for SimVimCockpit firmware
- Servo control support (using external servo drivers).
Status and 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.
|Configurator: Editing of already assigned parameters.
|Direct spport 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 release
||The problem of "a single toggle command for toggle switch" in custom planes - we need to implement the monitoring of the associated "read-only" datarefs to synchronize switch position.
||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.
|Memory read and memory write buttons can be used for radios to write into the memory and restore several frequencies (like Collins radios)
|CHAN button (program memory) can be used for KX155A/KX165A> style COM radios to store in memory 32 frequencies
|To be added: support zero-position sensors for full-circle Stepper motor gauges
|28BYJ-48 stepper motor with gearbox
||Will be supported, pending
|Servo control support (using external servo drivers).
|Servo output support, on additional "Nano" controller board connected to the SimVim bus and used as "driver" for 10-16 servos.
|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
||Not implemented, considered
|"Digital" axis inputs, using contactless magnetic rotary encoders
||Considered, will start testing after main features finished
|Head position tracking to emulate far-distance view effect on a closely located screen (not related to a head rotation).
||Planned in future
Since v.0.9.18 the communication protocol (Serial) was fully re-programmed, now you can expect it working fast and stable.
Here is how it all should work:
- In our test system (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.
Some notes related to the SimVim > 0.9.18:
- 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.