Back to Projects
Python Raspberry Pi UHF RFID Laravel WebSockets
RFID Race Timing System
A custom-built race timing solution using Raspberry Pi and UHF RFID technology, providing live results for fell running events.
Completed 10 November 2023
The Challenge
Local fell running clubs were timing races manually with stopwatches and clipboards. For events with 100+ runners, this meant long waits for results and potential for human error. They needed an affordable, portable timing system that could work in remote locations without reliable internet.
The Solution
I designed and built a complete timing system using off-the-shelf hardware and custom software:
Hardware:
- Raspberry Pi as the main controller
- UHF RFID reader for detecting runner tags
- Timing mat with embedded antennas
- Battery power for remote locations
- Rugged case for outdoor conditions
Software:
- Python application on the Pi for tag detection and local timing
- Laravel backend for results management and web display
- WebSocket connections for live result updates
- Offline-first design - syncs when connectivity available
Technical Details
The system needed to handle the specific challenges of fell running:
- Muddy conditions: Waterproof enclosures and robust connectors
- No mains power: Runs for 8+ hours on a single battery
- Spotty connectivity: Works entirely offline, syncs results later
- Multiple timing points: Support for split times at checkpoints
Accuracy:
- Sub-second timing precision
- Handles multiple runners crossing together
- Automatic detection of duplicate reads
Results
- Used at 10+ local fell running events
- Handles 150+ runners per event reliably
- Results available in real-time when connected
- Significant cost saving vs commercial timing systems