↓ Skip to main content
  1. Home projects/

BoulderTimer: a countdown clock for bouldering

··Index: 10·
Table of Contents

For bouldering sessions and local competitions you need a big clock everybody can see, and that’s what BoulderTimer is for. A Raspberry Pi 3B+ draws a fullscreen countdown on any HDMI TV, and you start, pause and reset it from a browser on a phone or any other device in the same network.

It’s the plain, cheap cousin of Timeotron 3000, which times speed-climbing runs on an LED matrix.

What I did
#

I wrote everything in Python, about 1,500 lines covering timer logic, display, audio and a web server.

The Pi runs Raspberry Pi OS Lite without a desktop, and pygame draws straight to the screen, which means there’s no X11 to install or to break. A small Flask server passes commands from browsers to the clock. Its control page answers at bz-clock.local, so nobody at the gym has to type an IP address.

BoulderTimer: a phone browser sends commands to a Flask server on a Raspberry Pi, which drives the clock; pygame shows it on a TV and the audio part plays beeps and a voice warningphone browserstart, pause, resetsamenetworkRaspberry Pi 3B+, PythonFlask serverclock logicpygameaudioTVfullscreen countdownsoundbeeps, voice warning
BoulderTimer: a phone sends commands, the Pi runs the clock and drives the TV and the sound

Before the start you get three seconds of warmup with short beeps, then a long beep. The last three seconds of a round beep again, a long beep ends it, and a voice warns climbers when they have a minute left.

Sizes are computed from the real resolution of the screen, so the same code fits HD and 4K TVs. Once installed, the clock works offline. There’s a script to set up a fresh Pi and another to copy new code to it and restart the clock.

Related