

Stoplight
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
8DS18B20U
MSOP-8-55℃~+125℃ 12bit 2.5V~5.5V 400ms 750nA Single-bus ±0.4℃ MSOP-8 Temperature Sensors ROHSUMWTemperature SensorsHUSB238_002DD
DFN-10L(3x3)-40℃~+85℃ 1 3.1mA 3V~25V DFN-10L(3x3) USB Converters ROHSHynetekUSB ConvertersTMC2209-LA-T
QFN-28-EP(5x5)-40℃~+125℃ 2 256、8、16、32、64 2A 340mΩ 4.75V~29V 4.75V~29V Bipolar Driver Overcurrent Protection、Short-Circuit Protection、Over temperature protection、Under-voltage lockout、Motor step-out prevention function、Built-in charge pump、Thermal warning STEP/DIR、UART Yes QFN-28-EP(5x5) Stepper Motor Driver ROHSTRINAMIC Motion Control GmbHStepper Motor DriverTPS54202DDCR
SOT-23-6-40℃~+125℃@(TJ) 1 2A 4.5V~28V 45uA 500kHz Adjustable Buck Buck Built-in Yes SOT-23-6 DC-DC Converters ROHSTexas InstrumentsDC-DC ConvertersMF254V-11-07-0743
插件,P=2.54mm-40℃~+105℃ 1 1x7P 2.54mm 3A 3mm 60V 7P Round Hole Through Hole Top 插件,P=2.54mm Female Headers ROHSXFCNFemale HeadersDOZ30P03
DFN3x3-8-55℃~+150℃ 1 P-Channel 1.229nF 1.9V 144pF 15mΩ@10V 26.3nC@10V 30A 30V 31W P-Channel DFN3x3-8 MOSFETs ROHSDOINGTERMOSFETsMDA4020-100M
SMD,4.5x4.1mm1.9A 1.9A 10uH 165mΩ Alloy integrated molding inductor ±20% SMD,4.5x4.1mm Molding Power Inductors ROHSKOHERelecInductors (SMD)XL-1005UGC
0402-40℃~+85℃ 120° 1mm x 0.5mm square LED 249mcd 25mA 3V 516nm~531nm 531nm 80mW Discrete Diode Emerald Green Top-mount Water Clear 0402 LED Indication - Discrete ROHSXINGLIGHTLED Indication - Discrete
README
README.md🚥 Stoplight

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.

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

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.
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: 0Wall Heater
This demo implements a knob controlled wall heater.
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.150Blinds
StallGuard blinds operation
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: freewheelingSchematic
Reference
Parts
45| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 100nF/50V | Capacitor_SMD:C_0402_1005Metric | C12, C15, C16, C17 |
| 3 | 4.7uF | Capacitor_SMD:C_0805_2012Metric | C5, C6, C9 |
| 2 | 1R00 | stoplight:R0805 | R8, R9 |
| 2 | 1uF/50V | Capacitor_SMD:C_0603_1608Metric | C14, C18 |
| 2 | 20K | Resistor_SMD:R_0402_1005Metric | R6, R7 |
| 2 | 22uF | Capacitor_SMD:C_0805_2012Metric | C7, C10 |
| 2 | 2K2 | Resistor_SMD:R_0402_1005Metric | R10, R11 |
| 2 | MF254V-11-07-0743 | stoplight:HDR-TH_7P-P2.54-V-F_MF254V-11-07-0743 | H1, H2 |
| 1 | 0.1uF | Capacitor_SMD:C_0402_1005Metric | C4 |
| 1 | 0.1uF/25v | Capacitor_SMD:C_0603_1608Metric | C2 |
| 1 | 100K@1% | Resistor_SMD:R_0402_1005Metric | R5 |
| 1 | 10R | Resistor_SMD:R_0603_1608Metric | R1 |
| 1 | 10uF/25v | Capacitor_SMD:C_1210_3225Metric | C1 |
| 1 | 12R | Resistor_SMD:R_0402_1005Metric | R14 |
| 1 | 1K | Resistor_SMD:R_0603_1608Metric | R13 |
| 1 | 1uF/50V | Capacitor_SMD:C_0805_2012Metric | C3 |
| 1 | 22K1@1% | Resistor_SMD:R_0402_1005Metric | R4 |
| 1 | 22nF/50V | Capacitor_SMD:C_0402_1005Metric | C11 |
| 1 | 4.7uF | Capacitor_SMD:C_0603_1608Metric | C13 |
| 1 | 49.9K | Resistor_SMD:R_0603_1608Metric | R2 |
| 1 | 4K7 | Resistor_SMD:R_0402_1005Metric | R12 |
| 1 | 56pF | Capacitor_SMD:C_0402_1005Metric | C8 |
| 1 | 5K1 | Resistor_SMD:R_0603_1608Metric | R3 |
| 1 | Conn_01x04_Socket | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J1 |
| 1 | DOZ30P03 | stoplight:PDFN-8_L3.1-W3.0-P0.65-LS3.3-BL | Q1 |
| 1 | DS18B20U | stoplight:MSOP-8_L3.0-W3.0-P0.65-LS4.9-BL | U4 |
| 1 | HUSB238_002DD | stoplight:DFN-10_L3.0-W3.0-P0.50-BL-EP2.5 | U2 |
| 1 | LOGO | LOGO | G*** |
| 1 | MDA4020-100M | stoplight:IND-SMD_L4.5-W4.1_YXMAA0402 | L1 |
| 1 | TMC2209-LA-T | stoplight:QFN-28_L5.0-W5.0-P0.50-BL-EP | U3 |
| 1 | TPS54202DDCR | stoplight:SOT-23-6_L2.9-W1.6-P0.95-LS2.8-BL | U1 |
| 1 | TYPE-C 6P(073) | stoplight:TYPE-C-SMD_TYPE-C-6P_5 | USB1 |
| 1 | XL-1005UGC | stoplight:LED0402-RD_GREEN | LED1 |
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 mm

- 2 layers220 × 120 mm

- 4 layers188 × 80 mm

- 6 layers26.9 × 26.9 mm

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 mm

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 mm

Trackball
efogtech/endgame-trackball-hardware
Because it's cheaper than 4 layers. Yes, seriously.
260 parts26 - 4 layers51 × 44 mm

- 8 layers35 × 35 mm

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