Status: Enclosure in production

I am creating a console/simpit for controlling Kerbal Space Program. As much as possible, I want this to be a full replacement for the keyboard and mouse controls. Although this project is for me, I am trying to make this as modular and configurable as possible for other DIYers to follow in my footsteps.

Rather than a simple keyboard emulator, I am going to use the fly-by-wire controls available via the Telemachus API. I am using a heavily modified version of thearn's Python-Arduino-Command-API to send read/write requests over serial to transfer telemetry and fly-by-wire data from the Arduino to a Python script and 602p's pyksp module for communicating from Python into Kerbal Space Program.

I am using an Arduino Mega 2560 as my controller due to the larger quantity of IO pins it has. This frees me from needing daughter boards for multiplexing. I've created a basic shield which provides convenient pins for connecting dupont cables which will run to each component. One of the photos shows a 6 pin connector running from this board to the joystick. This provides 4 signal pins as well as +5v and GND.

I started out using a protoboard with conductive paint, but that was very unreliable. I eventually moved to soldered traces, and finally to a fabricated PCB. I used Fritzing to design the board and have uploaded it to my Github repo. I ordered my PCB from Seeed Studio Fusion. This is the first time I've designed and ordered a PCB, but it was simple enough that it came out well.

Here's an overview of what's working and what's planned:

Complete:

Communication between Arduino and Kerbal Space Program

Protected input for Staging and Abort

API Buttons

Dual Joysticks

Non-API Buttons Trigger a keypress

Throttle

Indicator LEDs

Configuration from a file Can read JSON from a file Uses this data to create objects for hardware

7-segment Displays Python class complete and tested Hardware tested

LED Bargraph Displays Python class complete and tested Backpacks assembled Hardware tested

Full hardware test Replaced LEDs and resistors in buttons Soldered all wire harnesses to buttons Fixed bad traces on protoboard Mounted all controls and displays in a new shoebox Tested and working

Setup script that checks for dependencies

Printed PCB Arrived and Assembled Installed and tested

Onboard Raspberry Pi + Wifi + Battery Raspberry Pi 2 Rechargeable battery

Trackball for mouse control via Synergy

Multiple Arduino support One computer to handle multiple devices Each identified by a UUID

Multiple mode support Remap controls and displays for rovers, EVA, etc

Configuration wizard to create JSON configuration file

Display for showing configuration SpaceX Dragon-like on a touchscreen? Use touchscreen to display options in SpaceX style Fits better with overall aesthetic than going with Apollo-era tech Options: Selecting displayed data Selecting display formatting Changing modes Interface is web based using Flask Possibly use smartphone as display



In progress (v.0.9.1):

Code cleanup and optimizations Fix issues found by code analysis Fix (most) PEP8 compliance issues

Officially test on Raspberry Pi

Automate build and testing

Investigate packaging as .pex

Enclosure Modeled all components in SketchUp Trying out different layouts Planning materials and assembly

Throttle handle I want something like this. Modeling in SketchUp Trying to have my library 3D print it, but it's not going well...



Planned for Final Version (v1.0.0):

Enclosure Material: Wood and Acrylic Style: SpaceX style feel, but more green Layout: Slanted console

Documentation

Improve UI to look more like Dragon 2 interface

Ideas for the future (v2.0.0):