KiCad schematic capture and PCB layout for OpenSkyhawk boards. Use when selecting components or packages, choosing connectors, designing or reviewing a schematic, routing a PCB, setting net classes / track widths / DRC, wiring an MCP23017 or ADS1115 expander, placing LEDs / MOSFET backlight zones / power regulators / steppers, scaffolding a new KiCad project, or running ERC/DRC and gerber/BOM export. Owns the electrical wiring and layout-verification rules.
Scanned 9/12/2026
Install to Claude Code
npx -y skills add OpenSkyHawk/OpenSkyhawk --skill pcb-design --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Pcb Design?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/openskyhawk-pcb-design)More formats (shields.io, HTML) on the badges page.
---
name: pcb-design
description: KiCad schematic capture and PCB layout for OpenSkyhawk boards. Use when selecting components or packages, choosing connectors, designing or reviewing a schematic, routing a PCB, setting net classes / track widths / DRC, wiring an MCP23017 or ADS1115 expander, placing LEDs / MOSFET backlight zones / power regulators / steppers, scaffolding a new KiCad project, or running ERC/DRC and gerber/BOM export. Owns the electrical wiring and layout-verification rules.
---
# PCB Design (KiCad + JLCPCB)
Schematic + layout for OpenSkyhawk boards. Each physical PCB is its own KiCad project under
`PCB/<Console>/<Group>/<Board>/`; `PCB/Libraries/` holds shared symbols, footprints, and
hierarchical sheet templates.
## Canonical references — read before non-trivial work
- `docs/_source/hardware-standards.md` — component/package rules, MCU, power, connectors, LED
backlighting, stepper, gauges, and the **Component Pin Assignment Rules**.
- `docs/_source/pcb-design-rules.md` — JLCPCB 2-layer constraints, net classes, predefined
track/via sizes, board power budget, placement rules, custom DRC file.
- `docs/_source/kicad.md` — shared library setup, custom symbols/footprints, scaffolding, CLI.
## Scaffolding
Never hand-create project files. Run the `/new-kicad-project <Console> <Group> <Board> [mcu|breakout]`
command — it copies the lib tables, pre-loads JLCPCB design rules + net classes, writes a
minimal root schematic, and updates the panel's GitHub Project item.
## Non-negotiable rules (functional failures if violated — verify at schematic time)
- **MCP23017 GPA7 / GPB7 are the 8th pin of each bank and must be OUTPUTS ONLY — never wire
them as inputs** (confirmed silicon bug: SDA can corrupt if the pin changes during an I²C
bit). Route switches/inputs to GPA0–GPA6 and GPB0–GPB6 → **14 inputs per chip**. GPA7/GPB7
may drive LEDs/enables.
- **Package inspectability:** every IC must be visually inspectable after T962 reflow — SOIC,
SSOP, TSSOP, HTSSOP, LQFP, SOT-23, SOT-223, through-hole only. **No QFN, DFN, WSON, BGA,
LGA** or any fully bottom-terminated package. (E.g. the stepper driver is the `DRV8833` in an
inspectable TSSOP/HTSSOP package — `PW` or `PWP` suffix — never the QFN `RTY` variant.)
- **Never use a linear regulator for 12 V → 5 V.** 5 V → 3.3 V uses AMS1117-3.3 (SOT-223);
12 V → 5 V (only on high-current boards) uses the AP63205 buck.
- **Placement:** LEDs on the front face only; all other parts (ICs, passives, connectors,
MOSFETs) on the back face. PTH parts must not conflict with front LED pads.
- **Power budget:** logic + LED boards stay ≤ 500 mA at 12 V input. Actuator boards need a
separate design review (see `pcb-design-rules.md`).
## I/O wiring quick map (from a panel's control inventory)
A panel's control inventory (built by the `panel-mapping` skill) drives the I/O. **First
decide the panel's interface class** (hardware-standards → Shift-Register I/O): encoders
or fast gauges → SPI-class (74HC ShiftBus); otherwise I²C-class:
- **SPI-class panel**: inputs → 74HC165 chain (encoders/switches; **bussed 10 k array to
3V3 on ALL 8 inputs of every chip**, commons to GND); outputs → 74HC595 chain (coils via
DRV8833 with **VM on 5 V — never 12 V, abs max 10.8 V**; indicator LEDs ≤4 mA direct +
series R, >6 mA → 2N7002). Standard pins SCK=PB3/MISO=PB4/MOSI=PB5/LOAD=PB8/LATCH=PB9;
tie-offs '165 CLK_INH→GND + chain-end SER→GND, '595 MR̄→3V3 + OĒ→GND; 100 nF per chip;
33 Ω series on SCK/LOAD/LATCH for remote legs; J_SR leg per the harness table.
- digital switch/button (I²C-class) → MCP23017 GPIO (14 inputs/chip; 3-pos = 2 GPIO;
n-pos rotary = n GPIO; **INT lines on PB12/PB13 when the node also carries a ShiftBus**)
- continuous pot / analog axis → ADS1115 channel (or STM32 ADC) with a 1 kΩ + 100 nF RC filter
- LED zone → AO3400A low-side MOSFET (30V — required for the 12V rail's SMBJ12A 19.9V clamp; not IRLML2502's 20V), gate from STM32 3.3 V PWM; 5-LED series strings, one
current-limiting resistor per string (120 Ω default)
I²C addressing: MCP23017 0x20–0x27 (up to 8/bus), ADS1115 0x48–0x4B (up to 4/bus); STM32 has
two I²C buses. The *firmware* side of these parts (driver classes) belongs to the `firmware`
skill — this skill owns the wiring and verification.
Symbols carry **IPN + LCSC co-equal** (IPN = stable descriptive identity, LCSC = the buyable
that can churn). To sync a part's IPN + supplier/cost data into InvenTree (the
`inventree-part-import` tool, the placeholder workflow, alternates, non-LCSC Alibaba parts),
use the **`inventree-parts`** skill.
## Verify
`kicad-cli sch erc` (clean) and `kicad-cli pcb drc` (clean against the JLCPCB rules) before
calling a board done — see `docs/_source/kicad.md` for the CLI. Boards with a shift-register
block: verify against the ShiftBus pin standard (PB3/4/5/8/9; MCP INTs on PB12/PB13 when
mixed) and the harness interface-class table in `docs/_source/hardware-standards.md`.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!