Skip to the content
PCBKitNew board
2 layers100 × 120 mmDcc station, the printed circuit board in 3D

DCC command station for ESP32-C6 — NMRA-compliant model railroad controller in Rust

Size
100 × 120 mm
Copper layers
2
Thickness
1.6 mm
Parts
82
Nets
56
Pads
225
Tracks, vias
722, 309
Pours
7
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
27 Mar 2026
Updated
7 Nov 2026

Overview

Dcc station is an open-source printed circuit board by cc90202, from the cc90202/DCC-esp32 repository on GitHub. It is a 2-layer board of 100 × 120 mm with 82 parts on 56 nets, routed with 722 tracks and 309 vias.

It is built around the 74HC08D, 74HC14 and LM339, with the TPS54302, SS34 and AO4407A among its other parts. Its parts include 23 resistors, 16 capacitors, 12 connectors, 9 diodes and 4 ICs. It belongs with the ESP32 and RISC-V boards of this library.

Main components

11

README

hardware/pcb/README.md

DCC command-station board

The board of the DCC-esp32 command station: 100 x 120 mm, two layers, powered by an external 12–19 V adapter. A Waveshare ESP32-C6-Zero and a Pololu DRV8874 carrier plug into its sockets.

Board, 3D render

Status

Rev B is the current design. It was built by JLCPCB and works on a 15 V bench supply on J9: power, ESP32, display, LEDs, Wi-Fi, DCC to the track and RailCom reads, and it starts with the display unplugged. Not tried yet: a reversed supply, the buttons, a 19 V supply and a short on the track.

Rev A (PR #41, commit ceebd3d) was built by JLCPCB and works on a 15 V bench supply: power, ESP32, display, LEDs, buttons, Wi-Fi, DCC to the track and RailCom reads. It carried a 230 V mains module on the board. Do not connect a rev A board to the mains: power it with 15 V on the module's output pins, as it was tested.

What rev B changes:

  • no mains on the board; power comes from a certified adapter through a barrel jack;
  • reverse-polarity protection and a transient suppressor on the input;
  • the input voltage is divided down to GPIO0, for a firmware check of the supply (not written yet);
  • a screw terminal for a bench supply;
  • three panel connectors instead of one, each cable with its own ground;
  • pull-up resistors on the display bus, so the bus is defined with the display unplugged.

The CPL already carries the rotation corrections for JLCPCB's footprints; one exported again from KiCad would not.

Power

Use a regulated adapter of 12 to 19 V, at least 2.5 A, with a 5.5 x 2.5 mm plug, centre positive, double insulated (Class II, the square-in-a-square symbol). Choose the voltage by scale: the track gets the adapter voltage minus about 1 V under load (bridge, clamp diodes, fuse), so 12 V for N and 15 V for H0.

A 5.5 x 2.1 mm plug goes into the 2.5 mm jack but makes poor contact; use the right plug.

Never use a 24 V adapter, even though it has the same plug. Nothing on the board is damaged by it, but the decoders would get 23 V, and the firmware does not check the input voltage yet.

For bench work, a bench supply can be connected to the screw terminal J9 ("+" and "−" on the silkscreen) instead of the adapter. Never use both at once: a bench supply set above the adapter would push current into it.

USB and the adapter can be connected at the same time.

Parts bought separately

  • Waveshare ESP32-C6-Zero on J4 and J5, USB-C toward the bottom edge.
  • Pololu DRV8874 carrier #4035 on J6 and J7, VM and VIN at the top.
  • SSD1306 I2C display at 3.3 V.
  • Two normally-open push buttons, resume and stop.
  • Three JST XH cables for the lid, pin 1 at the square pad:
    • J3, DISPLAY, 4 ways: 1 ground, 2 3.3 V, 3 display data, 4 display clock. Keep the cable under 20 cm.
    • J10, RESUME, 2 ways: 1 ground, 2 button.
    • J11, STOP, 3 ways: 1 ground, 2 button, 3 not connected. The third way keeps the stop cable out of RESUME; label both ends of the resume cable, since a 2-way housing can still be pushed into STOP.
  • The adapter described under "Power", and a box.

J12, on the bottom edge right of the sense resistors, is three ground pins for an oscilloscope probe's ground clip.

fab/dcc-station.step is the 3D model of the assembled board, for designing a box. The barrel jack J1 sits on the left edge, where the box needs a round opening for the plug; C1 is 16 mm tall.

Editing

Open dcc-station.kicad_pro in KiCad 10. The symbol of Q1 (AO4407A) is in symbols/dcc.kicad_sym, the footprints of F1 and of the barrel jack J1 (pads from the XKB drawing) in footprints/dcc.pretty.

Licence

CERN Open Hardware Licence v2, strongly reciprocal (LICENSE).

Parts

82
QtyValueFootprintReferences
11100nF 50V X7RCapacitor_SMD:C_0805_2012MetricC2, C5, C8, C9, C10, C11, C12, C13, C14, C15, C16
51kResistor_SMD:R_0805_2012MetricR9, R10, R14, R24, R25
410kResistor_SMD:R_0805_2012MetricR4, R21, R22, R23
44.7R 1WResistor_SMD:R_2512_6332MetricR5, R6, R7, R8
4M3MountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
4SS34Diode_SMD:D_SMAD1, D2, D3, D4
2100kResistor_SMD:R_0805_2012MetricR3, R19
2100k 1%Resistor_SMD:R_0805_2012MetricR1, R20
210uF 50V X7RCapacitor_SMD:C_1210_3225MetricC3, C4
222uF 25VCapacitor_SMD:C_1206_3216MetricC6, C7
2470RResistor_SMD:R_0805_2012MetricR17, R18
1100RResistor_SMD:R_0805_2012MetricR13
110uH 3AInductor_SMD:L_Bourns_SRN6045TAL1
113.7k 1%Resistor_SMD:R_0805_2012MetricR2
122kResistor_SMD:R_0805_2012MetricR11
14.7kResistor_SMD:R_0805_2012MetricR12
1470uF 35VCapacitor_THT:CP_Radial_D10.0mm_P5.00mmC1
174HC08Package_SO:SOIC-14_3.9x8.7mm_P1.27mmU2
174HC14Package_SO:SOIC-14_3.9x8.7mm_P1.27mmU3
1AO4407APackage_SO:SOIC-8_3.9x4.9mm_P1.27mmQ1
1BZT52C12Diode_SMD:D_SOD-123D9
1DC IN 12-19VTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_HorizontalJ9
1DC-005-5A-2.5dcc:BarrelJack_XKB_DC-005-5AJ1
1DISPLAYConnector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ3
1ESP32-C6-Zero left rowConnector_PinSocket_2.54mm:PinSocket_1x09_P2.54mm_VerticalJ4
1ESP32-C6-Zero right rowConnector_PinSocket_2.54mm:PinSocket_1x09_P2.54mm_VerticalJ5
1GND SCOPEConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ12
1LED green 0805LED_SMD:LED_0805_2012MetricD6
1LED red 0805LED_SMD:LED_0805_2012MetricD7
1LM339Package_SO:SOIC-14_3.9x8.7mm_P1.27mmU4
1MF-R400 4A 30Vdcc:Polyfuse_Radial_P5.08mm_W14.5mmF1
1Pololu DRV8874 #4035 left rowConnector_PinSocket_2.54mm:PinSocket_1x07_P2.54mm_VerticalJ6
1Pololu DRV8874 #4035 right rowConnector_PinSocket_2.54mm:PinSocket_1x07_P2.54mm_VerticalJ7
1RESUMEConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ10
1SERIAL TX RX GNDConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ8
1SMBJ24ADiode_SMD:D_SMBD8
1SS14Diode_SMD:D_SMAD5
1STOPConnector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_VerticalJ11
1TP1TestPoint:TestPoint_Pad_D1.5mmTP1
1TP10TestPoint:TestPoint_Pad_D1.5mmTP10
1TP11TestPoint:TestPoint_Pad_D1.5mmTP11
1TP2TestPoint:TestPoint_Pad_D1.5mmTP2
1TP3TestPoint:TestPoint_Pad_D1.5mmTP3
1TP4TestPoint:TestPoint_Pad_D1.5mmTP4
1TP5TestPoint:TestPoint_Pad_D1.5mmTP5
1TP6TestPoint:TestPoint_Pad_D1.5mmTP6
1TP7TestPoint:TestPoint_Pad_D1.5mmTP7
1TP8TestPoint:TestPoint_Pad_D1.5mmTP8
1TP9TestPoint:TestPoint_Pad_D1.5mmTP9
1TPS54302Package_TO_SOT_SMD:TSOT-23-6U5
1TRACKTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_HorizontalJ2

Questions

How big is the Dcc station PCB?

It measures 100 × 120 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Dcc station use?

82 parts, built around the 74HC08D, 74HC14, LM339 and TPS54302. 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 Dcc station KiCad files?

From the cc90202/DCC-esp32 repository on GitHub, at the commit this page was made from: the board is hardware/pcb/dcc-station.kicad_pcb and its schematic hardware/pcb/dcc-station.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Dcc station design in my own project?

Its repository states no licence, so its author keeps all rights: ask cc90202 before reusing the design.

Similar boards

  • 2 layers177 × 35 mmPower, the printed circuit board in 3D

    Power

    plektra/syntsamix

    Analog mixer for synthesizers

    97 parts
  • 4 layers220 × 170 mmArpeggiator, the printed circuit board in 3D

    Arpeggiator

    EwoudVV/arpeggiator

    12-note analog arpeggiator with a 1/2/3 octave range, custom pcb and printed case

    360 parts3
  • 4 layers53.3 × 68.6 mmUnoq power shield, the printed circuit board in 3D

    Unoq power shield

    ramalamadingdong/pcb-agent

    Design a PCB end to end with an agent: CSV source of truth, idempotent build passes, containerized KiCad+Freerouting, and checks that run on the fab output.

    56 parts4GPL-3.0
  • 4 layers100 × 80 mmPd brick, the printed circuit board in 3D

    Pd brick

    enkhbold470/pd-brick

    USB-C Power Delivery bench supply: STUSB4500 sink, LM5176 buck-boost, INA228 monitor, 1.2-22 V set over I2C by an ESP32-S3. 4-layer KiCad 10 board.

    120 partsCERN-OHL-S-2.0
  • 4 layers118 × 250 mmPcb lab, the printed circuit board in 3D

    Pcb lab

    y-watal/pcb_lab

    285 parts
  • 2 layers100 × 100 mmHeatTable Base v0.9, the printed circuit board in 3D

    HeatTable Base v0.9

    DerSpatz/PCB-reflow-solder-table

    Table version of the PCB heat plate with advanced features and swappable heat plate

    82 parts14MIT
  • 2 layers93.4 × 42.6 mmEsp32-led controller v2, the printed circuit board in 3D

    Esp32-led controller v2

    arkandas/esp32-led-controller

    Controller for ws2812b/sk6812 LEDs

    66 parts5MIT