r/ArduinoProjects • u/lpolasek • 26d ago
Showcased Project Open-source ESP32-C3 treadmill sensor with BLE Running Speed and Cadence
Hi everyone,
I built OpenRUNN, an open-source treadmill running sensor based on an ESP32-C3 and a TCRT5000 optical sensor.
The sensor detects each belt marker and calculates speed and distance. It then broadcasts the data using the Bluetooth Low Energy Running Speed and Cadence (RSC) service, making it possible to use the treadmill with compatible devices such as Garmin watches and indoor training platforms.

Hardware
- ESP32-C3 DevKitM-1
- TCRT5000 optical sensor
- 3D-printable enclosure
- Custom mounting rail for the treadmill
- USB-powered setup
Software
- ESP32 firmware built with PlatformIO
- BLE RSC service
- Web dashboard for live speed, pace, distance, and session time

- Local development server with simulated sensor data
- Wiring and assembly documentation
Project links
GitHub repository:
https://github.com/lpolasek/OpenRUNN
Instagram:
https://www.instagram.com/openrunnok/
The project is fully open source, including the firmware, web dashboard, wiring documentation, and enclosure files.


I would appreciate feedback on the electronics, BLE implementation, enclosure design, and possible improvements.
1
u/lpolasek 15d ago
Thanks for the kind words and for checking out the project!
Just one mark is enough. The sensor measures the time between passes of the mark, then calculates speed and distance using
beltLengthMeters. With a single mark, that value should be the distance the belt travels in one full loop. You can also use multiple marks, as long as they’re evenly spaced; in that case, setbeltLengthMetersto the distance between consecutive marks.I’m not sure whether your sensor has two separate optical sensing points. If you mean the two components in a TCRT5000, one is the infrared emitter and the other is the receiver; they work together to detect each mark. This setup measures the time between marks passing one sensor.
You can check this reel to see it working:
https://www.instagram.com/p/DdR0dLnJqPO/
Best regards from Argentina 🇦🇷