Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TOOOL Timer

TOOOL Timer is an eight-station hardware timer built for lockpicking games and competitions. It was originally designed with TOOOL DMV chapters for events using TOOOL red KIK lock fixtures.

The project combines embedded software, custom electronics, physical fabrication, and event-oriented user interaction. Each station monitors a lock's open/closed state and drives its own display so multiple competitors can be timed independently from one controller.

Testing assembly

What It Does

  • Supports up to 8 lock stations at once.
  • Monitors separate open/closed switch inputs for each lock.
  • Drives 8 independent 7-segment displays over I2C.
  • Uses two MCP23017 I/O expanders for lock sensors, controls, and indicator lights.
  • Provides play/pause, reset, and mode controls with debouncing.
  • Tracks each station through startup, active timing, pause, and completion states.
  • Records the order in which locks are opened, including ties detected in the same update cycle.
  • Includes PCB design files, 3D-printable mechanical parts, wiring/build photos, software, and a bill of materials.

Engineering Scope

This repository contains the full physical-project stack rather than only the firmware:

Area Contents
Embedded software Arduino/C++ timer state machine, button handling, I/O expansion, display control
Electronics PCB design files and system wiring
Mechanical 3D-printable lock and enclosure components
Integration Eight sensor channels, eight displays, shared controls, power/data interconnects
Documentation Build photos, parts lists, and demonstration video

The software separates the timer state logic from the hardware-facing Arduino sketch. Software/main/TooolTimer.hh implements button debouncing and the multi-station timer state machine, while Software/main/main.ino handles the displays, MCP23017 I/O expanders, and physical controls.

Repository Layout

Hardware and Software Architecture

Two MCP23017 I/O expanders provide the additional digital I/O needed for the eight lock fixtures and front-panel controls. The Arduino reads the lock and button states, updates the shared timer state machine, and drives eight I2C 7-segment displays.

Each lock uses two switch inputs so the software can distinguish expected open/closed states from an invalid switch combination. The timer maintains a separate LockState for each station and advances the system through initial, starting, countup, paused, and complete modes.

Software Dependencies

The Arduino sketch currently uses:

  • Wire
  • Adafruit_GFX
  • Adafruit_LEDBackpack
  • Adafruit_MCP23X17

The firmware source is under Software/main.

Build References

The repository includes photographs from construction and integration:

Demonstration

A video covering the basic operation of the timer is available here:

Watch the TOOOL Timer video

Project Status

This repository documents a working prototype/event system rather than a packaged commercial product. Hardware-specific assumptions, wiring, and the Arduino implementation reflect the original build.

License

See LICENSE.

About

Eight-station embedded competition timer combining Arduino/C++, I/O expansion, custom PCB hardware, 3D-printed parts, and per-lock displays.

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages