Files
cnc-router/pcb/schematic_netlist.md
nearxos f26f15db61 feat(pcb): add 8-belt CNC router board — FluidNC YAML config + schematic netlist
- esp32-s3-pinout.yml: complete FluidNC machine config for 4×axis, 2-motors-per-axis (8 TMC2209, UART mode)
- schematic_netlist.md: component-level connection table (ESP32-S3, TMC2209, power, connectors, BOM)
- pins derived from Maslow 4 ESP32-S3 board layout adapted for 4-axis gantry
- TMC2209s on 2 UART buses (GPIO17/18), 4 addresses each, VREF resistor matrix
2026-06-20 16:15:25 +03:00

423 lines
19 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 8-Belt CNC Router — Controller Board Schematic Netlist
**Board revision:** 1.0
**Controller:** ESP32-S3-WROOM-1 (16 MB Flash / 8 MB PSRAM)
**Drivers:** 8× TMC2209 (UART mode, 2 buses × 4 addresses)
**Form factor:** 4-layer PCB, 100×80 mm, 1.6 mm thickness
**Power:** 24 VDC (motor), 5 VDC (logic), 3.3 VDC (ESP32)
> Connections are listed as `REF_DES ── PIN ── SIGNAL ── DESTINATION`.
> Signals with `~` prefix are active low.
---
## 1 — Microcontroller: ESP32-S3-WROOM-1 (U1)
| Pin | Signal | Destination | Notes |
|-----|--------|-------------|-------|
| 1 | GND | GND plane | |
| 2 | GPIO1 / TX0 | USB-UART bridge (RX) | Console UART |
| 3 | GPIO2 / RX0 | USB-UART bridge (TX) | Console UART |
| 4 | GPIO3 / ADC1_CH3 | J1-8 (A0_DIR) → U10 (DIR) | A-axis motor1 direction |
| 5 | GPIO4 | J2-5 (SD_CS) → microSD (CS) | SD card chip-select |
| 6 | GPIO5 | J3 (SPINDLE_PWM) → spindle MOSFET | Spindle speed PWM out |
| 7 | GPIO6 | J3 (SPINDLE_DIR) → spindle MOSFET | Spindle direction |
| 8 | GPIO7 | J7-1 (COOLANT_FLOOD) → MOSFET | Coolant flood relay |
| 9 | GPIO8 | J1-7 (A0_STEP) → U11 (STEP) | A-axis motor0 step |
| 10 | GPIO9 | J1-9 (A1_STEP) → U12 (STEP) | A-axis motor1 step |
| 11 | GPIO10 | J1-10 (A1_DIR) → U12 (DIR) | A-axis motor1 direction |
| 12 | GPIO11 | J1-6 (Z1_DIR) → U9 (DIR) | Z-axis motor1 direction |
| 13 | GPIO12 | J1-5 (Z1_STEP) → U9 (STEP) | Z-axis motor1 step |
| 14 | GPIO13 | J1-3 (Z0_DIR) → U8 (DIR) | Z-axis motor0 direction |
| 15 | GPIO14 | J1-2 (Z0_STEP) → U8 (STEP) | Z-axis motor0 step |
| 16 | GPIO15 | J1-1 (X0_STEP) → U5 (STEP) | X-axis motor0 step |
| 17 | GPIO16 | J1-4 (X0_DIR) → U5 (DIR) | X-axis motor0 direction |
| 18 | GPIO17 | UART TX1 → TMC2209 (PDN_UART) bus | UART1 single-wire (4 drivers: X0, Y0, Z0, A0) |
| 19 | GPIO18 | UART TX2 → TMC2209 (PDN_UART) bus | UART2 single-wire (4 drivers: X1, Y1, Z1, A1) |
| 20 | GND | GND plane | |
| 21 | GPIO21 | J1-12 (Y0_STEP) → U6 (STEP) | Y-axis motor0 step |
| 22 | GPIO35 | J4-1 (X_LIMIT) → limit switch | X-axis limit/home |
| 23 | GPIO36 | J4-2 (Y_LIMIT) → limit switch | Y-axis limit/home |
| 24 | GPIO37 | J4-3 (Z_LIMIT) → limit switch | Z-axis limit/home |
| 25 | GPIO38 | J2-9 (X1_DIR) → U7 (DIR) | X-axis motor1 direction |
| 26 | GPIO39 | J4-4 (A_LIMIT) → limit switch | A-axis limit/home |
| 27 | GPIO40 | J4-5 (PROBE) → probe input | Probe input |
| 28 | GPIO41 | SPI_MISO → microSD card (DO) | SD card data-out |
| 29 | GPIO42 | SPI_MOSI → microSD card (DI) | SD card data-in |
| 30 | GPIO43 | SPI_SCLK → microSD card (SCLK) | SD card clock |
| 31 | GPIO44 | (reserved) | NC — available for user I/O |
| 32 | GPIO45 | J2-10 (Y1_DIR) → U8 (DIR) | Y-axis motor1 direction |
| 33 | GPIO46 | J2-7 (X1_STEP) → U7 (STEP) | X-axis motor1 step |
| 34 | GPIO47 | J2-11 (Y0_DIR) → U6 (DIR) | Y-axis motor0 direction |
| 35 | GPIO48 | J2-8 (Y1_STEP) → U8 (STEP) | Y-axis motor1 step |
| 36 | GND | GND plane | |
| 37~49 | NC (space) | — | Module-internal flash pins |
| 50 | GND | GND plane | |
| 51~52 | NC | — | Internal flash |
| 53~54 | VBAT / CHIP_PU | 3.3V + 10 kΩ pullup + 0.1 µF to GND | Enable pin |
| 55 | 3V3 | 3.3V rail | Core supply |
| 56~61 | NC | — | Internal flash/PSRAM |
| 62 | GND | GND plane | |
| 63 | USB_DP | USB-UART bridge (D+) | Also accessible via USB-C |
| 64 | USB_DN | USB-UART bridge (D) | Also accessible via USB-C |
| 65 | VDD_USB | 5V rail (USB VBUS) | USB power detect |
| 66 | NC | — | |
| 67~68 | NC | — | |
| 69 | GND | GND plane | |
**Module-internal connections (ESP32-S3-WROOM-1):**
| Pin | Signal | Notes |
|-----|--------|-------|
| Module pins 3749, 5152, 5661 | Flash/PSRAM interface | Internal — NC on PCB |
| | 3.3V supply | LDO (U2) output to module pin 55 |
| | EN / CHIP_PU | RC delay (10 kΩ + 1 µF) for power sequencing |
---
## 2 — Power Regulation
### 2.1 — 24V Input Connector (J6)
| Pin | Signal | Destination | Notes |
|-----|--------|-------------|-------|
| 1 | VIN_24V | F1 (5A fuse) → C1 (100 µF/35V) → motor supply rail | Motor/bus power |
| 2 | GND | GND plane | Power ground |
**Protection:** TVS diode (SMBJ30A) from VIN_24V to GND, reverse-polarity protection (P-MOSFET or Schottky).
### 2.2 — 5V Buck Regulator (U3) — MP9942 or TPS54360
| Component | Pin | Signal | Destination |
|-----------|-----|--------|-------------|
| U3-1 | BOOT | Cboot (0.1 µF) → U3-8 (SW) | Bootstrap cap |
| U3-2 | VIN | VIN_24V → C2 (10 µF/50V) → GND | Input |
| U3-3 | EN | 24V via 100 kΩ pullup | Enable |
| U3-4 | SS | Css (10 nF) → GND | Soft-start |
| U3-5 | RT | Rrt (51 kΩ) → GND | Switching frequency (~500 kHz) |
| U3-6 | COMP | Rc (10 kΩ) + Cc (4.7 nF) → GND | Compensation |
| U3-7 | FB | R1 (10 kΩ) → 5V rail; R2 (2.32 kΩ) → GND | Feedback divider |
| U3-8 | SW | L1 (10 µH) → C3 (47 µF/16V) → 5V rail | Inductor + output cap |
| — | PGND | GND plane | Power ground |
| — | — | 5V rail → TMC2209 VM + 3.3V LDO input | 5V distribution |
### 2.3 — 3.3V LDO Regulator (U4) — AMS1117-3.3
| Component | Pin | Signal | Destination |
|-----------|-----|--------|-------------|
| U4-1 | GND | GND plane | |
| U4-2 | VOUT | 3.3V rail → C4 (10 µF) + C5 (0.1 µF) → ESP32-S3 module, TMC2209 VIO | 3.3V logic supply |
| U4-3 | VIN | 5V rail → C6 (10 µF) | Input from 5V buck |
---
## 3 — TMC2209 Stepper Drivers (U5U12)
### 3.1 — TMC2209 Pinout (common to all 8 drivers)
| Pin # | Name | Function | Connection |
|-------|------|----------|------------|
| 1 | EN | Enable (active low) | 10 kΩ pullup to VIO (3.3V); optional ESP32 GPIO44 |
| 2 | MS1 / ADDR_CFG | UART address select | Resistor to GND (see §3.3) |
| 3 | MS2 / VREF | Current reference / UART addr | Resistor to GND if UART addressing; else VREF divider |
| 4 | VCC_IO | Logic supply | 3.3V rail + C7 (0.1 µF) to GND near each driver |
| 5 | GND | Ground | GND plane |
| 6 | V3_1 | Internal regulator cap | 100 nF cap to GND |
| 7 | V3_2 | Internal regulator cap | 100 nF cap to GND |
| 8 | V3_3 | Internal regulator cap | 100 nF cap to GND |
| 9 | CAP | Internal charge pump | 22 nF cap to V3_3 |
| 10 | VCC | Motor supply | 5V rail (or 24V, see §3.4) |
| 11 | A2 | Motor coil A2 | Motor connector |
| 12 | A1 | Motor coil A1 | Motor connector |
| 13 | B1 | Motor coil B1 | Motor connector |
| 14 | B2 | Motor coil B2 | Motor connector |
| 15 | VCC | Motor supply | 5V rail (or 24V, see §3.4) |
| 16 | GND | Ground | GND plane |
| 17 | VREF | Analog reference / Select | Resistor to GND (UART addressing) or voltage divider |
| 18 | PDN_UART | UART data / Power-down | UART TX line (single-wire half-duplex) |
| 19 | CLK | Internal clock | 10 nF to GND; or external clock if precision needed |
| 20 | NC | Not connected | — |
| 21 | DIAG | Diagnostic output | 10 kΩ pullup to 3.3V; optional to ESP32 GPIO |
| 22 | DRV_EN | Driver enable | Pull high via 10 kΩ to VIO for active; pull low to disable |
| 23 | STEP | Step input | From ESP32 GPIO via 100 Ω series resistor (see table below) |
| 24 | DIR | Direction input | From ESP32 GPIO via 100 Ω series resistor (see table below) |
### 3.2 — TMC2209 Address Selection (VREF resistor to GND)
| ADDR | R_VREF to GND | Driver | Axis | UART Bus |
|------|---------------|--------|------|----------|
| 0 | 0 Ω (short) | U5 | X motor0 | UART1 (gpio.17) |
| 1 | 2.2 kΩ | U6 | Y motor0 | UART1 (gpio.17) |
| 2 | 4.7 kΩ | U7 | Z motor0 | UART1 (gpio.17) |
| 3 | 8.2 kΩ | U8 | A motor0 | UART1 (gpio.17) |
| 0 | 0 Ω (short) | U9 | X motor1 | UART2 (gpio.18) |
| 1 | 2.2 kΩ | U10 | Y motor1 | UART2 (gpio.18) |
| 2 | 4.7 kΩ | U11 | Z motor1 | UART2 (gpio.18) |
| 3 | 8.2 kΩ | U12 | A motor1 | UART2 (gpio.18) |
### 3.3 — Step/Dir Pin Mapping (ESP32-S3 → TMC2209)
| Ref | Axis | Motor | ADDR | STEP GPIO | DIR GPIO | UART Bus |
|-----|------|-------|------|-----------|----------|----------|
| U5 | X | motor0 | 0 | GPIO15 | GPIO16 | UART1 |
| U6 | Y | motor0 | 1 | GPIO21 | GPIO47 | UART1 |
| U7 | Z | motor0 | 2 | GPIO14 | GPIO13 | UART1 |
| U8 | A | motor0 | 3 | GPIO8 | GPIO3 | UART1 |
| U9 | X | motor1 | 0 | GPIO46 | GPIO38 | UART2 |
| U10 | Y | motor1 | 1 | GPIO48 | GPIO45 | UART2 |
| U11 | Z | motor1 | 2 | GPIO12 | GPIO11 | UART2 |
| U12 | A | motor1 | 3 | GPIO9 | GPIO10 | UART2 |
### 3.4 — TMC2209 Motor Supply (VCC)
All TMC2209s powered by 5V rail from buck regulator (U3).
For high-torque applications, VCC can be fed from 24V rail (remove LDO jumper).
Each motor output (coils A1/A2/B1/B2) connects to J1/J2 XH-8 motor connectors via 100 nF + 47 µF electrolytic per driver pair.
---
## 4 — Motor Output Connectors
### 4.1 — JST XH-8 Pinout (J1, J2) — Motor Connector Blocks
**J1 — Motors A0, A1, B0, B1 (top row, nearer UART1 drivers):**
| J1 Pin | Signal | Driver | Driver Pin | Wire Color (typ) |
|--------|--------|--------|------------|-------------------|
| 1 | X0_STEP | U5 | STEP (23) | — (test point) |
| 2 | Z0_STEP | U8 | STEP (23) | — (test point) |
| 3 | Z0_DIR | U8 | DIR (24) | — (test point) |
| 4 | X0_DIR | U5 | DIR (24) | — (test point) |
| 5 | Z1_STEP | U11 | STEP (23) | — (test point) |
| 6 | Z1_DIR | U11 | DIR (24) | — (test point) |
| 7 | A0_STEP | U7 | STEP (23) | — (test point) |
| 8 | A0_DIR | U7 | DIR (24) | — (test point) |
| 9 | A1_STEP | U12 | STEP (23) | — (test point) |
| 10 | A1_DIR | U12 | DIR (24) | — (test point) |
| 11 | GND | GND | — | Black |
| 12 | Y0_STEP | U6 | STEP (23) | — (test point) |
**J2 — Motors A2, A3, B2, B3 (bottom row, nearer UART2 drivers):**
| J2 Pin | Signal | Driver | Driver Pin | Wire Color (typ) |
|--------|--------|--------|------------|-------------------|
| 1 | VCC_5V | 5V rail | — | Red |
| 2 | GND | GND | — | Black |
| 3 | VIN_24V | 24V rail | — | Red/Thick |
| 4 | GND | GND | — | Black |
| 5 | SD_CS | U1 (GPIO4) | — | — |
| 6 | GND | GND | — | Black |
| 7 | X1_STEP | U9 | STEP (23) | — (test point) |
| 8 | Y1_STEP | U10 | STEP (23) | — (test point) |
| 9 | X1_DIR | U9 | DIR (24) | — (test point) |
| 10 | Y1_DIR | U10 | DIR (24) | — (test point) |
| 11 | Y0_DIR | U6 | DIR (24) | — (test point) |
### 4.2 — Motor Coil Connectors (J8J15, 4-pin JST XH)
| Connector | Driver | Axis | Pin 1 (A1) | Pin 2 (A2) | Pin 3 (B1) | Pin 4 (B2) |
|-----------|--------|------|------------|------------|------------|------------|
| J8 | U5 | X motor0 | U5-12 | U5-11 | U5-13 | U5-14 |
| J9 | U6 | Y motor0 | U6-12 | U6-11 | U6-13 | U6-14 |
| J10 | U7 | Z motor0 | U7-12 | U7-11 | U7-13 | U7-14 |
| J11 | U8 | A motor0 | U8-12 | U8-11 | U8-13 | U8-14 |
| J12 | U9 | X motor1 | U9-12 | U9-11 | U9-13 | U9-14 |
| J13 | U10 | Y motor1 | U10-12 | U10-11 | U10-13 | U10-14 |
| J14 | U11 | Z motor1 | U11-12 | U11-11 | U11-13 | U11-14 |
| J15 | U12 | A motor1 | U12-12 | U12-11 | U12-13 | U12-14 |
---
## 5 — Limit Switches & Probe (J4)
| J4 Pin | Signal | ESP32 GPIO | Pull | Notes |
|--------|--------|------------|------|-------|
| 1 | X_LIMIT | GPIO35 | 10 kΩ to 3.3V (internal :pu) | NC, active low |
| 2 | Y_LIMIT | GPIO36 | 10 kΩ to 3.3V (internal :pu) | NC, active low |
| 3 | Z_LIMIT | GPIO37 | 10 kΩ to 3.3V (internal :pu) | NC, active low |
| 4 | A_LIMIT | GPIO39 | 10 kΩ to 3.3V (internal :pu) | NC, active low |
| 5 | PROBE | GPIO40 | 10 kΩ to 3.3V (internal :pu) | NC, active low |
| 6 | GND | GND | — | Ground reference |
---
## 6 — Spindle / Coolant Outputs (J3, J7)
| Connector | Pin | Signal | ESP32 GPIO | Driver | Notes |
|-----------|-----|--------|------------|--------|-------|
| J3-1 | SPINDLE_ENA | GPIO5 | Gate of N-MOSFET (IRLZ44N) | PWM 0100%, 5 kHz |
| J3-2 | SPINDLE_DIR | GPIO6 | Gate of N-MOSFET (IRLZ44N) | CW/CCW |
| J3-3 | GND | — | GND | |
| J7-1 | COOLANT_FLOOD | GPIO7 | Gate of N-MOSFET + relay | 12V/1A rated |
| J7-2 | GND | — | GND | |
---
## 7 — SD Card Socket (mSD, J5)
| J5 Pin | Signal | Destination | Notes |
|--------|--------|-------------|-------|
| 1 | DAT2 | NC (1-bit SD mode) | |
| 2 | CD/DAT3 | 10 kΩ pullup to 3.3V | Card detect not used |
| 3 | CMD | SPI_MOSI (GPIO42) | Data in |
| 4 | VDD | 3.3V + C8 (0.1 µF) to GND | Supply |
| 5 | CLK | SPI_SCLK (GPIO43) | Clock |
| 6 | VSS | GND | Ground |
| 7 | DAT0 | SPI_MISO (GPIO41) | Data out |
| 8 | DAT1 | NC (1-bit SD mode) | |
| CD | CARD_DETECT | GPIO44 (optional) | Use if 4-bit SD mode |
---
## 8 — USB / Serial Console (J16)
| J16 Pin | Signal | ESP32 GPIO | Connects to |
|---------|--------|------------|-------------|
| 1 (D+) | USB_DP | U1-63 | CP2102N or CH343 D+ |
| 2 (D) | USB_DN | U1-64 | CP2102N or CH343 D |
| 3 | VUSB | 5V from USB | 5V rail (OR-ing with 24V buck) |
| 4 | GND | GND | GND |
**USB-UART bridge (CP2102N or CH343):**
| Bridge Pin | Signal | ESP32 GPIO |
|------------|--------|------------|
| TXD | TX0 | GPIO1 (RX0) |
| RXD | RX0 | GPIO2 (TX0) |
---
## 9 — UART Bus Topology
```
UART1 (ESP32 GPIO17) ──┬── 1 kΩ ── U5 (X motor0) PDN_UART ADDR=0
├── 1 kΩ ── U6 (Y motor0) PDN_UART ADDR=1
├── 1 kΩ ── U7 (Z motor0) PDN_UART ADDR=2
└── 1 kΩ ── U8 (A motor0) PDN_UART ADDR=3
UART2 (ESP32 GPIO18) ──┬── 1 kΩ ── U9 (X motor1) PDN_UART ADDR=0
├── 1 kΩ ── U10 (Y motor1) PDN_UART ADDR=1
├── 1 kΩ ── U11 (Z motor1) PDN_UART ADDR=2
└── 1 kΩ ── U12 (A motor1) PDN_UART ADDR=3
```
> **Note:** Each TMC2209 PDN_UART pin gets a 1 kΩ series resistor to prevent contention during multi-drop operation.
> The ESP32's TXD pin is configured as open-drain and re-connected to its RXD for half-duplex operation (`rxd_pin: gpio.17` in config for a shared pin, or a discrete 1 kΩ feedback from TX to RX).
---
## 10 — UART Address Resistor Matrix (VREF → GND)
| Driver | Axis | ADDR | R_VREF (1% tolerance) | Resistor Ref |
|--------|------|------|----------------------|--------------|
| U5 | X motor0 | 0 | 0 Ω (jumper) | R5 |
| U6 | Y motor0 | 1 | 2.2 kΩ | R6 |
| U7 | Z motor0 | 2 | 4.7 kΩ | R7 |
| U8 | A motor0 | 3 | 8.2 kΩ | R8 |
| U9 | X motor1 | 0 | 0 Ω (jumper) | R9 |
| U10 | Y motor1 | 1 | 2.2 kΩ | R10 |
| U11 | Z motor1 | 2 | 4.7 kΩ | R11 |
| U12 | A motor1 | 3 | 8.2 kΩ | R12 |
---
## 11 — Netlist Summary by Net Name
| Net Name | Type | ESP32 Pin | Driver Pins | Connector | Other |
|----------|------|-----------|-------------|-----------|-------|
| X0_STEP | Output | GPIO15 | U5-23 | J1-1 | 100 Ω series R |
| X0_DIR | Output | GPIO16 | U5-24 | J1-4 | 100 Ω series R |
| X1_STEP | Output | GPIO46 | U9-23 | J2-7 | 100 Ω series R |
| X1_DIR | Output | GPIO38 | U9-24 | J2-9 | 100 Ω series R |
| Y0_STEP | Output | GPIO21 | U6-23 | J1-12 | 100 Ω series R |
| Y0_DIR | Output | GPIO47 | U6-24 | J2-11 | 100 Ω series R |
| Y1_STEP | Output | GPIO48 | U10-23 | J2-8 | 100 Ω series R |
| Y1_DIR | Output | GPIO45 | U10-24 | J2-10 | 100 Ω series R |
| Z0_STEP | Output | GPIO14 | U7-23 | J1-2 | 100 Ω series R |
| Z0_DIR | Output | GPIO13 | U7-24 | J1-3 | 100 Ω series R |
| Z1_STEP | Output | GPIO12 | U11-23 | J1-5 | 100 Ω series R |
| Z1_DIR | Output | GPIO11 | U11-24 | J1-6 | 100 Ω series R |
| A0_STEP | Output | GPIO8 | U8-23 | J1-7 | 100 Ω series R |
| A0_DIR | Output | GPIO3 | U8-24 | J1-8 | 100 Ω series R |
| A1_STEP | Output | GPIO9 | U12-23 | J1-9 | 100 Ω series R |
| A1_DIR | Output | GPIO10 | U12-24 | J1-10 | 100 Ω series R |
| UART1_TX | Bidir | GPIO17 | U5-18, U6-18, U7-18, U8-18 | — | 1 kΩ R per driver |
| UART2_TX | Bidir | GPIO18 | U9-18, U10-18, U11-18, U12-18 | — | 1 kΩ R per driver |
| X_LIMIT | Input | GPIO35 | — | J4-1 | 10 kΩ pullup |
| Y_LIMIT | Input | GPIO36 | — | J4-2 | 10 kΩ pullup |
| Z_LIMIT | Input | GPIO37 | — | J4-3 | 10 kΩ pullup |
| A_LIMIT | Input | GPIO39 | — | J4-4 | 10 kΩ pullup |
| PROBE | Input | GPIO40 | — | J4-5 | 10 kΩ pullup |
| SPINDLE_PWM | Output | GPIO5 | — | J3-1 | MOSFET gate |
| SPINDLE_DIR | Output | GPIO6 | — | J3-2 | MOSFET gate |
| COOLANT | Output | GPIO7 | — | J7-1 | Relay driver |
| SD_CS | Output | GPIO4 | — | J2-5, J5-3 | |
| SD_MISO | Input | GPIO41 | — | J5-7 | |
| SD_MOSI | Output | GPIO42 | — | J5-3 | |
| SD_SCLK | Output | GPIO43 | — | J5-5 | |
| VIN_24V | Power | — | — | J6-1, J2-3 | Fused 5A, TVS |
| VCC_5V | Power | U1-65 | U5-10,15 through U12-10,15 | J2-1 | From U3 buck |
| VCC_3V3 | Power | U1-55 | U5-4 through U12-4 | — | From U4 LDO |
| GND | Ground | U1-1,20,36,50,62,69 | U5-5,16 through U12-5,16 | J1-11, J2-2,4,6, J4-6, J3-3, J6-2 | Ground plane |
---
## 12 — Bill of Materials (Key Components)
| Ref | Part | Package | Qty | Notes |
|-----|------|---------|-----|-------|
| U1 | ESP32-S3-WROOM-1-N16R8 | 36-pin castellation | 1 | 16 MB flash, 8 MB PSRAM |
| U2 | CP2102N / CH343G | QFN-28 / MSOP-10 | 1 | USB-UART bridge |
| U3 | MP9942 / TPS54360 | SOP-8 | 1 | 5V buck regulator |
| U4 | AMS1117-3.3 | SOT-223 | 1 | 3.3V LDO |
| U5U12 | TMC2209-LA | QFN-24 | 8 | Stepper driver |
| J1, J2 | JST XH-12 | 12-pin header | 2 | Signal breakout |
| J3 | JST XH-3 | 3-pin header | 1 | Spindle |
| J4 | JST XH-6 | 6-pin header | 1 | Limits + probe |
| J5 | microSD socket | SMT | 1 | SD card |
| J6 | 2-pin terminal block | 5.08 mm | 1 | 24V power input |
| J7 | JST XH-2 | 2-pin header | 1 | Coolant |
| J8J15 | JST XH-4 | 4-pin header | 8 | Motor coils |
| J16 | USB-C receptacle | SMT | 1 | Programming |
| C1 | 100 µF/35V | SMD electrolytic | 1 | 24V input bulk cap |
| C2 | 10 µF/50V | 1206 | 1 | Buck input cap |
| C3 | 47 µF/16V | SMD electrolytic | 1 | 5V output cap |
| C4 | 10 µF/10V | 0805 | 1 | 3.3V output cap |
| C5C8 | 0.1 µF | 0805 | 10 | Bypass caps |
| C9C16 | 100 nF | 0603 | 8 | TMC2209 VCC_IO bypass |
| C17C24 | 47 µF/16V | 1206 | 8 | TMC2209 motor supply |
| F1 | 5A resettable fuse | 1812 | 1 | 24V input protection |
| L1 | 10 µH shielded | SMD | 1 | Buck inductor |
| R5R12 | ADDR resistors | 0805 | 8 | See ADDR resistor matrix |
| RxD-xS | 100 Ω | 0603 | 16 | Step/Dir line termination |
| RxU-xS | 1 kΩ | 0603 | 8 | UART bus series resistors |
| — | 10 kΩ | 0603 | 5 | Limit pullups |
| — | TVS (SMBJ30A) | DO-214AA | 1 | 24V input protection |
---
## 13 — Board Stackup (4-Layer)
| Layer | Type | Notes |
|-------|------|-------|
| L1 (Top) | Signal + Ground pour | ESP32-S3, TMC2209s, signal routing |
| L2 (Inner 1) | Ground plane | Solid GND, no splits |
| L3 (Inner 2) | Power plane | 3.3V, 5V split |
| L4 (Bottom) | Signal + Ground pour | Connectors, bulk caps, routing |
---
## 14 — References
| Source | URL |
|--------|-----|
| Maslow 4 firmware maslow.yaml | `github.com/MaslowCNC/Maslow_4/blob/Maslow-Main/firmware/FluidNC/data/maslow.yaml` |
| Maslow 4 Hardware (Boards repo) | `github.com/MaslowCNC/Boards` |
| Maslow 4 Electronics (old Arduino) | `github.com/MaslowCNC/Electronics` |
| Maslow 4 PCB files (OSHWLabs) | `oshwlab.com/BarbourSmith/maslow4` |
| FluidNC 4-axis TMC2209 board | `wiki.fluidnc.com/en/hardware/official/TMC2209_4_Axis` |
| FluidNC config IO docs | `wiki.fluidnc.com/en/config/config_IO` |
| FluidNC kinematics docs | `wiki.fluidnc.com/en/config/kinematics` |
| FluidNC dual-motor/homing | `wiki.fluidnc.com/en/config/homing_and_limit_switches` |
| FluidNC official config examples | `github.com/bdring/fluidnc-config-files` |
| TMC2209 datasheet | `trinamic.com/products/integrated-circuits/tmc2209/` |
| ESP32-S3 datasheet | `espressif.com/en/products/socs/esp32-s3` |