Skip to the content
PCBKitNew board
4 layers100 × 100 mmKOTH V2, the printed circuit board in 3D

DIY Arduino Nano ESP32 King of the Hill timer for Nerf, foam flinging, skirmish games, and objective-based events. Includes build guide, firmware, BOM, schematic, and phone referee UI.

Size
100 × 100 mm
Copper layers
4
Thickness
1.6 mm
Parts
49
Nets
43
Pads
135
Tracks, vias
174, 546
Pours
5
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
25 May 2026
Updated
7 Oct 2026

Overview

KOTH V2 is an open-source printed circuit board by Salted-Peanuts, from the Salted-Peanuts/KOTH-Timer repository on GitHub, published under the MIT licence. It is a 4-layer board of 100 × 100 mm with 49 parts on 43 nets, routed with 174 tracks and 546 vias.

Its parts include 13 resistors, 8 capacitors, 7 diodes, 4 switches and 1 IC. It belongs with the radio and wireless and interfaces and adapters boards and the ESP32 and AVR (ATmega, ATtiny) boards of this library.

README

README.md

KOTH-Timer

A DIY Arduino Nano ESP32 King of the Hill timer for Nerf, foam flinging, skirmish games, and objective-based events.

KOTH-Timer is an open-source physical game timer with arcade buttons, TM1637 displays, battery monitoring, and a local phone-friendly referee/admin web interface. It is designed for two-team King of the Hill games where players physically hold a button to capture the objective.

This project is based on a working timer that has been tested successfully at local Nerf events. A few people in the hobby scene asked how to build their own, so this repo exists to make that possible.

The goal is to keep it practical, buildable, and easy to modify.

Current Recommended Versions

The current recommended firmware release is:

text
v0.3.1

v0.3.1 is the recommended firmware for new builds.

It keeps the tested v0.3 phone/referee UI and adds small UI input fixes so team colours and match duration can be edited more reliably from the web interface.

Recommended PCB revision:

text
v0.2

PCB v0.2 has been manufactured, assembled, and tested with no known faults. It is the recommended PCB revision for new builds.

The tested KOTH Timer PCB v0.2 project is available on PCBWay for convenience if you choose to use them:

Order / view the KOTH Timer PCB v0.2 project on PCBWay

Older versions remain available for reference but are not recommended for new builds:

VersionStatus
Firmware v0.3Event-tested release, replaced by v0.3.1 bug-fix update
PCB v0.1Manufactured, functional through the web UI, but has known display issues

What It Does

KOTH-Timer is a physical objective timer for two-team King of the Hill style games.

Players press their team’s button to capture the objective. The timer tracks control time and shows the game state through:

  • Large physical displays
  • Button LED feedback
  • A local referee/admin web interface

The timer runs locally from the ESP32, so it does not need internet access during gameplay.

Prototype Photos

Finished Prototype

KOTH-Timer Timer finished prototype

Inside Wiring

KOTH-Timer Timer internal wiring

Custom PCB

KOTH-Timer Timer custom PCB

Features

  • Two-team King of the Hill timer
  • Physical arcade button controls
  • LED button feedback
  • Four TM1637 4-digit display modules
  • Local ESP32-hosted web interface
  • Phone-friendly referee/admin controls
  • Configurable match duration
  • Configurable team colours
  • Battery voltage display
  • Pause and resume controls
  • Reset lockout to prevent accidental resets
  • Game-over winner display
  • Live referee time adjustment during gameplay
  • Open Wi-Fi network by default for quick event setup
  • Optional Wi-Fi password support
  • No internet required during gameplay

Referee/Admin Connection

The timer creates its own local Wi-Fi network.

text
SSID: KOTH-Timer
Password: none / open network

After connecting, open:

text
http://10.10.10.1

Connection test page:

text
http://10.10.10.1/ping

Some phones may warn that the network has no internet. This is normal. Choose the option to stay connected or use the network anyway.

Optional Wi-Fi Password

The Wi-Fi network is open by default so referees can connect quickly during events.

If you want to add a password, edit the firmware near the top of the code.

Find:

cpp
static const char* AP_PASS = "";

Change it to a password with at least 8 characters:

cpp
static const char* AP_PASS = "kothtimer";

Then upload the firmware again.

Who This Is For

This project is for hobbyists who want to build their own objective timer for games such as:

  • Nerf events
  • Foam flinging games
  • Gel blaster games where legal
  • Airsoft-style objective games where legal
  • Backyard or club-based capture games
  • Custom scenario games

You do not need to be an expert programmer, but you should be comfortable with basic wiring, soldering, and flashing an ESP32.

Basic Hardware Needed

The current build uses:

  • Arduino Nano ESP32
  • 18650 Li-ion cell
  • 18650 battery holder
  • 5 V boost converter
  • Fuse
  • Rocker power switch
  • 2 large arcade buttons with LEDs
  • 4 TM1637 4-digit display modules
  • 5-segment battery indicator
  • Battery display button
  • Resistors
  • Wire
  • Enclosure
  • USB cable for flashing
  • Basic soldering tools

See the docs folder for the BOM, schematic, and full build guide.

Build Guide

Start here:

Build Guide

The build guide covers:

  • Parts required
  • Tools required
  • Power wiring
  • Arduino Nano ESP32 pinout
  • Button wiring
  • Display wiring
  • Battery indicator wiring
  • Firmware upload
  • Wi-Fi connection
  • Event-day testing
  • Troubleshooting

Firmware

The firmware is written for the Arduino Nano ESP32 using the Arduino IDE.

Current recommended firmware:

text
Firmware/KOTH_Timer_v0_3_1/KOTH_Timer_v0_3_1.ino

For Arduino IDE compatibility, the .ino file should be inside a folder with the same name as the sketch.

Hardware Files

Hardware documentation is in the docs folder.

Current files include:

text
docs/BOM.xlsx
docs/BOM.csv
docs/Wiring_schematic.pdf
docs/build-guide.md

PCB Hardware Status

The KOTH Timer now has a tested PCB revision.

PCB revisionStatusRecommendation
v0.1Manufactured and functionally usable through the web UI, but has known TM1637 display reliability issuesReference only / not recommended for new builds
v0.2Manufactured, assembled, and tested with no known faultsRecommended PCB revision

PCB v0.1

PCB v0.1 was the first manufactured PCB revision.

It is functional through the web UI, but some TM1637 displays may show interference, flicker, incorrect segments, or unstable output.

The v0.1 files are kept in the repo for reference, troubleshooting, and comparison, but new builders should use PCB v0.2 instead.

PCB v0.2

PCB v0.2 is the current recommended PCB revision.

It was redesigned based on lessons from v0.1, with improvements around display reliability, local display decoupling, and cleaner TM1637 signal routing.

PCB v0.2 has been manufactured, assembled, and tested with no known faults.

Supported By PCBWay

PCB manufacturing for newer KOTH Timer PCB revisions has been supported by PCBWay.

PCBWay helped support this open-source hardware project by providing PCB manufacturing support while allowing the firmware, design files, known issues, and documentation to remain open source.

Their support made it easier to test real PCB revisions, improve the board design, and share the results back with other builders.

You can check out PCBWay’s PCB manufacturing and assembly services here:

PCBWay

The tested KOTH Timer PCB v0.2 project is available on PCBWay here:

Order / view the KOTH Timer PCB v0.2 project on PCBWay

Thanks to PCBWay for supporting open-source hardware creators and helping this project move from a hand-wired prototype to a tested PCB-based build.

Note: PCBWay supported manufacturing for this project, but the design notes, testing results, known issues, and recommendations in this repository are written independently.

Future Development

Planned future work may include:

  • Improving hardware documentation
  • Adding more photos and wiring diagrams
  • Adding extra game modes beyond King of the Hill
  • Improving the referee/admin interface based on event feedback
  • Exploring a Bluetooth or app-based version if there is enough interest

The v0.3.1 firmware is the current recommended release. It is based on the event-tested v0.3 firmware and includes additional web-interface input fixes.

PCB v0.2 has been manufactured, assembled, and tested with no known faults and is the current recommended PCB revision.

Project Status

This is a hobby project, not a commercial product.

The current firmware has been tested at an event, but builders should still test their own wiring and setup before using the timer in a game.

If you build one, feel free to modify it for your own event rules, enclosure, buttons, battery setup, or game style.

Related Uses

This project may be useful for:

  • Nerf King of the Hill games
  • Foam flinging objective games
  • DIY skirmish game timers
  • Arduino ESP32 game props
  • Capture point timers
  • Referee-controlled event timers
  • Local Wi-Fi game control panels

Licence

This project is released under the MIT Licence.

Parts

49
QtyValueFootprintReferences
7220RResistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P15.24mm_HorizontalR3, R4, R5, R6, R7, R8, R9
50.1uf_C_CapCapacitor_THT:C_Disc_D4.3mm_W1.9mm_P5.00mmC2, C3, C4, C5, C6
4100RResistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P15.24mm_HorizontalR10, R11, R12, R13
4MountingHole_3.2mm_M3MountingHole:MountingHole_3.2mm_M3M3, M3, M3, M3
3LED_GREENResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalD5, D6, D7
2100KResistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P15.24mm_HorizontalR1, R2
2100uf_E_CapCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC7, C8
24_Digit_DIsplay (Team_A)TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-04P_1x04_P5.00mmTM1637-A1, TM1637-A2
24_Digit_DIsplay (Team_B)TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-04P_1x04_P5.00mmTM1637-B1, TM1637-B2
2QRKOTH-Timercustomfootprints:QRKOTH-TimerQR*****, QR*****
11-2A_FuseFuse:Fuseholder_Clip-6.3x32mm_Littelfuse_102_122_Inline_P34.21x7.62mm_D1.98mm_HorizontalF1
118650_CellTerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mmBT1
1470uf_E_CapCapacitor_THT:CP_Radial_D8.0mm_P5.00mmC1
15v_Step_UpConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalU1
1Arduino_Nano_ESP32Module:Arduino_NanoA1
1Conn_01x10_PinConnector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_VerticalJ1
1LED (Team_A)TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mmD1
1LED (Team_B)TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mmD2
1LED_REDResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalD3
1LED_YELLOWResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalD4
1LOGOcustomfootprints:PCBwayG***
1LOGOcustomfootprints:kicadcatG***
1Push_Switch (Team_A)TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mmSW2
1Push_Switch (Team_B)TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mmSW3
1Rocker_SwitchTerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mmSW1
1SW_PushButton_Switch_THT:SW_PUSH-12mmSW4

Questions

How big is the KOTH V2 PCB?

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

What parts does the KOTH V2 use?

49 parts. 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 KOTH V2 KiCad files?

From the Salted-Peanuts/KOTH-Timer repository on GitHub, at the commit this page was made from: the board is PCB/v0.2-tested/v0.2_KiCad_files/KOTH_V2.kicad_pcb and its schematic PCB/v0.1-display-issues/KiCad_files/nerf timer.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the KOTH V2 design in my own project?

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

More from Salted-Peanuts/KOTH-Timer

1
  • 4 layers75.9 × 93.5 mmNerf timer, the printed circuit board in 3D

    Nerf timer

    Salted-Peanuts/KOTH-Timer

    DIY Arduino Nano ESP32 King of the Hill timer for Nerf, foam flinging, skirmish games, and objective-based events. Includes build guide, firmware, BOM, schematic, and phone referee UI.

    35 parts4MIT

Similar boards

  • 4 layers110 × 40.7 mmDrone V2 Remote, the printed circuit board in 3D

    Drone V2 Remote

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    49 parts915
  • 4 layers44.5 × 82.6 mmCONTROLLER AMPCD DDI, the printed circuit board in 3D

    CONTROLLER AMPCD DDI

    jrsteensen/OpenHornet

    OpenHornet 1:1 F/A-18C Simulator Repository

    49 parts431
  • 4 layers41 × 35 mmDiffprobe prototype, the printed circuit board in 3D

    Diffprobe prototype

    azonenberg/starshipraider

    Open hardware test equipment

    49 parts193BSD-3-Clause
  • 4 layers80 × 73.8 mmESP32-Bit Pirate Dock, the printed circuit board in 3D

    ESP32-Bit Pirate Dock

    AndreiVladescu/ESP32-Bit-Pirate-Hardware

    Carrier breaker-board for the ESP32-S3 Devkit. Works great with the ESP32-Bit-Pirate firmware.

    49 parts85CERN-OHL-W-2.0
  • 4 layers19 × 32 mmMalenki hv, the printed circuit board in 3D

    Malenki hv

    MarkR42/malenki-nano

    Speed controller and receiver for small robots

    49 parts73GPL-3.0
  • 4 layers80 × 80 mmZ2203, the printed circuit board in 3D

    Z2203

    brer-rabbit/zoxnoxious

    Analog synth / software interface

    49 parts68GPL-3.0
  • 4 layers42.8 × 36.8 mmDriver board, the printed circuit board in 3D

    Driver board

    blazer82/FT81x_Arduino_Driver

    FT81x on ST7701S Arduino Driver

    49 parts59MIT
  • 4 layers66.9 × 87 mmMeshtasticNode BQ25185, the printed circuit board in 3D

    MeshtasticNode BQ25185

    h0lad/SolarMeshtasticNode

    This is a Meshtastic Solar Node PCB based on the Heltec HT-CT62 and the linear solar charge controller TI BQ25185.

    49 parts40CERN-OHL-S-2.0