Skip to the content
PCBKitNew board
4 layers18.5 × 30.2 mmStoplight, the printed circuit board in 3D

Delicate Tiny Motor Movements

Size
18.5 × 30.2 mm
Copper layers
4
Thickness
1.6 mm
Parts
45
Nets
52
Pads
164
Tracks, vias
309, 76
Pours
8
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
2 Dec 2025
Updated
2 Dec 2025

Overview

Stoplight is an open-source printed circuit board by willpuckett, from the willpuckett/stoplight repository on GitHub. It is a 4-layer board of 18.5 × 30.2 mm with 45 parts on 52 nets, routed with 309 tracks and 76 vias.

It is built around the DS18B20U, HUSB238_002DD and TMC2209-LA-T, with the TPS54202DDCR, MF254V-11-07-0743 and DOZ30P03 among its other parts. Its parts include 18 capacitors, 14 resistors, 4 ICs, 1 diode and 1 transistor. It belongs with the robots and motor control and home automation and IoT boards of this library.

Main components

8

README

README.md

🚥 Stoplight

top_view

Features

  • TMC2209 Stepper Driver
  • 1 Ω Sense Resistors (tuned for small motors)
  • HUSB238 PD Controller for dynamic Voltage Control
  • On-board temperature sensing
  • Made for ESPHome
  • Matter Accessory via rs-matter

Stoplight is a Xiao shield for operating small stepper motors. It is designed specifically for 28-BYJ48, although it may work with other small (0.225 RMS Amps or less) steppers as well. It aims to provide utility all around the home, and is especially useful when working with blinds and knobs.

rear pcb view

Commercial stepsticks have sense resistors that are not properly sized for 'smaller' motors, making it more difficult to take advantage of TMC2209's features, including stallguard.

StopLight brings reliable stall sensing to commodity/low cost, high torque motors.

Stoplight seeks to remedy these issues, while also providing software selectable voltage control and temperature measurement in a package that works well with HomeAssistant/ESPHome.

For those not using HomeAssistant, StopLight can be used as a Matter accesory in your Apple/Google/WhatEver home.

Todo

  • TVS Protection
  • Change C14 to same as C18 (BOM Consolidation)
  • Consider removing DIAG and just using UART events instead
  • Consider reconnecting fan port
  • Address DS18B20U reading high
  • Test fit in mini blind housing
  • Dim LED brightness
  • Test StallGuard tuning
    • ✅ works very well at 12v+
    • ⚠️ 9v is untested
    • 🚦 5v is more finicky
  • Add esphome sample yaml's
  • Rewrite as Matter accessory

Homing

homing demo

Fabrication

Use the production files to upload to jlc. Or first run available here.

You'll need to swap the motor wires to a JST XH 4 pin housing. In addition to removing the red cable, you also must perform the bipolar mod on your steppers.

Example HomeAssistant Config

The build sometimes fails, but can usually be completed by repeatedly pressing 'Retry', or switching to 'arduino' framework. If your ESPHome builds are failing, you may need to allocate more RAM, especially if you're running in a VM.

Tuning

This demo exposes a number of controls to make tuning StallGuard easier.
yaml
substitutions:
  name: "stoplight"
  friendly_name: "StopLight"
  board: "seeed_xiao_esp32c3"

# board/wifi/ota stuff
packages:
  device_base: !include .esp32.yaml

esp32:
  framework:
    type: esp-idf

logger:
  level: DEBUG

esphome:
  on_boot:
    - tmc2209.configure:
        direction: cw # or ccw
        microsteps: 1
        interpolation: True
        enable_spreadcycle: False
        tcool_threshold: 0

Wall Heater

This demo implements a knob controlled wall heater.
yaml
substitutions:
  name: "heater"
  friendly_name: "Wall Heater"
  board: "seeed_xiao_esp32c3"

# board/wifi/ota stuff
packages:
  device_base: !include .esp32.yaml

esphome:
  on_boot:
    # - lambda: id(husb_01)->command_request_voltage(5);
    - tmc2209.configure:
        direction: cw # or ccw
        microsteps: 1
        interpolation: True
        enable_spreadcycle: False
        tcool_threshold: 0
        tpwm_threshold: 0
    - tmc2209.stallguard:
        threshold: 23
    - tmc2209.currents:
        standstill_mode: freewheeling
        run_current: 0.1375 # was 0.150

Blinds

StallGuard blinds operation
yaml
substitutions:
  name: "blins03"
  blind_number: right
  friendly_name: "Right Blind"
  board: "seeed_xiao_esp32c3"
  delay: "1s"

# board/wifi/ota stuff
packages:
  device_base: !include .esp32.yaml

esphome:
  on_boot:
    - tmc2209.configure:
        direction: ccw # or ccw
        microsteps: 1
        interpolation: True
        enable_spreadcycle: False
        tcool_threshold: 0
        tpwm_threshold: 0
    - tmc2209.stallguard:
        threshold: 45 
    - tmc2209.currents:
        standstill_mode: freewheeling

Schematic

schematic

Reference

TMC2209 Calaulations Worksheet

BTT-TMC2209-v1.2

Cookie Robotics

jangeox

Parts

45
QtyValueFootprintReferences
4100nF/50VCapacitor_SMD:C_0402_1005MetricC12, C15, C16, C17
34.7uFCapacitor_SMD:C_0805_2012MetricC5, C6, C9
21R00stoplight:R0805R8, R9
21uF/50VCapacitor_SMD:C_0603_1608MetricC14, C18
220KResistor_SMD:R_0402_1005MetricR6, R7
222uFCapacitor_SMD:C_0805_2012MetricC7, C10
22K2Resistor_SMD:R_0402_1005MetricR10, R11
2MF254V-11-07-0743stoplight:HDR-TH_7P-P2.54-V-F_MF254V-11-07-0743H1, H2
10.1uFCapacitor_SMD:C_0402_1005MetricC4
10.1uF/25vCapacitor_SMD:C_0603_1608MetricC2
1100K@1%Resistor_SMD:R_0402_1005MetricR5
110RResistor_SMD:R_0603_1608MetricR1
110uF/25vCapacitor_SMD:C_1210_3225MetricC1
112RResistor_SMD:R_0402_1005MetricR14
11KResistor_SMD:R_0603_1608MetricR13
11uF/50VCapacitor_SMD:C_0805_2012MetricC3
122K1@1%Resistor_SMD:R_0402_1005MetricR4
122nF/50VCapacitor_SMD:C_0402_1005MetricC11
14.7uFCapacitor_SMD:C_0603_1608MetricC13
149.9KResistor_SMD:R_0603_1608MetricR2
14K7Resistor_SMD:R_0402_1005MetricR12
156pFCapacitor_SMD:C_0402_1005MetricC8
15K1Resistor_SMD:R_0603_1608MetricR3
1Conn_01x04_SocketConnector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ1
1DOZ30P03stoplight:PDFN-8_L3.1-W3.0-P0.65-LS3.3-BLQ1
1DS18B20Ustoplight:MSOP-8_L3.0-W3.0-P0.65-LS4.9-BLU4
1HUSB238_002DDstoplight:DFN-10_L3.0-W3.0-P0.50-BL-EP2.5U2
1LOGOLOGOG***
1MDA4020-100Mstoplight:IND-SMD_L4.5-W4.1_YXMAA0402L1
1TMC2209-LA-Tstoplight:QFN-28_L5.0-W5.0-P0.50-BL-EPU3
1TPS54202DDCRstoplight:SOT-23-6_L2.9-W1.6-P0.95-LS2.8-BLU1
1TYPE-C 6P(073)stoplight:TYPE-C-SMD_TYPE-C-6P_5USB1
1XL-1005UGCstoplight:LED0402-RD_GREENLED1

The 44 most common of 45 parts.

Questions

How big is the Stoplight PCB?

It measures 18.5 × 30.2 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Stoplight use?

45 parts, built around the DS18B20U, HUSB238_002DD, TMC2209-LA-T and TPS54202DDCR. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Stoplight KiCad files?

From the willpuckett/stoplight repository on GitHub, at the commit this page was made from: the board is stoplight.kicad_pcb and its schematic stoplight.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Stoplight design in my own project?

Its repository states no licence, so its author keeps all rights: ask willpuckett before reusing the design.

Similar boards

  • 2 layers234.9 × 106.1 mmEhrbl, the printed circuit board in 3D

    Ehrbl

    willpuckett/ehrbl

    🍂 is in the air...

    134 parts4
  • 2 layers220 × 120 mmHot Plate, the printed circuit board in 3D

    Hot Plate

    sergioibarra98/Hot-Plate

    105 partsMIT
  • 6 layers26.9 × 26.9 mmOpenFC, the printed circuit board in 3D

    OpenFC

    OpenDrone-hw/OpenFC-Lite-Mini

    Open-source Betaflight flight controller. RP2354A, 20x20 mm, 6-layer, 3-6S, CERN-OHL-S-2.0.

    131 parts147CERN-OHL-S-2.0
  • 6 layers37.9 × 37.9 mmOpenFC, the printed circuit board in 3D

    OpenFC

    OpenDrone-hw/OpenFC-Lite

    Open-source Betaflight flight controller. RP2354B, 30.5x30.5 mm, 6-layer, 3-8S, CERN-OHL-S-2.0.

    164 parts85CERN-OHL-S-2.0
  • 6 layers65 × 85 mmTrackball, the printed circuit board in 3D

    Trackball

    efogtech/endgame-trackball-hardware

    Because it's cheaper than 4 layers. Yes, seriously.

    260 parts26
  • 4 layers51 × 44 mmCyberboard Panel, the printed circuit board in 3D

    Cyberboard Panel

    notaroomba/cyberboard

    A cyberpunk-themed STM32 devboard

    138 parts20
  • 8 layers35 × 35 mmOpenAIO, the printed circuit board in 3D

    OpenAIO

    OpenDrone-hw/OpenAIO

    Open-source AIO for 2-6S toothpick quads: flight controller, 4-in-1 AM32 ESC and ExpressLRS receiver, 25.5x25.5 mm.

    343 parts19CERN-OHL-S-2.0