4 Person Wired Buzzer Game From Scratch

by jkunzler in Circuits > Electronics

19 Views, 0 Favorites, 0 Comments

4 Person Wired Buzzer Game From Scratch

17433617676421656271705847802108.jpg

4-Person Buzzer Game


Description


This project includes the hardware design files and source code needed to build a four-person buzzer game from scratch.

It was created as a volunteer activity associated with The Church of Jesus Christ of Latter-day Saints to teach teenagers how to solder, 3D print, and program in C++.

You are welcome to use and learn from this project under the MIT License.


How to Play


  1. Connect the handles using the RJ12 ports.
  2. Power on the motherboard by connecting it to a USB power supply.
  3. The game will play a startup song.
  4. The slide switch toggles sound muting.
  5. The game starts in the reset state—all handle LEDs should be off.
  6. Ask a question.
  7. Press the motherboard button to enable responses—handles will light up the left LED.
  8. Players press and hold a handle button to respond.
  9. The motherboard will play a sound.
  10. If two players press at the same time, the motherboard applies a random tiebreaker.
  11. Players can press the button before responses are enabled.
  12. The winning handle will light up the right LED.
  13. The player states their answer.
  14. Judge and score manually.
  15. Press the motherboard button to reset and go back to step 6.


Code


Diagnostics

Short test scripts for buttons and LEDs—useful for teaching coding basics.


Game

The Arduino project implementing the game using the FreeRTOS framework.

  1. Customize the song_XXXXX files to add custom buzzer sounds.
  2. The main file for Arduino compilation is game.ino.


3D Printed Components

Designed in FreeCAD. .stl files for 3D printing are available in the corresponding component folders.


Case


A 3D-printable enclosure for the motherboard.


Handle


A 3D-printable enclosure for the four handles, each equipped with a button and LEDs. The handles connect to the motherboard via RJ12 phone cables.


PCB Design


Designed in KiCad.

  1. The exports folder contains:
  2. Bill of materials (BOM)
  3. Gerber and drill files for PCB manufacturing
  4. Also includes:
  5. A .step model and schematic printout for circuit reference
  6. Note: This repository does not include the full KiCad parts library required for board file recreation.


Cost Estimate

At the time of publication:

  1. PCB and component costs: $75 - $125 USD per board (varies based on order size; e.g., Osh Park requires a minimum order of 3 PCBs).
  2. 3D printing material: ~300g of PLA per system.
  3. Assembly time:
  4. Skilled labor: ~2 hours
  5. Beginners: ~10 hours

Supplies

The most up-to-date source files for this project are hosted at https://github.com/jwkunz/buzzerCatcher/tree/master.

Some files are included in these directions but may be outdated.

You will find the full bill of materials for the circuit board components in the KiCAD folder under the exports folder. The file format can be easily uploaded to an online vendor for purchasing.

The 3D printed cases will require about 300g of PLA plastic. Multiple colors are recommended.

You will need soldering supplies (iron, solder, flux, scrap wire, wire strippers, dikes) and some form of craft adhesive (e.g. hot glue, super glue). You will need about 2 ft of wire of approximately 24 gauge (e.g doorbell wire).

You will need a tiny Phillips screwdriver.

Download the Source Files

Download the most updated design source files from the public GitHub repository. The easiest method is to "download as zip". Post issues with the design and seek support from me using the tools in GitHub.

https://github.com/jwkunz/buzzerCatcher/tree/master

Order the Circuit Components

Upload the bill of materials .csv file in the KiCAD export directory to a circuit part vendor (e.g. DigiKey or Mouser). Change the quantities to order enough components for your needs. I recommend the classic rule "2 is 1" and purchase extra parts in case of loss or damage during assembly. Most vendors can ship within a week.

Downloads

Manufacturer the PCB

Send the gerbers and nc drill files in the KiCAD export directory to a PCB manufacturer (e.g. Osh Park) to fabricate the mother board. If you have the ability to make your own circuit boards with a PCB mill or copper etching, you are welcome to try. These are two sided PCBs the rely on via connections with 10 mil traces and clearances.

Assemble the Motherboard

FYSYCXTM8RD6EFC.jpg
FB39JCFM8RD6EFQ.jpg

Following the part labels in the schematic and bill of materials, solder the components to the motherboard. Every component is through hole and no surface mounting is required. I recommend soldering the small parts such as the switches and buttons before soldering the larger components around them. Mind the polarity on the LED bar. The positive voltage (anode) of the LED goes towards the bottom of the PCB by the screw hole. I recommend testing the direction of the LED bar using the diagnostic script (next step) before committing to soldering the bar. The missing LEDs and black cover are missing in the picture because of damage incurred in unsoldering the LED bar to correct mistaken polarity.

Downloads

Upload the Diagnostic Codes

20250327_194456.jpg

I have provided diagnostic code to verify operation on the motherboard after soldering. To run the code, load the .ino file of the code diagnostic directory in your Arduino development environment. Most people will use the Arduino provided IDE, but I prefer using the VSCode extension or simply raw compilation with Arduino command line tool. Compile and upload the code and follow the menu directions typed over the TTY serial monitor. Make sure your LEDs, switches, and buttons are working before moving on.

Print Out the Cases

20250327_194321.jpg

Using the .stl files in the FreeCad directories print out quantity 1 of the buzzer_case Body and Lid and quantity 4 of the handle Case and Lids. I recommend using a separate color of PLA for each handle boxes to make the teams easy to determine. Do not use supports on these print jobs.

Free Wire Solder the Handles

20250327_195314.jpg
20250327_195011.jpg
20250327_194803.jpg
17432994260718499209518078596611.jpg
17432994543796201234721973620371.jpg
17432995170814226136481325262405.jpg
17432996620225129461909620610465.jpg
17433592217663990074259826812687.jpg
17433592748449070997223775273127.jpg
17433594018964686234531884336790.jpg
17433595907105829162756204022430.jpg
17433600398055268953203309840660.jpg

For each of the four handles, screw in the center button and snap in the RJ12 connector. You may wish to glue the connector in place. Insert the LEDs and bend the leads back as pictured. The LEDs can be retained by bending the leads under the lid, but glue will make them easier to manage. I inserted the longer annode leads towards the outside of the box. You can see how the LEDs internal structure is oriented in the picture.

Follow the wiring diagram in the schematic to connect the button to the LEDs and to the correct pins on the RJ12 connector. This will require cutting small pieces of wire to span the various connections between components. I used dual color speaker wire for the assembly. The color in the pictures is arbitrary and does not correspond to voltage. The best practice for soldering wire to leads is to twist the copper wire into tiny hooks to wrap around the lead before soldering. The wire into the switch is attached with a screw driver terminal block.

The tight spacing in the RJ12 can be alleviated by trimming the two unused corner pins with snips and bending the leads out. The wire hook method can place the wire sheathing inward to help insulate contact between pins.

Test the handles by plugging them into the motherboard with game code (next step) before closing the case.

Upload the Game Code

You have now created all the electronic components. Use the Arduino IDE to compile and upload the game.ino project code. The Arduino should play a song on boot-up (if the sound switch is enabled) letting you know it is ready to play. Test all the handles and buttons are working by plugging in the RJ12 ports and playing through few rounds.

Seal Up the Cases and Lids

20250327_194110.jpg
17431204056713194027284578514400.jpg
1743361282336937749416515498562.jpg
F264X1RM8VNHZDW.jpg
FMQRUGTM8U826WG.jpg

The mother board can be glued to the 3 posts inside the case. Once inside, glue the lid the case. Glue the handle lids into the box.


NOTE: In the pictured make, due to an first revision flaw I broke the motherboard button and switch and had to mount them externally on the lid with glue. The design files have since been corrected to fix that flaw and now the button and switch should fit inside the case.

Optional: Customize the LEDS and Sounds


The LEDS in the light bar can be reprogrammed to display a light show.

In game source code you will find a pair of files song_XXXXX.h. These header files define an array that describes the music. They can be modified to play your own music. The first entry in the array is the beats per minute. The remaining fields are pairs of #define keywords for the MIDI note frequencies followed by an integer that indicates how may 32nd beats to endure the note (or rest). See the files for the formatting examples. Don't forget to change the length of the array in the file after you make edits.

Plug and Play

Once programmed, the Arduino simply needs power from the USB wall adapter to start and play. See the game instructions at the beginning. Have fun!