Inspiration
In badminton, the difference between a smash and a lost point comes down to millimeters of contact on the racket's string bed. All badminton players aim to hit the "sweet spot", the middle of the racket, however it's hard to actually visualize where you're hitting. We set out to build a smart racket system of acoustic sensors integrated with an interactive 2D-racket model web app to improve your shot quality and achieve actual improvements over several sessions.
What it does
Starkminton is a smart racket that visualizes exactly where in the racket you hit your shot. All you have to do is turn the racket on, pair it with a device, and play badminton! While you're playing badminton, each shot you hit is visualized in https://starkminton-mauve.vercel.app/ and after each rally you could compare between two different sessions to actually see how far you've improved from one after another.
It acts as an IoT edge-computing device that localizes exactly where on the racket you hit the shuttlecock during a rally. It then streams those (X, Y) coordinates wirelessly in real-time to a web frontend, generating a dynamic heatmap of the player's session. This allows players to instantly visualize their sweet-spot accuracy and adjust their form on the fly.
Additionally, it has AI features which includes AI Coach and AI Live Commentary. AI Coach means that each past recorded session is analyzable through Gemini API. AI Live Commentary will talk you through your hits and will provide comments on what to improve in real-time.
How we built it
Sensors
On the racket, we have an array of 4x KY-037 sound detection modules around the rim that picks up sound from the vibration of the racket when hit. Using a Time-Difference-of-Arrival algorithm, we can localize the position of the shuttlecock's impact. We parameterized the {x, y} coordinates relative to the racket's rim; a coordinate of {0, 0} is the top left of the racket, and {1, 1} is the bottom right of the racket. Whichever microphone is first triggered by the shuttlecock's sound, then the registered hit will be closer to that specific microphone. We then use Cramer's rule to solve the hyperbolic equations directly on the ESP32, triangulating the hit position into exact {x, y} coordinates in millimeters.
Pipeline
BLE Transmission: The ESP32 spins up a BLE GATT server. Upon every successful TDOA calculation, it packages the data and uses a characteristic notification to broadcast a UTF-8 JSON payload (e.g., {"x":45.2,"y":-12.3}).
Dashboard Visualization: Built with Next.js and TypeScript and hosted on Vercel, the client application connects to the racquet securely using the Web Bluetooth API. It subscribes to the BLE characteristic, parses the incoming JSON, and plots the coordinates onto a digital racquet heatmap.
Challenges we ran into
Power: Currently the racket is powered by a power bank. Originally, we were going to use 3.7V LiPo batteries with a boost converter to power the ESP32. However, we ran into issues with the ESP32 bluetooth when using LiPo batteries most likely because the batteries could not supply enough current.
Microphone Sensitivity: The localization of the shuttlecock inherently depends on audio. Hence we needed to tune the microphone's sensitivity multiple times to pick up the noise from the racket strings vibration. Additionally, quieter shots such as drop shots occasionally do not get picked up by the microphone.
Sensor Precision: Locating the shuttlecock using a Time-Difference-of-Arrival algorithm within a small racket head area of 30cm2 requires high precision and sampling frequencies. Due to the hardware available, we estimate that the positions calculated are to be 80% accurate.
Accomplishments that we're proud of
This is the first time our team has used an ESP32, and we're very happy with the smooth plug-and-play process of using the smart racket. Shifting from our original intended devices (originally from piezo discs) to alternative hardware was something that we had to spend quite a lot of time on, however we are proud of the level of accuracy microphones provide. Additionally, we were happy to have a lot of hackers be interested in our racket and even play with us!
What we learned
- It turns out with enough calibration and tuning, an array of microphones are sufficient to properly map out the position of shuttlecocks
- BLE is heavily preferred over Wi-Fi for real time applications as BLE is able to send packets at a faster rate
- Soldering & mounting components in a way that distributes weight throughout the racket
What's next for Starkminton
Sensor Fusion: We have already installed an accelerometer on the smart racket, however we have not developed the firmware to integrate this yet. By collecting racket speed information from an accelerometer, we could provide users with more information for improvement.
Replacing microphones with Piezo Discs: Instead of using an audio-based Time-Difference-of-Arrival algorithm, we could use piezo discs which would truly be vibration-based.
Hardware Miniaturization: Designing a custom PCB to shrink the ESP32 and sensor connections so they fit completely flush inside the racket handle, maintaining the perfect weight distribution of a professional racket.
Compatibility with other Net-based Racket Sports: Using the same concept for the badminton racket, we hope to implement it in other racket sports, such as: tennis, padel, pickleball, etc.
Built With
- ble
- c++
- drizzle
- elevenlabs
- esp32
- gemini
- github
- iot
- next.js
- node.js
- tailwindcss
- turso
- typescript
- vercel


Log in or sign up for Devpost to join the conversation.