top of page

Smart Scoreboard

Overview

Overview

I made this scoreboard for volleyball so that no one would have to run over to the scoreboard to add a point after every volley.  It uses pose estimation to add a point when a T-Pose is detected.  It runs the image from a webcam through a machine learning model that estimates the positions of each person's legs, arms, shoulders, head, etc. and then checks the joint locations with a big IF statement to determine whether it's a t-pose, surrender cobra, or nothing important.  

The scoreboard also functions as a normal scoreboard.  It has buttons to add or subtract points for each side, and a reset button to quickly reset the score to 0-0.  You can set the color of each side of the scoreboard and the overall brightness.  It also has a Tennis Mode where the points count up using the tennis scoring system (0, 15, 30, 40, deuces) and supports deuce. 

 

The case is 3D printed in 8 large pieces, with inlays for the electronics panels with buttons.  I used all my 3D modeling and printing skills on this project - color change inlays, embedded magnets in the rear door, and the carrying handle is TPU filament on the outside with an inner piece of hard PETG with nuts in it.  The front and rear panels are 1/4" plywood cut at the Clemson makerspace, I modelled and printed this during my downtime when I wasn't working on my masters thesis/project in Fall 2021, built it in January 2021, and then used it at volleyball the subsequent months and slowly improved it and added features.  

 

Noteworthy Hardware

Hardware
  • Raspberry Pi 4B - Runs the webcam, pose-estimation model and the color LCD screen
  • Arduino Mega - Runs the normal scoreboard stuff - display the score on the lights, add/subtract points, plays sound clips from a SD card
  • Ryobi 6Ah battery - One battery powers the whole system.  I worked at TTI when I made this project so I got great discounts on Ryobi equipment and now own many Ryobi batteries, so it made a lot of sense to run the scoreboard off one.  The 6Ah battery runs the scoreboard at full brightness for 2-3 hours.  
  • WS2812B RGB Bullet Pixels - The lights I used are the same lights used in my Christmas light hobby.  They're fully waterproof and come with ~4" of wire between them allowing for easy layout without much soldering. 
  • Arducam 100 Degree Wide Angle IMX291  Low Light Camera - I initially used a normal desktop webcam, but its field of view couldn't see much of the court.  This Arducam is extra wide-angle and good for low-light for when we play in the evening.  [Amazon]
  • DC-DC Buck Converter 8-40V to 5V 10A 50W - Used to step down the ~20V from the Ryobi battery to 5V with a lot of current for the lights.  At full brightness and white color the lights use nearly 10A, but during normal usage with both side set to a color instead of white they use about 3A at 5V.  [Amazon]
  • DROK 5V 5A Buck Converter  - Powers the Raspberry Pi.  I wanted a separate regulator for the Pi to separate it from any voltage drop that might happen when the lights are on full brightness or any voltage spikes from changing the lights.  [Amazon]

Software

Software
I programmed the fancy pose estimation parts of the project in Python on the Raspberry Pi.  I used the model "Movenet Multipose Lightning" that can detect up to 6 people in a frame.  Specifically I used the model saved_model_256x256/model_float16_quant.tflite from the PINTO_model_zoo.  I also installed the multithreaded version of Tensorflow on the Pi and ran it with 3 threads to improve the speed a bit. 

My code splits the webcam image in half and processes each side separately, and since volleyball teams are at most 6 vs 6 this model was perfect.  On the Pi 4B it takes around 400ms to run one image (both sides), so the model is running around 5 fps with the Pi slightly overclocked.  

The Arduino Mega runs Arduino (C/C++ ish) code for everything else on the scoreboard so that the scoreboard could still function even if I accidentally destroyed the Pi and had to wait weeks for a new one to come in (oops).  

Code is available upon request, email me at jacobthompson127@gmail.com.  
Scoreboard Pose Estimation Example
Example pose-estimation results using a standard webcam (not wide-angle Arducam)

More Pictures

More Pictures
bottom of page