This project is still a work-in-progress
This projects aims to create an affordable and easy to manufacture, yet as realistic as possible replica of the DSKY used in the Apollo program to interface with the Apollo Guidance Computer (AGC).
Do you want a DSKY but can't build one? Buy one here
Need Help? Join our Discord here
Do you just want to have a DSKY display in your web browser?
- Make sure you have NodeJS > 18
- Run start.bat and answer the prompts
Do you want to build the whole DSKY replica?
- Print the .3mf/.stl meshes found in the '3D Models' folder.
- The recommended display is the 960x544 AMOLED MIPI display, connected to the Orange Pi via HDMI through an adapter board.
- A legacy 40-Pin 5" 800x480 LCD variant also exists but is no longer recommended; new builds should use the AMOLED.
- Order the PCB:
- The board is designed to be ordered fully assembled from JLCPCB. The fabrication files (gerbers, BOM, pick-and-place positions) are in the
Boards/Single_board/productionfolder.
- The board is designed to be ordered fully assembled from JLCPCB. The fabrication files (gerbers, BOM, pick-and-place positions) are in the
- Calibrate and flash the firmware:
- Install PlatformIO into VSCode
- Open this repository's root folder in VSCode — PlatformIO will pick up
platformio.iniat the root - Each ATmega328P has a slightly different internal oscillator. You must first determine your chip's optimal OSCCAL value:
- Flash the
bare_calibrationenvironment to run the OSCCAL sweep - Use
firmware/tools/osccal_reader.pyto read the sweep results and find the best value - Set the
-DOSC_CAL=0xNNflag inplatformio.iniwith your value - Flash the
bareenvironment with your calibrated firmware
- Flash the
- Set up the Orange Pi:
- See the Orange Pi setup guide.
- Pre-built .img files have been shared around the community, but they are not recommended as they may be out of date.
- Make sure you have NodeJS > 18
- Run start.bat on your PC to launch the web display
- Documentation: Useful information to better understand how the different pieces of the puzzle talk to each other
- 2D Models: SVG files for alarm labels and backlights.
- 3D Models:
- 0.4 Nozzle: All printable meshes (enclosure, display housing, keyboard plate, mounts, etc.) designed for a standard 0.4mm nozzle.
- Keys (0.2 Nozzle + AMS).3mf: Multi-color key models for a 0.2mm nozzle with AMS.
- Firmware: PlatformIO project containing the firmware for the bare ATmega328P on the PCB. Includes OSCCAL calibration tooling.
- Programs:
- next-dsky: Full-stack Next.js application that serves as the main DSKY UI and backend. Handles serial communication with the PCB, WebSocket connections to AGC simulators, display rendering, and configuration. * Requirements: NodeJS >18
- Running:
npm installthennpm start(or usestart.batfrom the repo root)
- Running:
- DSKY-Bridge: Submodule (nhadrian/DSKY-Bridge) — bridge utility for the DSKY.
- nassp-cloud: Node.js service that monitors NASSP (orbiter simulator) telemetry via WebSocket and manages automatic restarts.
- click-generator: Python program that procedurally generates relay clicking audio sequences to emulate the DSKY's relay boxes.
- next-dsky: Full-stack Next.js application that serves as the main DSKY UI and backend. Handles serial communication with the PCB, WebSocket connections to AGC simulators, display rendering, and configuration. * Requirements: NodeJS >18
- Boards
- Single_board: Unified KiCad PCB project containing the keyboard matrix, alarm lights, serial interface, and backlight driver. The
productionfolder contains ready-to-order JLCPCB fabrication files.
- Single_board: Unified KiCad PCB project containing the keyboard matrix, alarm lights, serial interface, and backlight driver. The
This project is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).
You are free to build one for yourself, modify the design, and share your changes — as long as you credit the original, do not use it commercially, and release your derivatives under the same license. Commercial sale of this device or its derivatives is not permitted without prior written consent from the copyright holder.