Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/MrJefter/sdvx-controller/llms.txt

Use this file to discover all available pages before exploring further.

The SDVX Controller uses a custom single-layer PCB as the central wiring hub between the STM32F401 BlackPill, the seven MX-compatible buttons, two LPD3806 rotary encoders, and the optional WS2812B LED strip. Rather than running a tangle of hand-soldered point-to-point wires, the PCB keeps every connection clean and documented, while still being simple enough for home fabrication. The entire design lives in EasyEDA, so you can open, modify, or export it without any proprietary CAD licence.

Design Overview

The PCB was designed intentionally as a single-layer board — all signal traces sit on one copper layer with no inner planes or buried vias. This keeps manufacturing cost low at commercial fabs and makes the board feasible to produce at home with photo-resist or toner-transfer methods.
Because this is a single-layer design, all copper traces are on one side of the board only. If you are home-etching, pay close attention to the mirror orientation of your artwork before exposure. Printing the top-copper layer directly (without mirroring) onto a home-etch blank will result in a board that cannot be assembled.
The PCB connects the following peripherals to the BlackPill:
  • 7 tactile/mechanical buttons (BT-A, BT-B, BT-C, BT-D, START, FX-L, FX-R) — one GPIO pin and one GND pad per switch footprint
  • 2 × LPD3806 incremental rotary encoders (VOL-L, VOL-R) — four signal pins (two per encoder) routed to timer-capable GPIO pins
  • WS2812B LED strip connector — data line, 5 V power, and GND
  • USB power and data — carried through the BlackPill’s onboard USB-C port; no extra USB circuitry on the PCB

Source Files

The EasyEDA project (schematic + board layout) is stored in the repository at:
hardware/pcb/easyeda_project/
Open these files directly in EasyEDA Standard or import them into the web editor. You can adjust footprints, reroute traces, or re-export Gerbers from within EasyEDA if you need to customise the design.

Fabrication Options

Option A — Order from an online PCB fab

Most online PCB fabricators (JLCPCB, PCBWay, OSHPark, etc.) accept a standard Gerber ZIP with default settings — 1.6 mm FR4, 1 oz copper, HASL finish. Simply upload the ZIP of the Gerber files below, accept the auto-detected board dimensions, and order. Minimum quantities are usually 5 boards.
Pre-exported Gerber files are in:
hardware/pcb/gerbers/
The folder contains the following files:
FileLayer
Gerber_TopLayer.GTLTop copper (signal traces)
Gerber_BottomLayer.GBLBottom copper (unused for single-layer, included for fab compatibility)
Gerber_TopSilkscreenLayer.GTOTop silkscreen (component labels)
Gerber_BottomSilkscreenLayer.GBOBottom silkscreen
Gerber_TopSolderMaskLayer.GTSTop solder mask (pad openings)
Gerber_BottomSolderMaskLayer.GBSBottom solder mask
Gerber_BottomPasteMaskLayer.GBPBottom paste mask (SMD stencil reference)
Gerber_BoardOutlineLayer.GKOBoard outline / edge cuts
Drill_PTH_Through.DRLPlated through-hole drill file
Drill_PTH_Through_Via.DRLVia drill file
Drill_NPTH_Through.DRLNon-plated through-hole drill file
Zip all files in hardware/pcb/gerbers/ and upload them directly to your chosen fab.

Option B — Home etch

Use the EasyEDA project at hardware/pcb/easyeda_project/ to export a 1:1 PDF or PNG of the top copper layer (GTL). Print it onto transparency film (laser printer) or use the UV exposure method. Standard PCB ferric-chloride or ammonium-persulfate etchants work fine with the single-layer design.

Bill of Materials (BOM)

The BOM was exported from EasyEDA and is located at:
hardware/pcb/bom/BOM_SDVX-Controller_2025-05-28.csv
#ComponentDesignatorsQty
1Outemu Switch (MX-compatible)S1, S2, S3, S4, S5, S6, S77
2STM32F401 / BlackPill v3.0U11
3LPD3806 Rotary EncoderU9, U102
In addition to PCB-mounted components, you will need:
  • 1 × WS2812B LED strip, 12 LEDs (optional, for lighting effects)
  • 1 × 150 nF ceramic capacitor (optional, for the BlackPill DFU modification)
  • Appropriate lengths of hookup wire for off-board connections (encoders, LED strip)

PCB Assembly

1

Inspect the bare board

Check that all pad openings are clean and that no traces are bridged. Confirm board orientation by matching the silkscreen labels to the schematic.
2

Solder the button switch footprints

Place and solder all seven MX-compatible switch footprints (S1–S7). Each footprint has two pads — one goes to a GPIO signal line, the other to GND.
3

Solder the BlackPill headers

Solder two rows of pin headers to the BlackPill module, then press the module onto the corresponding PCB footprint (U1). Alternatively, solder the BlackPill directly if you do not plan to remove it.
4

Solder encoder headers

Solder header pins or JST connectors for the two LPD3806 encoder positions (U9, U10). The encoders will attach via wire leads from their mounting positions on the front panel.
5

Attach the LED strip connector

Solder a 3-pin connector (or solder directly) for the WS2812B LED strip — data (PB0), 5 V, and GND. Observe polarity.
6

Inspect and test

Visually inspect all joints under magnification. Before inserting into the enclosure, connect via USB and confirm the device enumerates as a HID joystick.

Build docs developers (and LLMs) love