



$5 Bluetooth Bridge for Stackmat Cubing Timers (ESP32-S3, Dual-core, BLE Spoofing)
Hi r/esp32, I want to share my original project: StackmatLink.
I designed the PCB and wrote the firmware to solve a specific problem in the speedcubing community.
The Problem:
Competitive "Stackmat" timers output data via a 3.5mm jack using a proprietary PPM (Pulse Position Modulation) signal. Getting this into a PC usually requires cables and an audio-in port, which is messy and prone to noise.
My Solution:
A $5 wireless bridge using an ESP32-S3.
Technical Details & Challenges:
- The Biggest Challenge (Signal Integrity): The raw analog output from the timer is extremely noisy. I used an LM393 comparator circuit to shape it into a clean 1200-baud digital square wave. Tuning the threshold was the hardest part to ensure zero-bit errors.
- Dual-Core Implementation: I utilized the S3's dual cores to prevent latency. Core 1 is dedicated to the UART signal parsing and state inference (detecting when the timer starts/stops), while Core 0 handles the NimBLE stack.
- Protocol Spoofing: To make it "plug-and-play" with the web-app csTimer, I reverse-engineered and spoofed the GAN Smart Timer BLE protocol. The browser thinks it's talking to an official Bluetooth timer.
GitHub (Source & Schematic): https://github.com/liusonwood/StackmatLink