Skip to content
rinripperPublic

About

KiCad hardware design for the STARTER board — schematics, PCB layout, fabrication files and BOM across four design iterations

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

Starter One — ESP32 Smart Starter Controller for Motorcycles

An automotive electronics product taken from blank schematic to fabricated, hand-assembled hardware running on motorcycles — across four revisions and several per-vehicle variants.

The board installs inline in a motorcycle's ignition harness. It unplugs the factory connector, sits between the key side and the bike side, re-presents every wire it does not need to touch, and intercepts only the starter trigger. On top of that intercept it layers an ESP32-WROOM-32D: wireless control, battery-voltage and engine-temperature monitoring, RPM sensing, and a relay path that stays gated by the physical key.

Designed end-to-end by Mauricio Marcano in KiCad 7 — schematic capture, PCB layout, footprint authoring, component sourcing, landed-cost modelling and release-ready fabrication outputs.

Starter One V3 — top copper and silkscreen Starter One V3 — bottom copper and silkscreen

Starter One V3 — 33 × 100 mm, 2-layer FR4. Top and bottom layers.


Why it exists

Aftermarket motorcycle immobilisers and remote-start modules usually require cutting into the factory loom. That is invasive, hard to reverse, and a warranty and reliability liability.

Starter One is a pass-through module. BR (brown) and GR (gray) run straight from J1 pin 3/4 to J2 pin 3/4 with no series element. +12V is bussed to pin 1 of all three connectors. Only the starter trigger is broken and routed through the relays. Installation is connector-in, connector-out; removal restores the bike to stock.

Because every motorcycle model routes its ignition harness slightly differently, the design is maintained as a family of small variants rather than one universal board — see revision history.


Two boards in this repository

Starter One V3 Starter Max One Pro V2
File se.kicad_pcb starter_max_one_pro.kicad_pcb
Silkscreen STARTER ONE V3 · JUNE 2024 STARTER ONE V2 · MAY 2024
Size 33 × 100 mm 99 × 105 mm
Footprints 44 138
Routing 462 segments · 39 vias · 1 pour 1281 segments · 105 vias · 3 pours
Fab package — fab/ (released Gerbers + drills)

Both are 2-layer FR4, 1.6 mm, 1 oz copper. The V3 is the compact revision; the Pro is the larger, higher-integration variant whose released fabrication package ships in this repo.

Starter Max One Pro V2 — top copper and silkscreen

Starter Max One Pro V2 — 99 × 105 mm, top layer.


Key specifications (V3)

MCU Espressif ESP32-WROOM-32D — Wi-Fi 802.11 b/g/n + Bluetooth/BLE
Board 33 × 100 mm, 2-layer FR4, 1.6 mm, 1 oz copper
Supply 12 V vehicle battery, zener-clamped → 3.3 V @ 3 A buck rail
Switching 2 × SPDT power relays (SRD-12VDC-SL-C), parallel BJT + MOSFET low-side drive
Analog in Battery voltage (0–16.5 V), NTC engine temperature
Digital in Ignition-key state, engine witness, external button, RPM pickup
Outputs Starter trigger (relay), external status LED, wireless control line
Harness 3 × 6-pin 2.2 mm Sumitomo HM 090 sealed automotive connectors
Programming 2×3 × 2.54 mm UART header (TE 1734598-6)
Design 42 components · 44 footprints · 31 connected nets
EDA KiCad 7.0

System architecture

flowchart LR
  BAT["12 V battery"] --> CLAMP["Zener clamp<br/>CMZ5352B"]
  CLAMP --> BUCK["MP1584EN buck<br/>12 V to 3.3 V, 3 A"]
  BUCK --> RAIL["3V3 rail<br/>1000 uF + 10 uF"]
  RAIL --> ESP["ESP32-WROOM-32D"]

  KEY["J1 Key End"] -->|BR, GR pass through| BIKE["J2 Bike End"]

  KEY -->|KEY_SENSOR_IN| Q8["Q8 level shift"] -->|GPIO27| ESP
  SENS["J3 Sensor<br/>NTC, button, LED"] -->|BUTTON_SENSOR| Q3["Q3 level shift"] -->|GPIO34| ESP
  SENS -->|ENGINE_WITNESS| Q1["Q1 level shift"] -->|GPIO25| ESP
  DIV["30k / 7.5k divider"] -->|GPIO39| ESP
  BAT --> DIV
  SENS -->|NTC + 10k| ADC["GPIO36"] --> ESP
  RPMH["J9 RPM module"] -->|GPIO33| ESP

  ESP -->|GPIO23 WIRELESS_OUT| Q2["Q2 follower"]
  SENS -->|ENGINE_WITNESS| Q9["Q9 follower"]
  Q2 --> TRIG(("RELAY_TRIGGER<br/>1000 uF hold"))
  Q9 --> TRIG
  TRIG --> DRV["Q5 BJT + Q6 MOSFET<br/>low-side, GS1001FL flyback"]
  DRV --> RLY["K1 / K2 SPDT"]
  RLY -->|START_TRIGGER| BIKE

  ESP -->|GPIO26| LEDD["Q4 LED driver"] --> SENS
Loading

Design highlights

These are the decisions worth talking through.

1. The relay is wired-OR between firmware and a hardware line

RELAY_TRIGGER is not a GPIO. Two emitter followers pull it up from +12V:

  • Q2, based on WIRELESS_OUT (GPIO23) — the firmware path
  • Q9, based on ENGINE_WITNESS (J3 pin 1) — a hardware path independent of the MCU

Either source can raise the node; neither can veto the other. RELAY_TRIGGER then drives R13 into the bases of Q5 (FCX690BTA BJT) and Q6 (TK11S10N1L logic-level MOSFET) in parallel, switching the relay coils low-side, with D2 (GS1001FL) freewheeling from +12V across the coil node and R12 as a base pull-down.

The same ENGINE_WITNESS line is also read back by the MCU through Q1 → GPIO25, so firmware can observe the state it does not exclusively control. The schematic labels these two drive paths "Option 1 / Option 2" — the board was laid out so either could be populated.

2. A 1000 µF hold on the trigger node

C4 (1000 µF) sits on RELAY_TRIGGER, not on the supply. Once the node is pulled up it stays up while the cap discharges through the base network — giving the starter a hold time and contact debounce in hardware, with no firmware timer in the loop. It is the kind of detail that only shows up after a board has been on a real bike.

3. Three identical level-shift channels

Every 12 V vehicle line entering the MCU goes through the same building block: an NHDTC114ET pre-biased digital transistor (integrated base and base-emitter resistors, SOT-23), collector pulled to 3.3 V, emitter grounded — a one-part 12 V → 3.3 V active-low translator with no external biasing.

Channel Input Transistor Pull-up To MCU
Ignition key KEY_SENSOR_IN (J1 pin 2) Q8 R5 10 kΩ GPIO27
External button BUTTON_SENSOR (J3 pin 3) Q3 R10 10 kΩ GPIO34
Engine witness ENGINE_WITNESS (J3 pin 1) Q1 R4 10 kΩ GPIO25

One pattern, three instances, one part number to stock — and the ESP32 never sees more than 3.3 V.

4. Automotive-grade power front end

A 12 V motorcycle rail is a hostile supply: crank sag, alternator ripple, inductive kick from the starter solenoid.

Stage Part Purpose
Clamp D3 — CMZ5352B zener, SMB/SMC Transient and overvoltage clamp across +12V
Conversion J5 — MP1584EN module, 12 V → 3.3 V @ 3 A Step-down; module footprint keeps the switching node off the main board
Rail bulk C5 1000 µF + C0 10 µF + 100 nF locals Rail stability under ESP32 TX current bursts
Freewheel D2 — GS1001FL across the coil node Absorbs relay coil inductive kick
Trigger path D4 — SBR10B45P5 super-barrier rectifier Steers BR into +START_TRIGGER at a low forward drop

5. Sensing sized to the ADC

  • Battery voltage — R6/R7 = 30 kΩ / 7.5 kΩ off +12V into GPIO39, filtered by C2. Full scale is 3.3 V × (37.5 / 7.5) = 16.5 V, which brackets crank sag and a 14.4 V charging rail without clipping the ADC.
  • Engine temperature — NTC on J3 pin 6 against a 10 kΩ pull-up (R1), filtered by C1, into GPIO36.
  • RPM — dedicated 5-pin module header (J9) into GPIO33, pickup broken out to J4.

6. Layout discipline

Net classes are defined and honoured — routing splits cleanly into 0.5 mm power (179 segments: +12vdc, +3.3vdc, AC Power) and 0.25 mm signal (283 segments), over a ground pour. DRC is a conservative rule set any low-cost prototype house can hold:

min track / clearance   0.20 mm     min via diameter    0.40 mm
min annular ring        0.10 mm     min through-hole    0.30 mm
min hole-to-hole        0.25 mm     copper-to-edge      0.025 mm
microvias / blind-buried    disabled

The silkscreen carries the install map on the board — KEY+, KEY-, BROWN, GRAY, CDI, PARKING, POSITIVE, NEGATIVE, RPM, TEMP +, TEMP -, BAT SEN, LED OUT, TURN OFF SEN — so a technician does not need the schematic in hand.


ESP32 pin map

Module pin GPIO Net Function
4 GPIO36 (SENSOR_VP) TEMP+ NTC engine temperature — ADC
5 GPIO39 (SENSOR_VN) BATTERY_IN Battery voltage via 30k/7.5k — ADC
6 GPIO34 BUTTON_IN External button, via Q3
9 GPIO33 RPM_IN RPM pickup from J9
10 GPIO25 VEHICLE_IN Engine-witness readback, via Q1
11 GPIO26 LT_7 Status-LED driver (Q4 → J3 LED OUT)
12 GPIO27 KEY_DETECTOR_IN Ignition-key state, via Q8
16 GPIO13 RESET_NET On-board reset button, 10 kΩ pull-up
37 GPIO23 WIRELESS_OUT Relay trigger — firmware path
3 EN EN Bootstrap — J6 pin 4
25 GPIO0 IO0 Bootstrap — J6 pin 3
34 / 35 RXD0 / TXD0 RX0 / TX0 UART flash — J6 pins 5/6

Unused GPIOs are left free and un-routed, so firmware variants do not force a respin.

Connector pinout

Ref Label Type Pinout
J1 Key End 6-pin Sumitomo HM 090, 2.2 mm 1 +12V · 2 KEY_SENSOR_IN · 3 BR · 4 GR · 5 -START_TRIGGER_OTHER_END · 6 -START_TRIGGER
J2 Bike End 6-pin Sumitomo HM 090, 2.2 mm 1 +12V · 2 +START_TRIGGER · 3 BR · 4 GR · 5 GND · 6 -START_TRIGGER
J3 Sensor 6-pin Sumitomo HM 090, 2.2 mm 1 ENGINE_WITNESS · 2 LED OUT · 3 BUTTON_SENSOR · 4/5 GND · 6 TEMP+ (NTC)
J5 Buck module MP1584EN module footprint 1 GND · 2 +12V in · 3 +3V3 out · 4 GND
J6 Program TE 1734598-6, 2×3 × 2.54 mm 1 GND · 2 +3V3 · 3 IO0 · 4 EN · 5 RX0 · 6 TX0
J9 RPM module 1×5 × 2.54 mm header 1 GND · 2 +3V3 · 3 +12V · 4 RPM_IN · 5 RPM+

Relay contacts. K1 throws KEY_SENSOR_IN (pole) between +12V and +START_TRIGGER. K2 throws -START_TRIGGER_OTHER_END (pole) between ground and -START_TRIGGER through R100 — 100 Ω in a 2512 body, sized for the pulse energy rather than the average power.

The three harness connectors land on custom solder-pad footprints (PAD Connector 6), with sealed Sumitomo pigtails soldered on — wire-to-board without a costly board-mount automotive connector.


Manufacturing outputs

fab/ holds the released 2-layer fabrication package for the Pro board — Gerbers plus Excellon drills, as sent out:

starter_max_one_pro-F_Cu.gtl / -B_Cu.gbl            copper
starter_max_one_pro-F_Mask.gts / -B_Mask.gbs        solder mask
starter_max_one_pro-F_Silkscreen.gto / -B_...gbo    silkscreen
starter_max_one_pro-Edge_Cuts.gm1                   outline
starter_max_one_pro-PTH.drl / -NPTH.drl             drills (Excellon)
starter_max_one_v2.zip                              packaged release

Boards from these packages were fabricated, hand-assembled and run on motorcycles. Each release point is marked in git (see below), so any revision can be re-cut from the exact files that went to the fab. An earlier release package for the compact board (fab/se_production-*, September 2023) is preserved in history at commit 5234121.


BOM and sourcing

se.csv is a grouped BOM exported straight from Eeschema, carrying manufacturer part numbers, Mouser order numbers, datasheet links and component height as schematic fields — so sourcing and mechanical fit-check come out of the same source of truth as the netlist. Change a part in the schematic and the purchasing data moves with it; there is no second spreadsheet to keep in sync.

Cost was modelled per unit across the whole delivered product — components, bare PCB, freight, assembly labour and enclosure — not just the BOM line. That full-product view is what drove the part reductions across revisions: removing the MAX6675 and the discrete power stage was a cost decision as much as a design one.


Revision history

Version tags mark each release point. The original branch names are kept because they record which motorcycle each build targeted — every bike routes its ignition harness a little differently, so each variant is a small deviation from the same core design.

Tag Product tag Branch Date Commit Notes
v1.0 STARTER-MAX-V1, V1 V1, KLR 2024-03-16 db16baf Component values unified. KLR is the vehicle-specific build off this point.
v2.0 — V3 2024-03-21 17861fe PCB revision
v3.0 STARTER-MAX-V2 STARTER-MAX-V2, V4 2024-04-29 40fab11 Starter Max One Pro line — the 99 × 105 mm board
v4.0 STARTER-ONE-V3 main 2024-06-10 9371ddd Current design: compact 33 × 100 mm board, cost values finalised

vN.0 tags are chronological release order; the product tags are the original names. The tag at v3.0 is the squashed release commit — branches STARTER-MAX-V2 and V4 both carry the un-squashed development history behind it (New PCB → Regroup → Antes de quitar las luces → Almost done before BR diode → STARTER MAX V2 release), which is the clearest record of how the Pro board came together.

None of these track the silkscreen revision printed on the board — the compact board at v4.0 is silkscreened STARTER ONE V3, and the Pro board at v3.0 is silkscreened STARTER ONE V2. This table is the authoritative mapping.

Design evolution. The V2-era BOM (V2 BOOM .xlsx, 46 components) carried a MAX6675 thermocouple interface and TE 3PCV-02-006 barrier terminal blocks. Both were removed: an NTC divider resolves engine temperature well inside the useful band for a shutdown threshold, deleting an SOIC, its decoupling and three SPI nets; and barrier blocks are wrong for a vehicle exposed to vibration and water, so the harness moved to sealed Sumitomo HM 090 connectors — what the bike already uses.

Work in progress. Branch HARD-TURN-ON-OFF takes this further: it removes the discrete power stage (Q5, Q6) and the button / engine-witness / vehicle-in circuitry, and feeds a new STARTER_OFF line (GPIO25) through R8 into the relay-driver base so the key detector and the MCU share a single summing node — an interlock where firmware cannot energise the starter unless the physical key state allows it. 42 → 38 components. Bench-validated, not yet in a shipped build.


Repository layout

se.kicad_sch / se.kicad_pcb / se.kicad_pro   Starter One V3 (current design)
starter_max_one_pro.kicad_pcb / .kicad_pro   Starter Max One Pro V2
se.csv                                        BOM with MPNs, pricing, heights
fab/                                          released Gerbers + Excellon drills
docs/                                         rendered boards and schematic
fp-lib-table / sym-lib-table                  project-local library tables
Libraries/
  ├── Perceptive.pretty/                      buck module + reset switch
  ├── PAD Connector/                          hand-authored harness solder pads
  ├── 1734598-6/                              TE programming header
  ├── MAX6675 - KiCad/                        thermocouple interface (V2-era)
  ├── TK11S10N1L,LQ - KiCad/                  Toshiba MOSFET
  └── freetronics_kicad_library-master/       generic symbols (D4)
V2 BOOM .xlsx                                 V2-era BOM

Only the symbols and footprints this design actually uses are tracked — the repository carries 51 files, down from 2936, with no vendored dump of third-party libraries.

Opening the project

git clone https://github.com/rinripper/STARTER.git

Open se.kicad_pro in KiCad 7.0 or newer. Both library tables are project-local and use ${KIPRJMOD} relative paths, so the design opens with every symbol and footprint resolved — no global library configuration, no submodules, no missing-library dialogs.

Regenerate the documentation renders:

kicad-cli pcb export svg --output docs/v3-top.svg --layers "F.Cu,F.SilkS,Edge.Cuts" --page-size-mode 2 --exclude-drawing-sheet se.kicad_pcb

Full schematic: docs/schematic.pdf · docs/schematic.svg


Skills demonstrated

Hardware — mixed-signal schematic capture · 2-layer PCB layout with net-class-driven routing and ground pour · automotive 12 V front-end protection (clamping, freewheeling, transient tolerance) · relay drive with parallel BJT/MOSFET low-side stages · level shifting with pre-biased digital transistors · ADC signal conditioning and range sizing · RF module integration · custom footprint and symbol authoring · DFM-conscious rule sets

Systems — hardware paths that stay independent of firmware · non-invasive integration with an existing vehicle harness · per-vehicle variant management under version control · design-for-service silkscreen documentation

Product — component sourcing with live distributor data · landed-cost modelling and cost-driven part reduction · fabrication release packaging · four revisions carried through to fabricated, assembled, working hardware


Scope

This repository is the hardware design: schematic, layout, libraries, BOM and fabrication outputs. Firmware for the ESP32 lives outside this repo.

All schematic capture, PCB layout, footprint authoring, sourcing and cost work is my own.


Contact

Mauricio Marcano — hardware / embedded systems design 📧 marcanomauro@gmail.com

Open to hardware design, embedded systems and product-engineering roles.

About

KiCad hardware design for the STARTER board — schematics, PCB layout, fabrication files and BOM across four design iterations

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors