A digital, wireless scorekeeper for games like cornhole & table tennis.
ScoreKeepr is a digital, wireless score keeping device for two player games where the players may be stationed apart from each other. For games like cornhole or table tennis. This was my first fully integrated hardware project, including PCB design, CAD modeling for the case, 3D printing, assembly and coding.
You can buy all the parts individually or use the Digi-Key cart I've created here.
- PCB (link)
- Trinket Pro 5V (link)
- RFM69 Radio Module (link)
- LED 7-Segment Backpack (link)
- 5V Regulator (link)
- Various switches
- Basic soldering skills
- 3D Printer
The assembly is simple. The Trinket Pro & radio module are mated to the PCB using standard .1" headers for ease of debugging. I used .1" header to connect the switches and regulator, so soldering should be very simple.
The Trinket Pro 5V has a USB bootloader, so programming is pretty straight forward. Just load the INO file into the Arduino IDE and upload to the device. You will need the following before you can compile and upload:
-
Install the following libraries in your Arduino environment:
Bounce2 (link)
Adafruit_GFX (link)
Adafruit_LEDBackpack (link)
RadioHead (link)
PinChangeInterrupt (link)
LowPower (link)
EEPROMex (link) -
Install the Trinket Pro boards in the Arduino IDE (link)
The operation is simple. There is a power switch in the middle and two rocker switch for player 1 and player 2. Clicking the rocker switches up and down will increase and decrease the score for each player respectively. Pressing and holding the P2 down button will reset the score. Pressing and holding the P1 down button will cycle through different brightness levels.
Click below to watch the video:
I learned a lot during this project, and with all project there would be future improvements I would incorporate:
- Reduction in size - Due to the use of the LED backpack and Trinket, a lot of space is wasted between all the surfaces.
- Reduction in cost - Using modules and backpacks helped reduce the complexity in design, however you pay for that service. In future revisions there would be a single PCB utilizing discrete components.
- Mounting - The 3D printed case was the most simple case I could design to hold all the parts securely. There was very little thought to how it would be actually utilized. A redesign should include a mounting solution.
- Bootloader - The current implementation keeps the USB bootloader on the Trinket. However there is about a 3 second delay on boot while it checks for the presence of a USB device. This should be eliminated by burning the code directly to the MCU.
- Channels - Currently any unit listening on the 915mhz frequency with the correct encryption key can participate in the game. Ideally there would be different channels available for different games.
- Radio - The radio works okay with a wire antenna up to about 50 feet. Any longer and you'd need a different antenna. Also, after I completed the project I found the ESP-Now which utilizes 2.4ghz wifi signal with no router. It would be way cheaper to use a ESP8266 module in this mode.
- I designed the PCB using Fritzing and enjoyed the experience. For a subsequent project I tried Eagle and found it better suited for serious work.
- I learned how to utilize parametric design in Fusion 360 and it really sped up the design of the case. It took about 5 iterations before I got a fit I was happy with. Without parametric design it would've been 5 redesigns from scratch.
- I misread the specs for the LED 7-segment display and overestimated the power requirements by a large magnitude. I could've used a way smaller regulator, although I do like those three-hole solutions from Pololu.
- I ordered the wrong footprint for a speaker. My intent was for the device to make an audible alert when the score changed remotely. However the part I found in Eagle wasn't the one I selected in Digi-Key. Double check your parts!
- You can provision features you may want for the PCB at no additional cost when prototyping. If it's minimal design work you won't feel bad if you drop the feature.