u/limikael

Image 1 — Relay control board (ESP32-C3 + CAN) - would love a critique / roast
Image 2 — Relay control board (ESP32-C3 + CAN) - would love a critique / roast
Image 3 — Relay control board (ESP32-C3 + CAN) - would love a critique / roast
▲ 0 r/KiCad

Relay control board (ESP32-C3 + CAN) - would love a critique / roast

I designed a relay control board and thought I’d share it here for feedback before I order the first version.

It’s based around an ESP32-C3 (SuperMini module) with a TJA1050 CAN transceiver, plus a small buck converter (MP1584). The relays are driven from the MCU side and the whole thing is meant to sit on a CAN bus as a simple control node. It has mounting holes for an enclosure I have, so it can sit on a DIN rail, as part of a small CAN-based automation setup.

One design choice I made: I used female pin headers for the main modules (ESP32, CAN transceiver, power module) so the board can accept off-the-shelf breakout boards instead of soldering everything directly.

The motivation was:

  • faster iteration (swap modules without re-spinning PCB)
  • flexibility in sourcing parts
  • keeping the main PCB reusable across slightly different builds

I’m not sure if this is considered good practice or just making things mechanically worse, so I’d especially appreciate feedback on that.

I’ve attached schematic, PCB layout and 3D render.

Would appreciate critique on:

  • obvious design mistakes I’ve missed
  • relay driving/protection and layout concerns. I am planning to use it for mains up to 220–230VAC, ~5A resistive.

Roasts also welcome.

u/limikael — 19 hours ago
▲ 0 r/KiCad

I built a CLI tool that turns KiCad PCB files into JLCPCB manufacturing outputs (BOM + CPL + gerbers)

I built a small CLI tool that generates JLCPCB manufacturing files directly from KiCad PCB files.

It takes a .kicad_pcb as input and outputs:

  • bom.csv
  • cpl.csv (centroids + rotation)
  • gerbers.zip

Core idea

The PCB file is the source of truth.

No schematic parsing, no netlist step, no KiCad UI required.

Components are defined directly in the PCB using footprint attributes:

  • lcsc → LCSC part number (only footprints with this are included)
  • lcscRot → optional rotation correction

Everything else is ignored.

Workflow

jlcc board.kicad_pcb -F ./libs -o ./out

Footprints are resolved from explicit .pretty libraries (no global KiCad dependency).

Why this approach

It’s designed for automation / CI workflows rather than manual GUI exports.

There are already good KiCad plugins for interactive export (like kicad-jlcpcb-tools), but I wanted something that can be scripted, versioned, and run headless.

Try it!

It is in the NPM repo at: https://www.npmjs.com/package/kicad-fab-export

Would love some feedback! Am I reinventing the wheel again?

npmjs.com
u/limikael — 2 days ago