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!
Kickstarter campaign was a super success!
Bill Walker (creator of the Apollo Educational Experience Project), has written an amazing custom software (with nearly 50 functions) with a Command Reference modeled after the Apollo Flight Plan for his 2 Open DSKYs and is making it available exclusively to all via his GoFundMe page. Please consider supporting him.
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. This current prototype code tests all the 7 Segments/Maxim shift registers, all Neopixels, the Very Accurate Real Time Clock, the 6 DOF IMU, the GPS and the MP3 player.
All this functionality in 3 authentic Verbs and 3 authentic nouns and 3 Programs we added for demo purpose.
VERB LIST NOUN LIST PROGRAM LIST
16 MONITOR DECIMAL 17 IMU 62 “We choose to go to the Moon”
21 LOAD DATA 36 TIME 69 “The Eagle has Landed”
35 TEST LITES 43 GPS 70 “Houston we’ve had a Problem”
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.