I have been revisiting some form of buzzer lockout system, both wired and wireless, since high school. My first design was built using transistors – not very sophisticated. I don’t have any documentation of that work.
In college, one of the first microcontroller-based projects I completed was a wired buzzer lockout system designed around the PIC16F84. These chips were a great introduction to microcontrollers – simple, and I could build a “No Parts Pic Programmer” for on the cheap. I still have a pic of the schematic:
I then wanted them to go wireless, so I went through almost 10 iterations using different microcontrollers, different wireless ICs, etc. Here are a few pics from that development. I know, I don’t know what I was thinking with that design on the right…
My current version, shown above, is as compact as I could get it, while still being usable while it’s in the user’s hand.
RF: SI4455 (a wonderful RF chip)
Battery: 3.7V LiPo (rechargable through a DC jack)
The “master” dongle is meant to be plugged into a PC, but it can be powered via non-computer means as well, you just won’t get to use any PC-side software for displaying who buzzed in, team scores, and buzz-in sound.
The buzzers are in a deep sleep until the buzzer button is pressed. At that point, it wakes up, packages up a “buzz-in request” packet, and sends it. It then waits for an acknowledgement from the master, who is always listening. The master will respond with a “you’re the first” message, or a “someone else is already locked in message”. If it does not receive an acknowledgement within a specified amount of time, it assumes there was some kind of RF corruption (bit error, or another buzzer or master-acknowledgement interfered). The buzzer will perform an exponential backoff algorithm similar to how ethernet works, and try again. It stays in this state until it receives positive acknowledgement. This protocol is my custom development.
If the buzzer receives a “you’re the first” message, it will blink its LED. The master dongle also blinks an LED indicating someone has buzzed in. The system can be “cleared” if the clear switch is pressed on the dongle, or if the dongle is plugged into a PC and it receives a message from the PC to clear. This message is sent out to all buzzers, and they will clear their status.
The dongle is always listening and acknowledging to buzzer requests as described above. The dongle’s microcontroller is an AT90USB162, which has an onboard USB controller. If connected to the PC, the dongle will communicate to the host when buzzers have buzzed in. Here is a screenshot of a simple scoring app I wrote: