Introduction: Open Apollo Guidance Computer DSKY
Proud to be a Featured Instructable since 1/10/18. Please Vote for us and give us a Like!
Currently on Kickstarter!
While this is certainly not the first re-creation of the Iconic AGC (Apollo Guidance Computer) DSKY (Display/Keyboard) used in all Apollo missions of the 1960s, and you can expect even more to appear this year and next year because of the upcoming 50th anniversary of the first moon landing, we decided a few years ago to create our own version that would meet a minimum number of pre-requisites.
This project came about from the suggestion of one of our Open Enigma backer/contributor and we would like to acknowledge Rob for his suggestion/contribution. Thank You Rob!
- Has to be built with an Arduino and offer Open Source software.
- Needs to look and feel like the real thing. A faithful replica obviously WITHOUT Core Memory…
- Needs to emulate function/behavior of the Apollo flown units.
- Needs to use components that allows someone to build it as a kit.
Step 1: RESEARCH, Original Specs Gathering.
While we did NOT personally have access to a physical device, we are fortunate that other people who have (or had) access have documented their findings (Fran Blanche for instance - whether you support our Kickstarter or not, please consider supporting her Crowdfunding campaign https://www.gofundme.com/apollo-dsky-display-project) , some have allowed us to benefit from this knowledge. As Isaac Newton wrote, “We do stand on the shoulder of giants.”
Using the excellent paper kit from EduCraft ™ for exact dimensions, the free iPad app from AirSpayce Pty Ltd for minimum viability features, and the very detailed book from Frank O’Brien “The Apollo Guidance Computer – Architecture and Operation” along with numerous NASA resources including the full original code on GitHub, we were able to determine and replicate many of the exact hardware and software specifications.
The Original Electroluminescent displays used in Apollo were a very short lived technology which has long been gone. It went the way of obsolescence early in the 1970s so we very quickly decided to use LEDs in the form of 7 segments to emulate them. This also allowed us to NOT have to use the High Voltage and the 156 mechanical relays to drive the EL displays. Finding the right size was a challenge but little did we know that finding a +/- 3 Segment would be Mission Impossible! (even in this day & age…) We did find in Israel some 3 segments +/- integrated with a 7 segment unit and decided to give them a try for our earliest prototypes…
Step 2: A Little Bit of History…
It should be noted that the first thing that really resembled a modern microcontroller would probably be the Apollo AGC. This was the first real flight computer, plus, the first major use of integrated circuits. But you have to go forward another decade before all the basic functionality of a computer was brought together on a single LSI chip; such as the Intel 8080 or the Zilog Z80. And even then, memory, clock, and many of the I/O functions were external. It wasn't terribly convenient for the hobby user.
It is the ARM, AVR and similar chips that bring the next important step; with the inclusion of non-volatile flash RAM, it became possible to construct a computer with practically no external components. The AVR series of chips (with which we are most familiar) have buffered I/O lines, serial UARTs, A/D converters and PWM generators, watchdog timers, and even internal oscillators if wanted. In the format of the Arduino and similar boards, these chips are surrounded with a proper clock crystal or resonator, a regulated power supply, some power supply and other critical-pin de-coupling capacitors, and a few blinking lights for status monitoring.
It is ironic that 50 years later, the platform of choice for a DIY project offers basically the same functionality (Ram/Rom/Processing) at a minuscule fraction of the cost (and weight!).
Step 3: PROTOTYPING
We decided that we first needed to make a proof of concept on breadboard of 3 Maxim chips controlling 15 7 segments LEDs to make sure they would behave as expected. This was a success. We then briefly attempted to build the device on a project board and very quickly found that the circuit density would not allow the machine to be fabricated in that. You just can't get 21 7 segments + 3 3 Segments (and the 4 Maxim to control them) plus 18 LEDs + 19 Buttons to fit on the project board not to mention the micro-controller, the IMU, the RTC, the GPS, etc. So we had to proceed directly to designing the PCB which we felt was the best way to produce a reliable, faithful replica. Sorry.
We also tested the MP3 player on breadboard AND… we created a prototype of a 3D printed 3 Segment to produce the elusive desired +/- LED unit.
Step 4: Schematics
Schematics now available to help everyone who wants to build a DSKY without our PCB or Kit.
The first schematic (NeoPixels) shows how we connected the 18 Neopixels to the Arduino Nano Pin 6. The second schematic shows how we wired (all the 18) Neopixels and the 5Volt Buck, Reed Relay, Line Leveler and SKM53 GPSr along with the 19 buttons. The third schematic shows the IMU & RTC connections.
We used Surface mount 5050 NeoPixels which required a ballast resistor of 470 Ohms before the first pixel and we used a 10 uF Capacitor for every other pixel.
If you use the NeoPixel on Adafruit (Breadboard friendly) Breakout board as pictured above, then you don't need any resistor or capacitors as these are built-in on the Adafruit breakout PCB.
The GPS circuit explanation: Most Arduino GPS devices will operate on 5 volt supply. That being said, the logic level on these same devices is 3.3 volts. Most of the time, the Arduino will read on it's RX pin 3.3V as high, as it is greater than half of 5V. The problem lies in the hardware serial... We are not sure why but we have better results using the logic leveler. Not using it seems to hinge on using software serial. The software serial library and the version incorporated into newer versions of IDE modify the timers and ports on the Atmel 328 chip. This in turn disables the ability to use the Maxim library that we need/use to drive the shift registers for the seven segment displays. So we use the good old hardware serial.
The reed relay is used to switch the hardware serial on and off so that the Arduino may still be programmed while installed. It can be omitted, however the Arduino device would need to be removed from the main board for programming as the serial will be stolen by the GPS. The way this works is: when reading GPS, pin 7 is pulled high closing the reed. The GPS then starts filling the serial buffer (GPS will never shut up once he has a fix.) The serial buffer is polled and when a sufficient amount of data is detected, it is read and parsed. Then pin 7 is written low disconnecting the GPS, allowing the Arduino to resume it's normal behavior.
Step 5: 3D Printing
Below are the 5 required stl files to make a complete Open DSKY Replica.
Please note that while the Bezel and Battery Box Lid can be printed on pretty much any 3D printer, the real DSKY was 7" wide by almost 8" high so those are the dimensions of our Top Plate, Mid Ring and Bottom which requires a 3D Printer that can at least print 180mm by 200mm.
We print the Bezel, Top Plate and Mid Ring on Grey material, while the Bottom and Battery Door are printed in Black.
Step 6: Laser Cutting/Engraving
Below are the ButtonCaps Laser cut/engraved file and the Lampfield frosted window Laser printed, then Laser cut/engraved, file.
We use Rowmark (Johnson Plastics) Lasermax Black/White 2ply 1/16" (LM922-402) to cut and engrave the 19 button keycaps. As with all files submitted to a laser cutter, you may need to tweek the file size until you obtain 19mm by 19mm keycaps. On our 60Watt Water cooled CO2 machine, we use 40% power and 300mm/s speed to engrave and 50% power and 20mm/s speed to cut the acrylic sheet.
The frosted window is created by printing the above image on aptly "Apollo" named transparency (why use any other brand?) with any laser printer and then feeding it to the laser cutter/engraver to "etch" horizontally, then vertically, using 20% power and 500mm/s speed which we feel creates an ideal "frosted" look.
Step 7: BILL OF MATERIAL
1 PCB v1.0D
1 3D Printed parts
1 Arduino Nano
1 VA RTC
1 Buck StepDown
1 SKM53 GPS
1 Line Leveler
1 Reed Switch
1 DFPlayer Mini
1 MicroSD Card 2Gig
1 2" 8Ohms Speaker
1 6AA Battery Holder
6 AA Batteries
1 Wire Terminal
1 On/Off Switch
4 Sockets 24pins
1 40 Female Pins
1 10uF Capacitors
1 15 Ohms Resistor
1 100 Ohms Resistor
20 470 Ohms Resistors
22 1K Ohms Resistors
4 10K Ohms Resistors
3 100K Ohms Resistors
18 NeoPixel RGB
19 LED PushButtons
19 Laser Cut Button Caps
21 7 Segments 820501G
3 3 Segments STG
2 Frosted Windows
Most components above are easily found on eBay or Amazon and are reasonably priced.
The exceptions are of course our very own PCB (which integrates all of these components together, our laser cut Button Caps which look really good and allow the light to go through the button, the frosted windows which after trying numerous alternatives, James had a stroke of genius (more on that later) and finally, the !@#$%^ 3-Segment +/- display which we had to create from scratch. Add to this our very own 3D printed enclosure and you have all the ingredients.
If someone is ready to accept the lack of “+” sign in front of the appropriate numerical data displayed, then you can simply add 3 more 7 segments and call it a day. This was simply NOT an option for us and this is why we created our very own 3 Segment.
Step 8: 3 SEGMENT
You would think that in 2018, with all the Worldwide resources available to us, one can simply order a 3Segment +/- LED unit… Well, it is not the case!
So, we realized that in order to remain faithful to the original Apollo DSKY, we would have to create from scratch our very own 3Segment +/- LED.
After numerous designs, we finally had a 3D printed unit with integrated shadow box.
Then, we sourced the appropriate SMT (Surface Mounted) LEDs and tested them.
We were now ready to design the tiny PCB that would fit inside our 3D printed 3Segment shell.
Putting all this together was a bit of a challenge considering we can hardly see the tiny LEDs, but the result is Fantastic!
Step 9: FUNCTIONALITY
Then came the point to decide the minimum functionality of our Replica, along with production goals and what our wish list was.
After a little research, we found a free app on iTunes that could be useful, so we bought an iPad specifically for this purpose.
The Free iPad app from AirSpayce Pty Ltd gave us an idea of our MVP (Minimum Viable Product).
After writing the code to perform a Full Lamp test, we immediately implemented the Time set/display, IMU monitoring and GPS monitoring.
The code was frozen until we decided to add one of our crazy wish list item which was to playback the famous JFK speech from 1962 in the Rice Stadium “We choose to go to the Moon…”. Then we added a couple other iconic sound tracks.
Step 10: ASSEMBLY INSTRUCTIONS - Electronics
First, make sure you have all the required components.
Read through the following instructions once completely
before starting the assembly.
1. Solder all 20 470 Ohms Resistors.
2. Solder all 22 1K Resistors.
3. Solder all 4 10K Resistors.
4. Solder all 3 100K Resistors.
5. Solder the 15 Ohms Resistor.
6. Solder the 100 Ohms Resistor.
7. Optional: To help with soldering the tiny Surface Mount 5050 RGB NeoPixels, I drop a bit of solder on each of the 4 pads for each of the 18 RGB LEDs.
8. Cut 2 strips of female pin connectors and solder them to Arduino Nano location on back of PCB.
9. Carefully solder all 18 Surface Mounted NeoPixels in the proper sequence, making sure to not short with nearby vias. After assembling many units, we have discovered that it is more efficient to solder 1 Neopixel, power the Arduino (via its USB port) with the strandtest.ino to verify that it lights up, power off Arduino, solder the next Neopixel in the sequence, test it and repeat for all 18 Neopixels. As you troubleshoot issues, keep in mind that a problem with a Neopixel can be a result of the prior Neopixel NOT being soldered properly (Output pin). I found that 680 degrees is too hot (and kills red & or green sometimes), 518 degrees seems much better.
10. Cut a strip of 4 female pins and solder it to Buck Converter location.
11. Insert Arduino Nano and Buck Converter now if you want to test the RGB LEDs using strandtest.INO
12. Flush cut both black spacers under each of the 19 lighted pushbuttons to allow the buttons to fully rest on PCB.
13. Insert, then solder all 13 Lighted push buttons, making sure all the red dots (Cathode) are on the left side. Once all buttons are inserted, I power up the Arduino via its USB port to test that all 19 button LEDs turn on BEFORE I solder them…
14. Solder all 4 Maxim sockets, making sure to respect orientation.
15. Prepare the IMU by soldering his male pins and jumping his ADO pin to his VCC.
16. Prepare the Line Leveler by soldering his male pins on Low side and High side.
17. Cut and Solder the female pins to receive the IMU, the VA RTC and the Line Leveler.
18. Solder all 10 caps respecting polarity. The longer pin is positive.
19. Solder the Reed Relay, making sure to respect orientation.
20. Solder the wire terminal.
21. Solder all 21 7 Segments, making sure the dots (decimal point) are on the bottom right.
22. Solder all 3 S&T GeoTronics 3Segments (Custom Plus/Minus).
23. Insert all 4 Maxim 7219 Chips in their sockets, again, making sure to respect orientation.
24. Insert the IMU, RTC, Buck, Arduino Nano and Line Leveler.
25. Solder the Speaker and MP3 Player/SD card making sure to respect orientation AND keeping as high up on the PCB because the GPS on the other side will need to be flush with PCB to fit properly.
26. Solder the GPS after applying a layer of electric tape underneath to prevent potential shorting of pins..
27. Connect the 9Volt battery pack and test the completed electronics assembly.
CONGRATULATIONS! You are done with the electronics assembly.
Step 11: ASSEMBLY INSTRUCTIONS - Enclosure
BILL OF MATERIALS
1 3D Printed Bezel
1 3D Printed Top Plate
1 3D Printed Mid Section
1 3D Printed Bottom
1 3D Printed Battery Door
1 Printed Frosted Window
1 Acrylic Window
19 Laser Cut Button Caps
15 Socket Head Wood Screws (M3-6mm)
6 Tiny wood screws
Once electronics assembly is fully tested, please proceed with the following steps:
1. Position all 19 Button caps at their proper location following picture above.
2. Carefully insert assembled PCB in Top Plate. It may be a tight fit and may require a little sanding of the 3D printed component.
3. Using 6 Tiny copper screws, screw the PCB to the Top plate. Do NOT Overtighten.
4. Using 2 of the Socket Head screws, mount the Speaker and then the On/Off switch to the 3D Printed Mid Section by pushing it in.
5. Using 8 of the Socket Head screws, screw the assembled Top Plate to the Mid Section, making sure that the On/Off switch and speaker hole is in front.
6. Solder a jumper wire to each side of the speaker, jumping them to each Audio Out hole next to SD Card.
7. Using double sided tape, mount the battery box inside the battery compartment, making sure that both red and black wires are inserted in the hole.
8. Screw the Black wire from battery box in the Gnd position of Blue Screw Terminal and Solder the Red wire from battery box to either pins on On/off Rocker switch.
9. Screw a Jumper wire to 9V side of Blue Screw Terminal and solder the other end to the available pin on On/Off Rocker switch.
10. Close Back cover and Using 8 of the Socket Head screws, screw the assembled Back Cover to the Mid Section. Do NOT Overtighten.
CONGRATULATIONS! You are done with the enclosure assembly and you now have a complete DSKY!
Step 12: SOFTWARE
Please visit our other Open DSKY Instructable titled "PROGRAMMING THE OPEN DSKY"
for more detailed programming information and videos on programming your Open DSKY.
Because we make extensive use of Neopixels, you will require to visit the Adafruit Web Site and download their wonderful library. This library comes with some fine examples like "standtest.ino" that Limor and her team also wrote.
Also, because we use Shift Registers to drive the 7 Segments, the Maxim library is needed for the Max7219 chip.
Get it here: LedControl Library
Attached is our current code as of 1/9/2018. This is a prototype with limited functionality. Please check with www.OpenDSKY.com as we continue to develop and streamline the feature set.
Enjoy the video clip for a short demo of some of the functionality currently implemented.
Step 13: KICKSTARTER
Following our successful formula used for our Open Enigma project, we are offering on Kickstarter various kits, assembled/tested units and an Ultimate 50th Anniversary Limited Edition (Make 100) Replica.
We are offering:
- The PCB alone
- The Barebones Kit
- The DIY Electronics Kit
- The Complete Kit (with 3D Printed and Laser Cut components)
- The Assembled/Tested Unit
- The Limited 50th Anniversary Edition with Serial Number and Certificate of Authenticity
Our Kickstarter is currently LIVE!
Please visit https://opendsky.com for more info.
Please visit www.stgeotronics.com to order your PCB or Kit.
gizmologist made it!
We have a be nice policy.
Please be positive and constructive.
This is a fantastic project. Great work! I feel this is a more authentic unit that that other non-DSKY project that has been mentioned. Can't beat real 7-segment displays. And on ebay that other unit (front + back) is listed for $1,500 - which makes for an expensive desk ornament; pretty though it is.
One thing it has, though, which I wish your DSKY had, is real mechanical keys, as opposed to clicky buttons. I realize that would have meant 2 PCBs, a cable, different mounting, etc, etc... but I think it would be worth it. Version 2 maybe? :-)
One actual question: It looks like the unit runs on 4 AA batteries (please correct me if I'm wrong). Can you give an idea of how long a set lasts, or if there's a power connector that I'm not seeing?
Thanks for doing this. This is wonderful. A great homage to Apollo.
Thanks for the quick response. Can't fault your choice to use tried and tested keys - especially for a kickstarter with other people's money on the line. One week of power sounds good. Didn't realize there was a screw terminal too. Very useful.
Thank you for the compliments and feedback.
We did consider using Cherry keys, but we have been using similar buttons in our Open Enigma for 4 years and have never had issues so we elected for the simplicity and ease of use of these integrated lighted buttons.
Our Open DSKY runs on 6 AA batteries (9 volts) and although we did not leave a unit on until batteries are dead (yet), we believe that depending on battery quality, user selected brightness of Neopixels and 7 segments, number of lights turned on... the 6 AA should work for a whole week or more... The screw terminal can be used to directly hookup any 9 volt power brick if desired.
How does this compare to the one that Telemetrics is making? I've seen their DSKY and it actually looks like the real thing and for about the same amount you guys are asking. They have a larger case that looks identical to the one they used on Apollo and they said theirs does everything the original one did and more. Instead of the EL screen they use a digital screen that can also be used as a full computer. Their DSKY is fully networked with WiFi, and GPS and even has Bluetooth that plays every single mission recording and telemetry script. They said they are making a FDAI that will connect to the DSKY and eventually full instrument panels and the whole thing can be used with space simulator software like Kerbal and its almost the same amount of money. I was trying to see what this other DSKY does and it's not very specific. Can you go over what the differences are?
We have waited several days to post an answer to this question as we needed to adequately research this other maker replica. Finally found it on the web. Here is a Telemetrics employee showing how they perform a “light test”.
This is how the same lamptest is done on a Raytheon DSKY and on our Open DSKY.
After viewing these 2 lamptests, should the idea of browsing the internet and running Linux on a screen smaller than your phone borrowing your keyboard and mouse from your computer, encased in a very nice DSKY looking box appeals to you, then Telemetrics has you covered. However, if you want an Open DIY DSKY Replica where YOU can participate as much as you want and has built-in expandability supported by a wide community, then S&T Geotronics has you covered.
Our Open DSKY will execute as many Verbs, Nouns and Programs as humanly possible without an actual Saturn V engine or retro-boosters attached. Oh, our Open DSKY will be totally identical in size with the original when we release our password protected servo motor actuated concealment storage as an alternative back for the Open DSKY. This will allow some DSKY owners to hide their firearm or plutonium or favorite blend of herbs or spices inside their DSKY which is obviously out of scope in this instructable.
Second, we haven’t seen a completed unit from Telemetrics. But we can tell you with reasonable certainty that the Telemetrics “Replica” is a very different animal indeed. It looks nice. However, we feel it is not a DIY project. Is it available as a kit? Can you download the files today and make your own? Hmm. This is Instructables.
The real Raytheon DSKY contains no computer whatsoever and runs no code. It is merely a DISplay and KEYboard device. We have added to our display & keyboard a real Arduino Open Source microcontroller and an array of input and output peripheral devices which can easily be programmed/modified by any end user.
A DSKY that can send/receive email, surf the interwebs and manage your stock portfolio seems to us a little out of scope compared to the original. And why would anyone want to run Linux on that tiny screen? We played with the 5” TFT LCD many years ago for our Open Electric car conversion and even considered it for our Open DSKY.
Fact: The MIT AGC computer that the DSKY connects to had 32K of ROM, 2K of RAM, 15 bit architecture on a single processor core and operated sub 1 MHz.
Fact: Our Arduino microcontroller has only 32K of ROM, only 2K of RAM, a 16 bit architecture on a single processor core and operates at 16 MHz.
Fact: The original AGC processor obeyed 36 finite machine instructions.
Fact. The ATMega328 does have more commands, however it can process the same 36 instructions on a machine language level.
Our upcoming Open AGC simulator to connect to the Open DSKY (if desired) will run all of the Apollo missions as well as interface to Kerbal Space Program. While our Open AGC will not contain as much Rope Core memory as the original, we will thread (and share via Instructables) a few bytes of Rope Core that actually works. No mechanical relays due to power consumption limits.
These are 2 different product and there is room for both and many more as mentioned at the very top of this instructable.
This is a DIY Open Source Kit. We learned very quickly from our Open Enigma instructable that different people put different levels of “Y” in DIY.
The unit you mention looks very interesting and nice. Is it available as a kit? Can someone other than Sam build it? Can I download its STL files? Is a PCB offered at minimal cost? Everyone has access to the MIT code on GitHub, is this unit emulator code available?
Kurtex, P.S. A lamptest on our unit is done by pressing Verb, the Number 3, the Number 5 and Enter. Works everytime. Just like on the real DSKY and more than likely on the one Fran Blanche is building. No mouse, keyboard, python shell script necessary…
Our immediate reaction to your posts was to simply flag them as inappropriate which would remove them altogether. However, the other DSKY that you brought to light certainly has merit and your comments are helping people understand our product better thus generating traffic and interest.
Does this actually run full missions?
Yes. That is the objective. However on our unit, they will need to be conducted here on Earth in your car, private airplane or other modes of movement to a desired location. As we stated elsewhere, “We cannot be held responsible for any personal injury or loss resulting from the use of your DIY rocket or maker spacecraft with our device.”