A gesture-controlled referee wristband that automates match timing in Taekwondo. Using an accelerometer and microcontroller, it detects the referee’s calibrated start and stop gestures and wirelessly updates the central timer visible to everyone. This system removes manual jury control, ensuring accurate, fair, and transparent timekeeping.
- Referee wants to stop the match.
- They make a swift hand movement used traditionally in Taekwondo.
- Players see this hand movement and stop.
- ESSync senses this swift hand movement and sends a signal to the central timer to stop.
- The central timer stops, and so do all the other sensors.
- Similar process repeats when the referee wants to restart the match.
In Taekwondo matches, round timing is controlled by officials sitting at the jury table rather than by the referee overseeing the bout. This separation often leads to inconsistencies in the start and stop of the timer, whether due to human delay, miscommunication, or, in some cases, bias. As a result, athletes can be unfairly advantaged or disadvantaged by inaccurate match durations, compromising the fairness and integrity of the competition. There is a critical need for a referee-operated, automated, and transparent timing system that ensures real-time synchronisation and impartial timekeeping.
- A gesture-controlled wristband worn by referees to automate match timing.
- Uses an accelerometer and microcontroller to detect specific referee gestures.
- The downward "stop" motion of the hand instantly triggers the central arena timer wirelessly.
- Calibrated for each referee to prevent false detections and ensure precision.
- Removes jury dependency, ensuring fair, transparent, and real-time timekeeping.
- The timer part of Taekwondo matches isn’t automated yet and really needs a cheap and effective solution.
- Wristbands are easy to make and reliable.
| Component | Purpose |
|---|---|
| ESP32-C3 DevKitM-1 | Main MCU, the "brain" of the wristband |
| MPU6050 | Detects referee hand gestures |
| 1.3" 240×240 SPI Display | Displays timer and status |
| MT3608 | Boost converter |
| TP4056 | LiPo battery charger |
The project is made with two PCBs. The upper PCB holds the display, while the bottom PCB contains the MCU and all other components. This approach keeps the wristband compact without making it too wide. In future revisions, I plan to make it even smaller. The Case closes shut using the magnets present on the bottom part of the case and the lid of the case. The PCBs are snug in the case. The bottom PCB is also mounted to the bottom case by simply fitting the PCB's holes over the protruding cylindrical parts on the inner base of the case.
Fabricate both the Top PCB and Bottom PCB using the KiCad Files provided.
Purchase all required components listed in the Bill of Materials (BOM).
Assemble the Bottom PCB first. Solder All components and connectors to the bottom PCB according to the KiCad files given, and attach their respective components.
Refer to the schematic for the correct connector orientation and pin mapping.
- Solder the female headers for the ESP32 connector(on the bottom side).
- Solder the male headers for the SPI Screen(on the top side).
- Connect the SPI Screen.
Carefully align the connector pins and stack the 2 PCBs.
- Connect the ESP32-C3 to your computer using a USB cable.
- Open the firmware in the Arduino IDE.
- Select ESP32-C3 Dev Module as the target board.
- Choose the correct serial port.
- Compile and upload the firmware.
3D-print the enclosure using the CAD files.
Install the assembled electronics inside the case. No screws are required to mount as the pcb is snug in the case. Glue Magnets to the base and lid of the case so that it can remain closed.
The wrist strap is not 3D printed </3 It's a DIY thing you need to do with a leather sheet. Please add a strap to the bottom case through the space given underneath (I will be updating this with a better option in the future).
If assembled correctly, ESSync should be working! YAY!
You'll need to calibrate your hand gestures with the watch so it can record those values and stop/start the timer the next time you use it.