Apollo simulator parts laid out on a workbench: switches, arcade buttons, displays, meters, a multimeter, and a soldering station

Apollo Simulator Electronics

I spent some time researching the Apollo 11 mission and came up with a full list of activities that the simulation should include. They cover everything from initial launch preparation to splashdown in the Pacific. From there I was able to map out most of the switches and indicators that are needed to execute the full mission. They will likely change, but that’s how these things go.

I figure I need to read 62 digital and 4 analog inputs, write to an LCD character display, and drive roughly 620 LEDs!

The first decision is the brain for the simulation itself. I happened to have an old Raspberry Pi 3B+ lying around from an old project. It will act as the higher-level controller for the simulator by managing the mission sequence, audio, timing, and other logic.

I don’t have much confidence in an old Pi handling low-level device I/O while running a full simulation, playing audio, and other tasks at the same time. So, I decided to use a separate Arduino Uno to handle all of the panel I/O. It will read switches, buttons, potentiometers, a joystick, and keypad, then control various lights and displays. The basic idea is that the Pi knows where the spacecraft is in the mission, while the Arduino takes care of interacting with all of the switches, lights, and displays.

Since there are far more devices than a single Arduino has pins for, I’m using I/O expanders to add a large number of additional digital inputs and outputs over a small number of pins. The MCP23017 has 16 I/O pins, has been around forever, and works on the I2C bus so only two wires are needed to communicate with it. I’m using 4 of these for a total of 64 inputs.

Sticking with the I2C bus as my main communication path, I decided to use LED driver boards to allow the Arduino to handle hundreds of LEDs. The HT16K33 LED matrix driver boards can handle 128 LEDs if they’re wired in a matrix configuration and they handle the repetitive switching and multiplexing needed to keep large groups of LEDs and displays updated. I’m using 6 of these for a total of 768 possible LEDs.

That covers most of the main electronics on the simulator. There are a few other devices to call out specifically since they help create the look I was going for.

There are many levels on a ship that need to be monitored: fuel, batteries, voltage, current, power, etc. These Luckylight 12-segment LED bar graphs are perfect for this. They have a red and green LED in each segment that when lit up together create orange. Three colors to show good, warning, and alert. That makes 24 LEDs per bar graph, but they’re already wired internally in a matrix.

A 1960s spaceship needs plenty of 7-segment displays to show the mission timer, attitude, and other critical values to the astronauts. These 4-digit displays are packaged nicely and I can just hide a digit behind the panel for displays that only need 3 digits. Each digit and associated decimal point is made up of 8 LEDs, but the entire device is already wired in a matrix to reduce pin counts.

I needed a way to give the astronauts messages from Houston or the ship’s computer that would stay up even after voice audio plays. I re-used the 4×20 LCD character display from my LED Bar project. It doesn’t use I2C, but I have plenty of Arduino pins available to handle this.

One of my goals was to include math problems in this project for my kids to solve. So, I needed a keypad for them to input numbers. This keypad doesn’t use I2C and requires scanning the keys since they are matrixed together, so it has to be handled differently than the other inputs.

Finally, I needed speakers to make the experience fully immersive. I found a cheap pair of external speakers that could fit on two separate panels. They plug into the Pi’s standard audio jack and get external power from the Pi’s USB port.

The rest of the components include several types of toggle and rocker switches, illuminated pushbuttons, red and green indicator LEDs, potentiometers, and a joystick. My full list of components is shown below with links to where I bought them.

The next step is figuring out how to divide everything into logical panels and how all of it will be wired together.

Parts List

SourcePart #Description
Adafruit142716×8 LED Matrix Driver
Adafruit73216 I/O Port Expander
SparkFunCOM-114057-Segment Display
Adafruit171912-LED Bargraph
Adafruit3487Green Arcade Button
Adafruit3489Red Arcade Button
Adafruit3488Yellow Arcade Button
SparkFunCOM-09182Arcade Joystick
SparkFunCOM-1466212-Button Keypad
Adafruit491Square Illuminated Pushbutton
SparkFunCOM-09278Red Missile Switch Cover
MouserGRS-2011B-2000Rocker Switch – SPST Off-(On) momentary
MouserGRS-2011-2600Rocker Switch – SPST On-Off
NewarkMCR13-7-06Toggle Switch – SPDT On-Off-On
NewarkMCR13-5-05Toggle Switch – SPST On-Off
NewarkCR-1745mm LED Holder
NewarkRTF-109010mm LED Mounting Clip
SparkFunCOM-10002Black Metal Knob
Adafruit562Panel Mount Potentiometer 10KΩ
Adafruit4219Slide Potentiometer 10KΩ
Adafruit3691Panel-Mount Banana Jacks (Multi-Color)
Adafruit5471Red Banana Plug Cable

2 responses to “Apollo Simulator Electronics”

  1. […] the small protoboards that hold the LED drivers and I/O expanders (see the parts list in the Electronics post). I put them in the middle of the panel to keep the wire runs as short as possible. I created […]

    Like

  2. […] started by building the small protoboards that hold the LED drivers and I/O expanders (see the Electronics post). I put them in the middle of the panel to keep the wire runs as short as possible. I created […]

    Like

Leave a Reply