diff --git a/README.md b/README.md index 06882ac..2a439f6 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ # TriMixxx -A custom CDJ (Compact Disc Jockey) unit built from scratch around a Raspberry Pi CM5, designed to run [Mixxx](https://mixxx.org/) DJ software. Features a custom PCB, a custom 3D-printed chassis, and reuses original CDJ buttons and jog wheel for an authentic DJ experience. +A custom CDJ (Compact Disc Jockey) unit built from scratch around a Raspberry Pi CM5, designed to run [Mixxx](https://mixxx.org/) DJ software. Features a custom PCB, a custom 3D-printed chassis, and reuses original CDJ buttons and jog wheel for an authentic DJ experience. Reads Rekordbox-formatted USB sticks — no laptop required. -![Full schematic](screenshots/Screenshot%202026-02-08%20at%2019.56.48.png) +![PCB 3D render](screenshots/pcb-3d-render.png) ## What is this? -TriMixxx replaces the internals of a CDJ with modern, open-source-friendly hardware while keeping the physical controls that DJs know and love. Plug in a Rekordbox-formatted USB stick, and you're ready to mix — no laptop required. +TriMixxx replaces the internals of a CDJ with modern, open-source-friendly hardware while keeping the physical controls that DJs know and love. Plug in a Rekordbox-formatted USB stick, and you're ready to mix. ## Hardware Architecture @@ -17,27 +17,50 @@ TriMixxx replaces the internals of a CDJ with modern, open-source-friendly hardw ### Audio - **TI PCM5242** — high-quality stereo DAC connected over I2S for low-latency audio output -- **Dual audio outputs** — 6.35mm (1/4") and 3.5mm headphone jacks +- **RCA stereo pair** — Left (white) and Right (red) main outputs +- **6.35mm (1/4") headphone jack** +- **3.5mm headphone jack** ### MIDI Controller -- **ATmega32U4** — acts as a USB MIDI class-compliant device, reading the original CDJ's buttons, encoders, and jog wheel and translating them into MIDI messages for Mixxx +- **ATmega32U4** — acts as a USB MIDI class-compliant device, reading the original CDJ's buttons, encoders, fader, and jog wheel and translating them into MIDI messages for Mixxx - **16 MHz crystal** oscillator for reliable USB timing +All controls connect via JST PH connectors to the main PCB: + +| Connector | Controls | +|---|---| +| **J_PLAY** (6-pin) | Play button + LED, Cue button + LED | +| **J_LOOP** (8-pin) | Loop In button + LED, Loop Out button + LED, Reloop button + LED | +| **J_MASTER_TEMPO** (4-pin) | Master Tempo button + LED | +| **J_ENCODER_BACK** (7-pin) | Back/browse rotary encoder + Back button + LED | +| **J_TEMPO** (5-pin) | Tempo fader (analog ADC input) + Tempo Reset button + LED | +| **J_JOG** (4-pin) | Jog wheel quadrature encoder (JOG1/JOG2) | +| **J_TOUCH** (2-pin) | Jog wheel capacitive touch sensor | + +**Summary of buttons:** Play, Cue, Loop In, Loop Out, Reloop, Master Tempo, Tempo Reset, Back — each with a corresponding LED. Plus a tempo fader (analog), a browse/back rotary encoder, a jog wheel (quadrature encoder), and a jog wheel touch sensor. + ### Power -- **USB-C power input** with **CH224K** USB PD negotiation (requests 20V) -- **TPS54560** buck converter stepping 20V down to 5V for the CM5 and peripherals +- **USB-C power input** with **CH224K** USB PD negotiation (requests 20V @ 3A = 60W, peak draw 42.4W) +- **SY8368AQQC** synchronous buck converter stepping 20V down to 5V for the CM5 and peripherals - **AP2112K** 3.3V LDO for logic-level components - **AP2553W** USB power switches for safe hot-plug on DJ USB ports ### Connectivity -- **USB 3.0 Type-A port** — for Rekordbox USB sticks -- **HDMI output** — for an optional display (waveforms, library browsing) -- **USB-C** — power delivery and data -- **HD3SS3220** USB-C orientation mux and **HD3SS3212** USB 3.0 signal switch for proper USB-C handling -- **Ethernet** (via CM5) for network connectivity +| Port | Type | Speed | Purpose | +|---|---|---|---| +| **USB-A** | Full-size | USB 3.0 SuperSpeed | Rekordbox USB sticks | +| **USB-A** | Full-size | Power only (no data) | Auxiliary power for gadgets/lights | +| **USB-C** | Receptacle | USB 2.0 | General connectivity | +| **Micro HDMI** | Type D | HDMI 1.4 | 10" touchscreen display | +| **Micro HDMI** | Type D | HDMI 1.4 | Debug/secondary screen | +| **Ethernet** | RJ45 (via CM5) | Gigabit | Network connectivity | + +Additional internal USB: USB 3.0 Type-A for the touchscreen's USB touch interface. + +- **HD3SS3220** USB-C orientation mux and **HD3SS3212** USB 3.0 signal switch for proper USB-C handling on the DJ stick port ### Protection @@ -54,18 +77,18 @@ Designed in Fusion 360 with a custom top panel and bottom tray that fits the ori ## Project Structure ``` -CDJ-MainBoard/ KiCad PCB project (6-layer board) +CDJ-MainBoard/ KiCad PCB project ├── CDJ-MainBoard.kicad_sch Root schematic ├── arduino_midi.kicad_sch ATmega32U4 MIDI controller subsystem -├── audio_outputs.kicad_sch DAC and audio output stage +├── audio_outputs.kicad_sch DAC and audio output stage (RCA + headphones) ├── power.kicad_sch Power supply (USB-C PD, buck, LDOs) -├── hdmi.kicad_sch HDMI output -├── usb_dj_ports.kicad_sch USB 3.0 host port for DJ USB sticks +├── hdmi.kicad_sch Dual micro HDMI outputs + Ethernet +├── usb_dj_ports.kicad_sch USB ports (DJ stick, aux power, connectivity) ├── test_points.kicad_sch Test points for debugging └── CDJ-MainBoard.kicad_pcb PCB layout JLC2KiCad_lib/ Component library (symbols, footprints, 3D models) -kicad-thirdparty-footprints/ Third-party footprints (CM5, DAC, connectors) +kicad-thirdparty-footprints/ Third-party footprints (CM5, DAC, RCA jacks) *.f3d Fusion 360 chassis models *.net Exported netlists (various revisions) ``` @@ -74,7 +97,7 @@ kicad-thirdparty-footprints/ Third-party footprints (CM5, DAC, connectors) - **[Mixxx](https://mixxx.org/)** — open-source DJ software running on Raspberry Pi OS - **Rekordbox USB support** — reads Rekordbox-exported USB sticks for seamless library access -- **MIDI mapping** — the ATmega32U4 presents as a standard USB MIDI device, so Mixxx sees the jog wheel, buttons, and knobs as native MIDI controls +- **MIDI mapping** — the ATmega32U4 presents as a standard USB MIDI device, so Mixxx sees the jog wheel, buttons, and fader as native MIDI controls ## Tools Used @@ -83,6 +106,10 @@ kicad-thirdparty-footprints/ Third-party footprints (CM5, DAC, connectors) - **JLC2KiCad** — importing JLCPCB component libraries into KiCad - **JLCPCB** — PCB fabrication and assembly +## Schematic + +![Full schematic](screenshots/Screenshot%202026-02-08%20at%2019.56.48.png) + ## License This is a personal hardware project. Feel free to use it as reference for your own builds. diff --git a/screenshots/pcb-3d-render.png b/screenshots/pcb-3d-render.png new file mode 100644 index 0000000..f01baf5 Binary files /dev/null and b/screenshots/pcb-3d-render.png differ