Easy Button

Game Show Buzzer System

What?

It's a quiz buzzer lockout system, like the ones they have on game shows like Jeopardy or for high scool and college quiz bowls. Each player has a button to buzz in with, the first person to press their buzzer attempt the question. The purpose of a lockout system is to determine precisely who buzzed in first, so there is no possible debate. In this case, machine is better than man.

This particular one uses the Staple's Easy Button, a lame marketing gimmick that consists of a large pushbutton that says "that was easy!" when you press it. It also features USB to provide power and connectivity to a computer for integration with quiz software and for firmware upgrades.

Why?

The ACM student chapter at USC was having an engineering themed Jeopardy competition for Engineering Week and needed a lockout systems. Building your own is far cheaper and more fun than buying one, so I figured why not?

And why use Easy Buttons? They're cheap, large, momentary pushbuttons, and easily hackable: perfect for this project.

How?

This project isn't for complete electronics newbies. It's not particularly complex (actually quite simple), but it does involve soldering of wires and programming a microcontroller, which I won't cover the basics of here. Learn to do these things first, then come back here.

The design is very simple. It consists of a microcontroller (I used a PIC), several momentary pushbuttons and LEDs. The buttons are connected to the inputs of the PIC, the LEDs are connected to the outputs of the PIC. The PIC runs a simple loop that reads the input pins and checks for presses of the pushbuttons, and as soon as it detects one is pressed it activates a buzzer for a moment then begins flashing the corresponding LED until it is reset using a reset button.

The hardware and software of the USB portion of the project is a little more complicated, so it's optional. Fortunately the PIC18F4550 series of microcontrollers has USB support so there's no need to deal with the really low level parts of USB.

Parts

Required:

Optional:

Optional, but required for USB support:

See this page for more details on required parts for USB with the PIC18F microcontrollers.

Tools and Miscellaneous Supplies

Preparing the Microcontroller

I used a PIC microcontroller, specifically the PIC18F2455. Most microcontrollers (PICs, AVRs, MSP, whatever) should work but these instructions are for the PIC. Whatever you use, it should have at least 1 input pin and 1 output pin for each Easy Button, plus 1 input pin for a reset button, and possibly 1 output pin for an optional buzzer.

The provided source code was compiled with the MPLAB C18 compiler for the PIC18F2455. If you use it on another microcontroller or compiler you may need to change it substantially. The source is commented with most of relevant details. Several things to note if you are using a different microcontroller:

Preparing the Easy Buttons

Getting the Easy Buttons ready is probably the most labor intensive piece. Each one will probably take at least half an hour.

  1. Take the batteries out. Drilling through batteries is a bad idea.
  2. Peel off rubber bumpers and unscrew the screws on the bottom. Disassemble the button. Replace the silver ring part before drilling.

Easy Button bottom Easy Button disassembled

  1. Drill a hole large enough for your cable through the back of the button casing and into the battery compartment. The hole should be slightly above the "crease" in the silver casing, and slightly off mid-line (either side) so you have room for the LED later. You should put the battery cover back on before drilling so it will fit with the cable in place.
  2. Remove the divider from between the two battery sections and the metal battery contacts from the side without the wires. Needle nose pliers work well for both.
  3. Take off the silver casing. Drill another hole on the end of the battery compartment you just removed the battery contacts from.
  4. Replace the silver casing first. Strip ~10cm of the outer sheath from your cable, route the cable from the outside through the silver casing, into the battery compartment, and out the last hole you drilled.
  5. Route one pair of wires to the opposite side for one LED, one pair to the near side for another LED, and a third pair to the top of the circuit board for the button.
  6. Prepare the 3mm red LEDs by flattening the leads, stripping ~1cm from each of the wires for the LEDs, carefully soldering the LED leads to the wires, and insulating them with a minimal amount of electrical tape.
  7. Hook the LEDs up to power with a current limiting resistor (~100 ohm at 5v for both) to test them.
  8. Drill small holes large enough for the LEDs to fit through at the ends of upper red plastic part. They should be as close to the edge as possible, away from the big metal piece, diagonally so they point up towards the top center of the button.
  9. Place the LEDs through the holes, place small amounts of hot glue around and in the hole, position the LEDs so the light is as evenly distributed as possible (doesn't have to be perfect yet), check with the button top in place.
  10. Once the LEDs are glued in a suitable place, use a Dremel or even sandpaper to flatten the tops of the LEDs so they are horizontal. Be sure not to damage the LEDs by grinding too much away.
  11. Solder the button wires to the contacts shown below. Check that these are the right contacts by measuring with a multimeter (resistance should be very high when not pressed, less than about 50 ohms when pressed).
  12. Test the LEDs and button one more time before closing up the casing. Ensure that the button top and silver casing ring are lined up correctly by checking the ridges match up with the grooves.

LEDs have polarity, so you should always be consistent when soldering them to the wires. Pick a color scheme you can remember and stick with it. The buttons don't have any polarity but you should still be consistent.

Putting it All Together

  1. Program the microcontroller and test it before soldering anything. I recommend using a solderless breadboard until you're sure it works.
  2. Connect (either solder or breadboard) all required pullup resistors (the ~10k ones) to input pins if your microcontroller doesn't have internal ones.
  3. Connect one wire of each of the button wires to ground and the other to the corresponding input pin of the microcontroller.
  4. Connect each of the LED anodes (the positive side, usually the longer lead of the LED) wires to Vdd and the cathodes (both negative wires from the same button) to the corresponding output pin of the microcontroller. Make sure it matches the input pin of the button otherwise the lighted LED won't correspond to the pressed button!!!
  5. Connect the buzzer, reset button (along with pullup resistor, if needed), and "ready" LED (along with current limiting resistor.

Miscellaneous Notes

Simple explanation of pullup resistors

When a button is pressed it "pulls" the input pin of the microcontroller to 0V, but when it isn't pushed nothing is normally connected (electrically) to the input pin. A pullup resistor makes that connection to +5V, but the resistance makes it weak enough to still be pulled down to 0V when the button is pressed. The value of the pullup resistor needs to be high enough that ground can still pull it low, 10k is usually a good value.

Simple explanation of current limiting resistors

LEDs have very little resistance when connected in the proper direction, so the current needs to be limited by a separate resistor, otherwise the LED will draw too much current and burn out. Ohms law tells us V = I*R, or more convenient R = V / I, where V is voltage, I is current, and R is resistance. Standard LEDs like about 15mA, we're using about a 5V power supply, so 5V / 0.015A is about 330 Ohms.

Optional USB

Coming soon.

comment ^