Skip to the content
PCBKitNew board
2 layers156.3 × 56.1 mmThrottleAdapterBoard, the printed circuit board in 3D

ThrottleAdapterBoard

strofos/ThrottleESP

Z21 Throttle implementation on ESP32

Size
156.3 × 56.1 mm
Copper layers
2
Thickness
1.6 mm
Parts
26
Nets
36
Pads
91
Tracks, vias
186, 6
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
7 Jun 2026
Updated
24 Sep 2026

Overview

ThrottleAdapterBoard is an open-source printed circuit board by strofos, from the strofos/ThrottleESP repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 156.3 × 56.1 mm with 26 parts on 36 nets, routed with 186 tracks and 6 vias.

It is built around the BC547 and JS102011SAQN. Its parts include 8 connectors, 5 resistors, 2 capacitors, 2 switches and 1 transistor.

Main components

2

README

README.md

Z21 Throttle ESP

Z21 throttle implementation on ESP32 like a light Z21 lok maus. You might even build it on ESP8266 as there is no ESP32 specific functions used. It uses a standard variable resistor (pot) to handle the speed. Only 126 DCC steps is implemented. A 3x4 keyboard is used to navigate throw the menu and handle the functions 0 to 9. The code gets data from the Z21 asyncronous, so if you change the locomotive or the tracks gets an EStop you get notified on the throttle also.

Electronic Components

  1. ESP32 DEV board
  2. Nokia 5110 PCD8544 display module
  3. 5k or 10k variable resistor
  4. 3x4 keyboard
  5. 18650 single cell as power suply

Flash the code

Use a standard Arduino IDE to flash the code. Just make sure you have the correct board selected and install the graphic libraries from Adafruit. I used a Nokia 5110 display, PCD8544 chipset, SPI driven, so is easy to adapt it to another SPI display.

Setup the Wifi

The wifi SSID and password are set inside the Config.h file. Just edit it and put your own settings.

TCP commands

The IP can be found in the menu of the throttle, goto Menu (hold * for 1 sec) and then select Wifi (press 2). The default port is 5983. The open Putty, add the IP and port and then select Telnet. If successful a command promt will apear. You can now send the desired command to the throttle. Here is the complete list of commands implemented on the throttle:

  • <loco adr="45"> -> lock the loco address to 45. change the 45 to the desired address
  • <loco adr="*"> -> unlock the loco address menu. the address can be changed
  • <lock> -> locks the maus, all actions are suspended
  • <unlock> -> unlocks/frees the maus; also commands can be used

How to make the enclosure

After you print the Top and Bottom enclosure parts on a standard 3D filament printer you need some M3 insert-threads and M3 standard screws to put it all together. See the images for more information. I test-printed them on my Anycubic Kobra S1 3D printer. The 18650 cell lid is still under design so it is missing from the current repo.

Copyright

Fell free to download, make and share this project! A like or share of this repo will be much appreciated!

Parts

26
QtyValueFootprintReferences
6MountingHoleMountingHole:MountingHole_3.7mmH1, H2, H3, H4, H5, H6
310kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR3, R4, R5
2100nFCapacitor_SMD:C_1210_3225Metric_Pad1.33x2.70mm_HandSolderC1, C2
21kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR1, R2
110kTerminalBlock_Altech:Altech_AK100_1x03_P5.00mmRV1
1BAT_HOLDERThrottleAdapterBoardLibrary:BatteryHolder_18650_THTJ8
1BC547Package_TO_SOT_THT:TO-92_Inline_Horizontal1Q1
1FUSEResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderF1
1JS102011SAQNButton_Switch_SMD:SW_SPDT_CK_JS102011SAQNSW1
1KY-040Rotary_Encoder:RotaryEncoder_Alps_EC12E-Switch_Vertical_H20mm_CircularMountingHolesSW2
1KeypadConnector_PinHeader_2.54mm:PinHeader_1x07_P2.54mm_VerticalJ7
1LCD5110Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ1
1POWERTerminalBlock_Altech:Altech_AK100_1x02_P5.00mmJ2
1WemosS2MiniAConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ3
1WemosS2MiniBConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ4
1WemosS2MiniCConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ5
1WemosS2MiniDConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ6

Questions

How big is the ThrottleAdapterBoard PCB?

It measures 156.3 × 56.1 mm and has 2 copper layers, 1.6 mm thick.

What parts does the ThrottleAdapterBoard use?

26 parts, built around the BC547 and JS102011SAQN. 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 ThrottleAdapterBoard KiCad files?

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

Can I use the ThrottleAdapterBoard design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 4 layers36 × 50.2 mmRacer, the printed circuit board in 3D

    Racer

    StuckAtPrototype/Racer

    These are structured into their own files. I could have used submodules, but decided against it.

    83 parts3.8kApache-2.0
  • 4 layers38 × 49 mmNDS TV OUT V1I2, the printed circuit board in 3D

    NDS TV OUT V1I2

    LNH-team/Lost-NDS-TV

    The Lost Nintendo DS Television Output, brought back to life

    48 parts488GPL-3.0
  • 4 layers74.7 × 30 mmController, the printed circuit board in 3D

    Controller

    StuckAtPrototype/Thumbtroller

    77 parts305
  • 4 layers49 × 74.9 mmPCB business card, the printed circuit board in 3D

    PCB business card

    StuckAtPrototype/PCB_business_card_remake

    A custom PCB based "business" card that lets you play a version of Flappy Bird.

    311 parts132Apache-2.0
  • 2 layers58 × 38.3 mmEsp32-caliper, the printed circuit board in 3D

    Esp32-caliper

    Mew463/esp32-caliper

    It features a built in 150mAh battery and a USB C interface for charging/uploading code.

    44 parts59
  • 2 layers85 × 56.5 mmModemHAT, the printed circuit board in 3D

    ModemHAT

    astuder/ModemHAT

    Classic Phone Modem HAT for the Raspberry Pi

    111 parts56
  • 6 layers98.6 × 88 mmSympetrum V3 FF3, the printed circuit board in 3D

    Sympetrum V3 FF3

    borgel/sympetrum-v3

    The Dragonfly badge as seen at DEFCON26

    134 parts21
  • 4 layers62.8 × 61.7 mmCf mp3-player, the printed circuit board in 3D

    Cf mp3-player

    will127534/cf-mp3-player

    A simple MP3/WAV/FLAC player using CF card

    119 parts16MIT