My old buddy A. Martel was pretty stoked to see his idea come to life. I can only pray that it continues to work properly out of my hands and in a real world environment! Hopefully he doesn't get detained for bringing such a "bomb-esque" device onto school property...
Get the complete operator's manual!
I'm always looking for new challenges and things to keep me busy, so when an old friend asked if I could make him something I jumped at the opportunity. As the one and only faculty member of the "Science Department" at a small high school, he was interested in a Jeopardy style game controller to use in his classrooms. After a few initial consultations, I got to work on a complete system that would hopefully provide all of his desired functionality and them some. The finished product was a battery operated device completely enclosed in an old briefcase. The system monitored the input of four player buzzers and came with a large timer display and indicator LEDs. Player lockout after incorrect answers, a manually adjustable timer, and the ability to play the Jeopardy theme song are all standard features in this first generation quiz game controller.
I had always planned on using a microcontroller as the heart of this circuit, but which one I used changed over time. My original circuit used an ATtiny25 with an SPI connected I/O expander to control the LED displays and read the control buttons. The circuit also used a 3.3V regulator. I was having trouble with this circuit and wanted to add more functionality, so I redesigned it around an ATmega328 MCU. A couple of eight bit shift registers (HEF4094) are also used to drive the LED displays. The only other chip in use is an LM386 audio amp to drive a small speaker. A single transistor would have worked just as well, but I wanted to refresh myself on how to use this chip. In the end, I still added a MOSFET to completely disconnect the speaker from ground when it wasn't in use to stop it from buzzing and draining the batteries.
Since the circuit could be powered from either alkaline or rechargeable batteries, I needed an effective way to regulate the voltage without using an expensive low-dropout regulator. The best solution was a 5.1V Zener diode (1n4733). When 1.5V cell alkaline batteries are used, the extra voltage is dissipated by the resistor R2, and the diode keeps the supply voltage for the MCU at 5.1V. All of the other chips and LEDs that can handle higher voltages are powered directly from the battery source. If 1.2V rechargeable cells are used instead, the Zener diode has no effect, and the full 4.8V (minus a tiny amount across R2) is supplied to the MCU. The value of R2 is determined by the maximum necessary current draw. At most, (6V - 5.1V / 22Ω = 41mA will flow, which should be plenty enough current since the MCU isn't driving anything but a status LED and the illuminated player buzzers, neither of which draws more than 20mA. If nothing is on, the entire current would be sank by the diode, which can handle up to 1W. At most, 5.1V * 41mA = 210mW will need to be dissipated.
One of the two shift registers drives a row of bi-color indicator LEDs which illuminate when a player has buzzed in (green) or answered incorrectly (red). The other register drives the LED displays. Two 3 digit displays are in use - one small one on the circuit board for use by the operator, and one much larger one embedded on the front of the briefcase. Because of the size difference and illumination needs, different sized series resistors are used with each display. The digits are multiplexed such that each identical segment anode is connected (every A, B, C, etc) while the cathodes from each individual digit are connected and controlled by a MOSFET. In this way, the same control lines are used for each digit, but only one digit is ever on at a time. So every 3.3ms, one digit shuts off, and the next digit turns on. This pulsed control is handled entirely by software. More on the display control is discussed in this DIY seven segment display project.
One challenge in the design was getting the player buzzers to illuminate. This normally wouldn't be an issue, but I wanted to use standard two wire RCA cables to connect the buzzers to the controller. That means the same line would have to act as an input and output. The second wire would be connected to ground. The trick to doing this is not shorting a HI output directly to ground. When the port is an input, the internal pull up resistor is enabled. The resistance is very high, but there is a small amount of current able to flow through the LEDs in the buzzer at all times. When the buzzer is pressed, the port is pulled to ground by the much smaller 10k resistor in the buzzer. At this time, the software sets the port as a HI output, illuminating the LEDs. If the buzzer is pressed, the 10k resistor prevents the port from shorting to ground, but still allows the LEDs to be illuminated. If I ever build a similar device, I will add another resistor on the controller board for protection in case someone shorts the port connector when the buzzer is not plugged in.
Within a few days of accepting this project challenge, I had acquired most of the large materials I planned to use. The entire controller would be built into an old latching briefcase I found at goodwill, the player buzzers would be made from large touch lights from the dollar store, and the circuit could be made from parts I had in stock.
One of the first things I built was the large timer display to be shown to the players. Originally, I use three LEDs per segment to create a three digit display, but when illuminated, the light all ran together. All of the designs I have ever seen for homemade displays use a lot of LEDs lined up for each segment, but I didn't want to use that many LEDs so I came up with a new way of making these things. Since the process was so detailed, I placed it under its own project page. Basically, two LEDs were used per segment. The LEDs were placed on foam board and bent to face each other. Alluminum foil was glued to the board to reflect the light beam, and hot glue was used to coat the LEDs and foil and diffuse the light. This process worked very well. In the end, only a couple of milliamps are used to illuminate each segment - less than the segments on the small seven segment displyas built into the control board! For a more detailed explanation of this display and the building procedure, check out the Large LED Lit Seven Segment Display project page.
The original display didn't work very well. The final display was perfect!
Arron was more in favor of a large player buzzer than a small handheld button, so I picked up six round touch lights from the dollar store to be used. Four could be plugged in at once, and the other two were extras in case one of his students got a bit... excited. To start, I converted the button inside these push lights from ON-OFF to MOM-OFF (that is, push on-push off to normally off-momentarily on when pushed) and removed the bulb and wiring from inside. This was done by opening the plastic button shell and removing the small catch pin from inside the button. I have put this entire detailed process on my Instructables Page, if you are interested in repeating it.
The next phase of this light conversion was to add the RCA jack and a few LEDs. I drilled a small hole in the side of the plastic casing and epoxied an RCA jack in place. two parallel strings of two series red LEDs were then added with a 47Ω series resistor and 10k protection resistor according to the buzzer schematic shown above.
Inside the buzzer without the top case. Demonstrating the RCA jack.
With my original circuit design, I built a pair of circuit boards. The bottom main board contained all of the chips and components while a daughter board containing the control buttons and LED display sat above it. This scheme changed with the circuit redesign. In the final build, all of the components were soldered to one large circuit board with jacks to connect the indicator LEDs, speaker, buzzers, control buttons, and large LED display. Also on this board is the small LED display, a status LED, and a volume control knob for the audio amp. To create the knob, I glued a screwdriver head into the adjustment screw of a small potentiometer. The other end of the head fit into the back of a knob I found after I hollowed it out a bit.
The main components fit nicely on this board. A custom PCB would have been a lot easier.
The large LED display was embedded into a hole cut into the front of the briefcase and protected by a piece of plexiglass. The speaker was similarly fixed to the inside of the briefcase, but a hold was only cut through the inner layers and not the outer material. The circuit was screwed into the case in the upper right corner, and the control buttons and battery box were fixed to the forward wall inside of the briefcase. The player port RCA jacks were embedded into the bottom of the brief case. Lastly, the row of bi-colored LEDs were placed in small holes drilled into the top of the brief case. The six buzzers fit perfectly inside the case along with the RCA connection wires.
The basic operation is pretty simple. When the device is first turned on, it waits on input from either a player buzzer or a control button. Assuming a question is asked to the players, they are able to buzz in, at which time their individual indicator will illuminate green, and their buzzer will light up as well. The timer will begin it's countdown (the default is 10 seconds). From here, the controller can push a button for a correct or incorrect response or extend the time by five seconds. The timer expiring is treated as an incorrect answer. If the correct button is pressed, the game goes back to its default state; however, for an incorrect answer, the player's indicator LED lights up red, and they are restricted from any additional answer attempts (their buzzer will not function). Additional answer attempts may be given until all a correct answer is given, all four players answer incorrectly, or the game is manually reset.
Illuminated Player Buzzer Final Answer Attempt
The controller may also do a few things from the default state before a player buzzes in. Pressing the "correct button" will initialize the playing of the Jeopardy theme song. Pressing the "timer" button will allow the manual setting of the timer up to 9:59 with or without player input from the buzzers. Long pressing the "timer" button allows the operator to change the default answer time from 10 seconds to any value less than 255 seconds. This new default value is stored in the EEPROM of the ATmega328 MCU and will be used until it is changed by the operator again.