

Single board
An affordable and easy to manufacture DSKY replica
- Size
- 169.9 × 190.9 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 116
- Nets
- 93
- Pads
- 491
- Tracks, vias
- 1,150, 268
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 11 Feb 2024
- Updated
- 4 Nov 2026
Overview
Single board is an open-source printed circuit board by Apollo-Replica, from the Apollo-Replica/DSKY repository on GitHub. It is a 2-layer board of 169.9 × 190.9 mm with 116 parts on 93 nets, routed with 1,150 tracks and 268 vias.
It is built around the ATMEGA328P-AU, CH340C and SK6812MINI-E, with the MBR0520LT1G among its other parts. Its parts include 41 capacitors, 35 diodes, 19 switches, 14 resistors and 5 connectors. It belongs with the AVR (ATmega, ATtiny) boards of this library.
Main components
4ATMEGA328P-AU
TQFP-32(7x7)-40℃~+85℃ 1.8V~5.5V 10bit 1KB 20MHz 23 2KB 32KB 8 Bit AVR Built-in FLASH TQFP-32(7x7) Microcontrollers (MCU/MPU/SOC) ROHSMicrochip TechnologyMicrocontrollers (MCU/MPU/SOC)CH340C
SOP-16-20℃~+70℃ 2Mbps 3.3V、5V 50uA 7mA Transceiver USB 2.0 SOP-16 USB Converters ROHSWCH (Nanjing Qinheng Microelectronics)USB ConvertersSK6812MINI-E
SMD-40℃~+85℃ 0.6mA 1.78mm 120mcd~240mcd 120° 160mcd~320mcd 1kHz 2.8mm 2000V 3.2mm 3.7V~5.5V 460nm~470nm 515nm~525nm 620nm~625nm 800Kbit/s 815mcd~1275mcd Semi-transparent lens SMD RGB LEDs(Built-in IC) ROHSOPSCO OptoelectronicsRGB LEDs(Built-In IC)MBR0520LT1G
UncategorisedUnknown maker
README
Readme.mdDSKY Replica
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).
Quick start
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?
- Get the parts: see the bill of materials.
- 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 - Once per board, with a USBasp on the ICSP header (J2), burn the bootloader:
pio run -e bare_usb_bootloader -t bootloader. From then on everything goes over the board's USB-C. Never use the Arduino IDE's "Burn bootloader" with a Nano/Uno selected: it sets crystal fuses and the board has no crystal. - Each ATmega328P has a slightly different internal oscillator. Calibrate it once; the value is kept in the chip's EEPROM, so the firmware is the same for every board:
- Upload the OSCCAL sweep:
pio run -e bare_usb_calibration -t upload - Run
python firmware/tools/osccal_reader.py --write: it reads the sweep, picks the best value and stores it in EEPROM - Upload the firmware:
pio run -e bare_usb -t upload
- Upload the OSCCAL sweep:
- 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
Already have a DSKY and want the latest software?
- Updates are installed from the DSKY itself: open the menu (press NOUN three times) and go to SETTINGS → UPDATE. See Documentation/updates.md.
Repository contents:
- Documentation: Useful information to better understand how the different pieces of the puzzle talk to each other. Includes the bill of materials, the Orange Pi setup guide, the OTA update system, how to deploy code to a device over the network, and how to develop on a physical DSKY with hot reload.
- 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
License
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.
Parts
116| Qty | Value | Footprint | References |
|---|---|---|---|
| 39 | 100nF | Project Libraries:0805 100nF | C2, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24 +23 |
| 34 | SK6812MINI | Project Libraries:SK6812-MINI-E | D1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +18 |
| 6 | 5.1k | Resistor_SMD:R_0603_1608Metric | R2, R3, R9, R10, R44, R45 |
| 5 | 10k | Resistor_SMD:R_1206_3216Metric | R4, R5, R6, R7, R8 |
| 3 | USB_C_Receptacle_USB2.0_16P | Project Libraries:USB-C-TH_918-468K2029E50001 | J3, J4, J5 |
| 2 | 1k | Resistor_SMD:R_0603_1608Metric | R46, R47 |
| 2 | 4.7uF | Project Libraries:0805 4.7uF | C1, C5 |
| 1 | + | Project Libraries:Kailh_socket_MX | SW1 |
| 1 | - | Project Libraries:Kailh_socket_MX | SW6 |
| 1 | 0 | Project Libraries:Kailh_socket_MX | SW4 |
| 1 | 1 | Project Libraries:Kailh_socket_MX | SW8 |
| 1 | 2 | Project Libraries:Kailh_socket_MX | SW11 |
| 1 | 3 | Project Libraries:Kailh_socket_MX | SW15 |
| 1 | 4 | Project Libraries:Kailh_socket_MX | SW7 |
| 1 | 470 | Resistor_SMD:R_0603_1608Metric | R1 |
| 1 | 5 | Project Libraries:Kailh_socket_MX | SW10 |
| 1 | 6 | Project Libraries:Kailh_socket_MX | SW14 |
| 1 | 7 | Project Libraries:Kailh_socket_MX | SW5 |
| 1 | 8 | Project Libraries:Kailh_socket_MX | SW9 |
| 1 | 9 | Project Libraries:Kailh_socket_MX | SW12 |
| 1 | ATmega328P-A | Package_QFP:TQFP-32_7x7mm_P0.8mm | U2 |
| 1 | CH340C | Package_SO:SOIC-16_3.9x9.9mm_P1.27mm | U3 |
| 1 | CLR | Project Libraries:Kailh_socket_MX | SW16 |
| 1 | ENTR | Project Libraries:Kailh_socket_MX | SW17 |
| 1 | ICSP | Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_Vertical_SMD | J2 |
| 1 | KEYREL | Project Libraries:Kailh_socket_MX | SW19 |
| 1 | MBR0520LT1G | Diode_SMD:D_SOD-123 | D35 |
| 1 | NOUN | Project Libraries:Kailh_socket_MX | SW3 |
| 1 | POWER | TerminalBlock:TerminalBlock_bornier-2_P5.08mm | J1 |
| 1 | PRO | Project Libraries:Kailh_socket_MX | SW13 |
| 1 | RSET | Project Libraries:Kailh_socket_MX | SW18 |
| 1 | VERB | Project Libraries:Kailh_socket_MX | SW2 |
Questions
How big is the Single board PCB?
It measures 169.9 × 190.9 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Single board use?
116 parts, built around the ATMEGA328P-AU, CH340C, SK6812MINI-E and MBR0520LT1G. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Single board KiCad files?
From the Apollo-Replica/DSKY repository on GitHub, at the commit this page was made from: the board is Boards/Single_board/Single_board.kicad_pcb and its schematic Boards/Single_board/328p.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Single board design in my own project?
Its repository states no licence, so its author keeps all rights: ask Apollo-Replica before reusing the design.
Similar boards
- 2 layers75 × 66 mm

- 2 layers150 × 150 mm

BoardGame
jkordek1/Man-Don-t-Get-Angry-Board-game
"Man don't get mad" - electronic board game
218 parts5 - 2 layers68.9 × 23 mm

- 2 layers110 × 100 mm

Jbc miniregler
KarlZeilhofer/htl-loetregler-mini
Einfacher Regler für JBC Lötspitzen der Serie T210, T245 und T470, Weller RT-Spitzen und TS100-Spitzen sollten auch funktionieren.
180 parts2MIT - 2 layers80 × 29.5 mm

- 2 layers98.4 × 99.5 mm

Arduino usb c
wszeto9/2_679_PCB
PCB Project for 2.679 which is then used in my 2.007 Competition Robot
161 parts1 - 4 layers62 × 60.8 mm

Pcbcax
7bwiiza/Robot-creation
Uni project of a 3D model of a 5dof robot using Solidedge and motor control using KiCAD and MATLAB
58 parts - 2 layers90 × 60 mm

CC Load
AleksaHeler/Programmable-DC-Load
Flexible programmable DC constant current/power load using Arduin Nano & custom PCB
105 partsMIT