SimVimCockpit© is a powerful but easy to use control interface for home cockpit simulators that is intended to become a convenient input/output control tool for every home cockpit builder.
It can drastically ease the building process for everyone and save your time, because you don't need any programming/scripting skills and use any complex specific electronic components, it's a "configure-connect-and fly" system.
This is the 6th generation of our input-output interface for X-Plane. All history of development you can find here.
If you are going to start building your cockpit for the first time you should realize that it could be a complex and very long process.
Read more here: Home cockpit, planning and building
What you need to start:
- Get one micro-controller board built on Atmega2560 (See details here.)
- Download SimVimCockpit software (plugin) and install it to X-Plane.
- Follow the "Getting Started" steps (below on this page) to upload SimVim firmware and test communication.
After that, you can connect any input controls and output devices to your controller board and start setting up each input and output in the SimVim Configuration tool
It will take about 5 minutes to assign several switches, LEDs and test them in X-Plane.
Note: To extend the number of inputs and outputs you may need to buy some additional components that are listed on the "Components" page and the corresponding wiring info pages. You will need to get one Ethernet module if you plan to use Ethernet for communication, not USB.
Download SimVimCockpit© on our Patreon blog: http://www.patreon.com/simvim
How to install
Supported systems: Linux, Windows, OSX with any version of X-Plane.
After downloading the SimVimCockpit_v##.zip file, just unpack as-is into X-Plane ../plugins folder (install it as any other plugins for X-Plane). The new menu item "SimVimCockpit" should appear in the X-Plane plugins menu. Then, from the plugin menu you need to upload SimVim firmware to your master controller board (you can use Arduino Mega 2560, as well as other compatible board based on the 2560 microcontroller)
First start and Input/Output test
If you have "fresh" board, that has no
previously uploaded SimVim firmware, follow the steps below. If you plan to use LAN version, attach an Ethernet module to you controller board before and connect it to your router.
- Open the "Firmware Upload" window from SimVim plugin menu.
- Follow the steps displayed in that window
- When USB port is detected select correct controller type from the list
and set the "Ethernet" checkbox if you will use Ethernet module.
- Click "UPLOAD". Wait until firmware upload is completed (about 5-8 s)
- After upload the plugin will connect to this controller automatically.
- The connected board will appear in SimVim Status window.
- Connect a toggle switch to pin #5, GND and throw it on/off
- The Pitot switch state will changing accordingly with your switch position
- The on-board LED on the controller board will change its state (Pitot Heat is on/off).
After successfull first test you can be sure that SimVim plugin communicates with your controller, and you can start configuring it in the Configurator.
If your master board already has SimVimCockpit© firmware and a new version of the firmware becomes available, the plugin will inform you of this and present you the Upload window with the options already filled in.
- For USB connection, just be sure that all options are correct and click "Upload".
- For LAN connection, connect your master board to USB (or disconnect and connect it again) and click "Connect". After that, check the options and click "Upload".
SimVim Connection, notes
- You never need to upload the firmware again to change input/output configuration, all you need to do is create new data configuration file and connect all input/output devices to your master board correctly.
- If you have changed the data.cfg file while X-Plane is running, just click the "Reload Configuration" button in the Status window.
- With firmware uploaded you no longer need to unplug your controller board USB cable before X-Plane launch. If you use Ethernet firmware you don't need USB cable to be connected until you will need to upload new version of firmware.
- If you have reconnected your board USB cable while X-Plane is running, select "Hardware Reconnect" from the SimVim plugin menu.
Plugin should always establish connection automatically 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.
SimVim Plugin Reconnection options:
- 1. [Reload Configuration] button in the "Status" window reloads all SimVim configuration, it should be used when you saved new data configuration file
- 2. [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).
- 3. [Reload Plugins] menu item will restart the SimVim plugin (and other plugins in your system). Use it when you have updated the plugin while X-Plane is running.< /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.
Some tech information for those who are interested
Data exchange sequence
SimVimCockpit can use either Ethernet (LAN) or USB connection (wich actually used as asynchronous virtual serial interface when USB ports are just used for serial emulation). 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 when USB is used) 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.
- The plugin and controller firmware “find” each other at start, and the plugin establishes connection with the controller.
- Plugin - reads data configuration file, creates all needed variable structures for data, different I/O types and output devices.
- Firmware - sends configuration requests to the plugin.
- Plugin - sends configuration data on every request.
- Firmware - configures controller ports for inputs/outputs, saves received parameter options for input/output environment.
Data sending is blocked for plugin in this time.
- Firmware - sends current states of all inputs (switches, analog axis). Allows the plugin to send data and waits.
- Plugin - sends all current output values in one packet (or several, in the following X-Plane frames).
- Firmware - sends all received data to output functions ( LEDs, displays, gauges).
- Firmware tracks and stores all configured inputs, and waits for a strobe signal or data packet from the plugin. When the strobe/data is received, the firmware sends only the changed input states (switch/button positions, analog axis positions, encoders step count), to the plugin.
- In every X-Plane frame, the plugin processes received data, checks all assigned conditions to disable, enable or change inputs parameters and sends all changes to X-Plane - executes commands , changes datarefs or calls some custom SimVim functions.
- Then plugin reads data from the X-Plane variables accordingly with configuration, checks all assigned for outputs conditions (to disable, enable or change the source for some outputs) and sends output data packet to the controller. Only data that changed since the last frame are sent. If there were no changes in output data, only the strobe signal is sent.
- SimVim firmware can potentially send data with the speed of 1000 times per second but sends them in every X-Plane frame (it's X-Plane's limitation - the plugin can send and receive data only with the frequency of X-Plane frame rate). In our earlier interfaces the firmware always sent data as soon as there were changes, and it could result in much redundand data when dealing with fast encoder rotation or analog input noise, especially if X-Plane had low framerate. Now, this data is only sent when requested by the plugin.