SpeedChecker
An open-source portable speedometer device designed for measuring real-time speed, analyzing acceleration, and timing laps during Mini 4WD testing and racing sessions.
Key Features
Everything you need for precise speed measurement and performance analysis
Real-Time Speed
Measure speeds from 0-99 km/h with 0.1 resolution. Supports 5 units: km/h, mph, m/s, RPM, and signals/s.
Dyno Graph
10-second acceleration recording with dynamic Y-axis scaling (20-120 km/h). Tracks time-to-peak speed.
Lap Timer
Stopwatch with support for up to 5 lap times. High-frequency 100 FPS display for smooth timing.
Performance Analysis
Peak speed tracking, TT15/TT30 time-to-speed measurements, live acceleration (m/s²), and speed gauge bar.
Dual Display
Supports both 128x64 and 128x32 OLED displays with adaptive UI, button sidebar hints, and menu headers.
Configurable
Adjustable wheel diameter, spoke count, EMA smoothing, gauge scaling, auto-reset idle timer, and debug mode.
How It Works
Simple yet sophisticated speed measurement using optical sensing
Optical Detection
The QRE1113 reflective sensor detects wheel spokes passing by, generating pulses on each detection.
Interrupt Capture
Pulses are captured via hardware interrupt with 120µs debounce filtering for noise immunity.
Speed Calculation
Dual algorithms: pulse count method for high speeds, interval method for low speeds. Filtered with EMA smoothing (α=0.3) and ±15 km/h delta limiter.
Display Output
Results update on the OLED display every 400ms with real-time speed, max tracking, and visual feedback.
Technical Specifications
Detailed performance metrics and capabilities
Performance
- Speed Range
- 1 - 99 km/h
- Resolution
- 0.1 km/h
- Update Interval
- 400ms (2.5 Hz)
- Debounce
- 120µs pulse filter
- Stopwatch FPS
- 100 (10ms refresh)
Display Units
- km/h
- Kilometers per hour
- mph
- Miles per hour
- m/s
- Meters per second
- RPM
- Revolutions per minute
- sig/s
- Sensor signals per second
Software
- Language
- C++ (Arduino)
- Libraries
- Adafruit GFX, SSD1306
- Architecture
- Interrupt-driven ISR
- Filtering
- EMA + delta limiter
- License
- Open Source
Hardware Requirements
Simple components for an easy build
| Component | Description | Qty |
|---|---|---|
| Arduino Pro Micro | ATmega32U4, 5V/16MHz | 1 |
| OLED Display | SSD1306, 128x64 or 128x32, I2C | 1 |
| QRE1113 Sensor | Reflective optical sensor | 1 |
| Tactile Buttons | 6mm push buttons | 4 |
| Resistors | 10kΩ pull-up (optional, uses INPUT_PULLUP) | 4 |
Pin Connections
Ready to Build?
Get the source code and start building your own SpeedChecker device.
Get Started on GitHub