Rocket Controls Fit for a Kerbal

Kerbal Space Program is a space simulation game. You design spacecraft for a fictional race called Kerbals, then blast those brave Kerbals into space. Sometimes they don’t make it home.

If controlling spacecraft with your WASD keys isn’t immersive enough for you, [marzubus] has created a fully featured KSP control console. It sports a joystick, multiple displays, and an array of buttons and switches for all your flight control needs. The console was built using a modular approach, so different controls can be swapped in and out as needed.

Under the hood, three Arduinos provide the interface between the game and the controls. One Arduino Mega runs HoodLoader2 to provide joystick data over HID. A second Mega uses KSPSerialIO to communicate with the game over a standard COM port interface. Finally, a Due interfaces with the displays, which provide information on the current status of your spacecraft.

All of the parts are housed in an off the shelf enclosure, which has a certain Apollo Mission Control feel to it. All [marzubus] needs now is a white vest with a Kerbal badge on it.

32 thoughts on “Rocket Controls Fit for a Kerbal

    1. Whoa… weird to see Space Nerds In Space mentioned here (I am the author of SNIS). SNIS has a pretty easy (well, easy if you know C) way to connect hardware. Take a look at snis_device_io.h which defines the API to send input to the game, and device-io-sample-1.c for a trivial example of using it. I once hooked up a toggle switch to fire torpedoes via arduino using this API, but that’s as far as I’ve taken it… https://www.youtube.com/watch?v=w6vwbhHMmI4

      1. Great news :)

        I bought Artemis, but then i heard from SNIS. So i already set up an compile server for compiling/making live ISOs :) Now i am just searching for some geeky friends who are willing to play.

      1. Forgot this in original comment briefly, but it also cuts down quite a bit on response time to have a dedicated micro just to talk to the computer as compared to somehow doing that while also taking input from everything else and pushing data to a screen at the same time. The way it’s described in the article and the writeup, such as it is, one mega is dealing solely with the serial to/from the computer, one is dealing with all the buttons and the joystick exclusively and feeding that to the serial one, and the due is taking data from the serial mega and displaying it.

        1. A single FPGA could handle all of that with no issues.

          Using proper interrupt code on just about any micro would handle most of that without issues, depending on some factors. Using a giant shift-reg plus some other external logic, you could easily get a vast amount of IO under a single interrupt pin, two additional pins for clock and data, and no longer have to waste CPU actively polling them. Heck, you could even use an IO expander that has built in interrupt functionality if you don’t want to muck with making a logic block that does it.

          tl;dr: Its a hacky and overpriced solution, but dear god I want to build a panel like that.

          1. The MCU’s were not the expensive part here, but a shift register / io expander are already going in. The main cost of this whole setup was the buttons and the Abox enclosure alone. Im down to one mega and the Due now, magic smoke has escaped. And I will probably replace the mega with a UNO and a register once I’m happy with things. Using a mega for DEV is just easier, since I can focus on the bare minimum.

            All in All, I think this build cost around 157 EUR for all the components and the Housing was.

            Mega: 10 EUR
            DUE + LCD: 18 EUR
            4-axis: 20 EUR
            Buttons: 16 EUR for 12
            Safety Switches: 14 EUR for 8
            OLED: 4 EUR each
            Abox Chassis: 43 EUR

            /Kegan ( marzubus )

    1. i can understand why the due is there. 8 bit arduinos are kind of slow for those off the shelf serial displays. just to scan in an image takes forever. but why you couldnt run the other hardware off of the due is beyond me.

      i do however frequent the ksp modding board so i believe it has something to do with the arduino interface plugin not working with the due yet because of architecture differences.

      also the standard hid interfaces are best served with a leo, which isnt hard to turn into a native usb hid mouse/keyboard/joystick controller. pretty sure the due could do this job, but at what cost to graphics?

      so you got one talking to ksp, one drawing graphics, and one being an input device.

      you could probibly do it with a raspi on a network connection, and have a decent gpu doing the graphics end (those adafruit touchscreens would make a great mfd). stick some port expanders and an adcs/dacs on the i2c bus for all your input. though i dont think the arduno plugin would work for that setup. theres another ksp plugin that can work over networks, but im not sure if it compares to the arduino specific plugin in features.

      the other reason is that ksp is a game played by a lot of tweens, so you want a system that is accesible to them. and i cant think of anything better than arduino for that.

      1. Hi,

        The reason I went for not just the due is the 32bit issue, and many io pins are used to drive the lcd and oled screens. I will use a shift register for maximizing a UNO for all the rest once I’m happy with things.

        KspSerialIO is very sensitive to latency at the moment, so until the protocol can be optimized, this setup will have to do. I have already dropped one of the megas. Mostly because I fried it. :/

        /Kegan

    1. Making something like this for your kids would net you some serious ‘awesome dad’ cred.
      I remember playing mechwarrior as a kid on one of those hughenormous controllers, that my dad dug up somewhere, and having a huge controller was half of the fun.

  1. Wow this is cool but I think it isn’t fair that the Kerbals now have a better space programme than NASA! (I would have said North Korea but lets be honest, a hillbilly with a bottle rocket stuck in his bung hole has a better space programme than North Korea.)

  2. I’m working on something similar, but using the the TI TM4C1294 connected Launchpad for the brain. I’m not doing a lot of display stuff… as I’ve got a second monitor handling that. The second monitor’s application and the launchpad are both communicating with the game via the Telemachus plugin… which means I’ve got the ability to control Mechjeb from external keys as well.

  3. a question for Eric Evenchick years ago you hacked a DELL AC power adapter – ID CHIP …
    just a quick question if I want to use this Power source(PS) as an open source on a power board
    at about stated output 19V can I ignore the signal wire and just use the + / neg as I would a battery
    within the stated aperage on the unit …
    please dont flame me I looked all over to find a person with a clue
    send answer to 33donnn@gmail.com please n Thankyou Don

      1. I’m going to sound like some ad employee (I have no link whatsoever to the teensy people), but why not a teensy if you are going to change it? Look at the specs of them http://www.pjrc.com/teensy/ And they work with the arduino IDE so no hassle to use.

        But if it works for you to use your classical arduino I guess there is no reason for me to push it either. It’s just that the only way a teensy can be an issue is when you use shields designed to fit on the arduino, but I gather that you don’t.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.