WISEGUYS · game-show buzzer controller

Buzz
Net 10 Rev 0.3

Ten button inputs, sampled every microsecond, ranked on the board and delivered over Ethernet to your show software. Wire a plain push button between + and IN — the board powers it, timestamps it and tells every connected show PC who was first. No USB, no driver, no guesswork about who pressed first.

100.000 mm
Photo of a BuzzNet 10 Rev 0.3 with the lid off: RJ45 jack bottom left, the green 4-pole button terminals along the bottom and right edges, ten input LEDs across the middle and the 16-way expansion header top left.
Rev 0.3 — as built 4 layers Board A tested
Outline
100 × 100mm
Button inputs
10+ LED each
Sampling
1µs, all 10 at once
Supply
11.5–30V DC
Network
10/100Ethernet
Idle power
0.29W, measured
01

Who was first — to the microsecond

/ overview

In a buzzer round the only question that matters is who pressed first, and the answer must never depend on a busy network, a slow PC or a USB hub. BuzzNet 10 settles it on the board itself, then reports the result — with the timestamps — to every show PC that is listening.

A

Timed in hardware

A timer and DMA copy all ten inputs into memory one million times a second, in the same clock cycle. Every press gets a microsecond timestamp the moment it happens; the network only delivers the result, so its latency can never change a ranking.

B

Plug in a button

Each input is a pair of pluggable 5.08 mm screw terminals: + and IN. By default the board powers the buttons itself, so a plain push button and two wires are all you need. An LED per input shows every press during set-up.

C

Ethernet, not USB

A WIZnet W5500 with hardwired TCP/IP behind an RJ45 jack. DHCP with a fixed fallback address, found automatically by the PC tools, and up to four show PCs connected at once — a main and a backup controller can both follow the same round.

02

Every connector at the edge

/ field interface
J3–J7BUTTONS

Ten inputs

+IN+IN

Five 4-pole plugs, two buttons each. Every channel runs through a TI ISO1212 current-limited input (≈ 2.25 mA), a 33 V TVS and an indicator LED. The inputs accept 0 to +30 V and are designed to switch at about 9–10 V, so 12 V and 24 V buttons both work.

J1POWER

DC input

+ 11.5–30 V−

A regulated 12–24 V adapter with its own current limit (≤ 3 A). Reverse-polarity Schottky, a 0.5 A resettable fuse, a 33 V transient clamp and a TI LMR51610 buck to 3.3 V. Measured on the first board: the 3.3 V rail reads 3.309 V from 11.5 to 30 V.

J8FIELD

Isolated mode

+ V_FIELD− FGND

Optional. Pull the two jumpers JP1/JP2 and feed the buttons from a separate 11–30 V supply here: the button side is then separated from the logic and network side by the ISO1212 barrier. For long cables, noisy sites and ground loops.

J2LAN

RJ45, 10/100

TX ±RX ±

HanRun HR911105A magjack with the magnetics and link/activity LEDs built in, the W5500 placed right behind it. The board finds its address by DHCP within two seconds of power-up.

J11EXP

Expansion header

OUT1–103V3 / VINGND

Keyed 16-way box header with ten 3.3 V logic outputs and power, for the planned OUT10 lamp-driver board on a ribbon cable: one lamp per player, switched by the same controller that ranks the presses.

J9 · J10SERVICE

Service headers

SWDLOG / BOOTRESET

For the workshop, not the show. A debug log and the microcontroller's own serial bootloader on J10, SWD debugging on J9, and a factory reset by bridging two pins of J10 at power-up. Firmware updates themselves go over the network.

03

Arm. Press. Ranked.

/ a round of play

The show PC arms the board; from that moment every first press is timed from the arm and ranked. Contact bounce never counts twice, and settings cannot change while a round is running.

  • RANK — every player gets a place: 1st, 2nd, 3rd… with the time since the arm
  • FIRST — the first press wins and the round closes itself; a true tie is reported as a tie
  • ALL — every press and release is reported, for games without a ranking
  • Lockout — after a press a button is ignored for 50 ms (adjustable), so a bouncing contact is one press
  • Exclude — take a player out of the round from the PC, without touching a cable
  • Glitch filter — spikes shorter than the filter time (1–1000 µs, default 20) on a long cable are not presses
  • First touch — a bouncing contact is timed at its very first touch, even with a long filter, so a slow button never loses its place
board A · 2026-10-15 · recorded
>> ARM
<< ARMED ts=960552433
<< PRESS btn=3 t=21030859 rank=1 tie=0
<< PRESS btn=7 t=26055407 rank=2 tie=0
<< PRESS btn=1 t=30755273 rank=3 tie=0
Inputs 3, 7 and 1 shorted by hand with a loose wire. t is microseconds since the arm. Each touch bounced dozens of times — every input still produced exactly one PRESS.

One line of text per event. The protocol is plain ASCII over TCP, so any show system that can open a socket can read it — and WISEGUYS ships ready-made .NET components for the ones that cannot.

04

On the show network

/ tcp 5000 · udp 5001 · http 80

Show control

TCP 5000

The show software connects and talks in short text lines: ARM, DISARM, MODE, STATUS. Presses arrive the moment the board has them, on every connection.

Clients
up to 4 at once, a 5th is refused
Events
sent to every connected client
Reply
0.35 ms average, measured
Keep-alive
every 10 s, so a vanished PC frees its slot

Set-up

UDP 5001

A broadcast DISCOVER finds every board on the network, even one in the wrong subnet. Name, DHCP or static address and a full factory reset can be set from the PC without knowing the board's IP.

Address
DHCP; fallback 192.168.1.200 after 5 s
Identity
unique MAC per board, from the chip's ID
Name
BuzzNet-XXXX, or your own, e.g. Stage-A
Status LED
steady, blink or double blink at a glance

Firmware update

HTTP 80

Put the board in update mode, open its address in a browser, choose the update file, upload — done in a couple of seconds, no cable and no tool to install. Two firmware slots: the new version runs on trial and has to prove itself first.

Upload
≈ 1.5 s for a full update, measured
Safety
3 failed starts → automatic return to the previous version
Files
only genuine BuzzNet updates, checked before anything is erased
In a show
refused while a round is armed

From the button to the show PC

1 · Input

ISO1212

Current-limited, filtered input stage; the button cable stays on its side of the barrier.

~110 ns propagation
2 · Sample

Timer + DMA

All ten inputs read in one register access, one million times a second, no CPU involved.

1 µs resolution
3 · Decide

STM32G431

Edges found, timestamped from the arm, ranked and locked out — on a 170 MHz Cortex-M4.

64-bit board clock
4 · Deliver

W5500

One line per event to every connected show PC, over hardwired TCP/IP.

latency never changes a rank
05

Measured on the first board

/ board A · 2026-10-15/16

These numbers come from the first assembled board, measured on the bench with a lab supply, a multimeter and the PC tools.

3.309V
3.3 V rail
from 11.5 to 30 V in
0.0mA
Reverse polarity
−30 V for 10 s
10/10
Inputs on the right
number, LED and event
60 001
Replies in 10 min
4 clients · 0 errors
0.35ms
Average reply
99 % under 0.74 ms
1.9s
Power-up to
DHCP address
0.29W
Idle power
same at 12, 24, 30 V
≤ 1µs
Between channels
10 inputs, one button
06

Not just buzzers

/ any open or closed contact

To the board every input is simply open or closed. That makes BuzzNet 10 just as useful as a ten-channel contact interface: door and drawer contacts, reed switches, pressure mats, key switches, limit switches or a 24 V signal from a PLC. Every change is reported the moment it happens, over wired Ethernet — no Wi-Fi dropouts, no batteries.

ESCAPE ROOMS

Puzzles and props

Hidden switches, drawers, key switches and magnetic contacts, all on one box per room. Long cables are fine, and isolated mode keeps the prop wiring apart from the network side.

HOME & BUILDING

Home automation

Doors, windows, gates and alarm contacts as ten sensors in Home Assistant, updated instantly — with invert for normally-closed contacts.

EXHIBITS

Interactive installations

Buttons, pedals and contacts in museums, trade-show stands and visitor attractions, read by the software that runs the display.

WORKSHOP

12–24 V signals

Machine and PLC outputs read directly: the inputs accept 0 to 30 V and switch at about 9–10 V, each with its own LED.

Home Assistant

integration

Add the board in Home Assistant and its ten inputs appear as binary sensors. Boards on the network are found automatically.

Updates
pushed by the board, no polling
Per input
name, type (door, window, motion…), invert
Status
sensors show unavailable while the board is offline

MQTT

bridge

Every input as an MQTT topic, for escape-room game-master software, Node-RED or any MQTT system. Serves every board it finds on the network.

Topics
buzznet/<board>/input/1…10 → ON / OFF
Runs as
Home Assistant add-on, Docker container or Python
State
retained, plus an online flag per board

Node-RED & your own code

open protocol

Ready-made Node-RED flows — straight to the board, or through MQTT with an example puzzle. Or write your own: the protocol is plain text over TCP, documented with Python and C# examples.

Flows
direct TCP and MQTT, import and deploy
Protocol
TCP 5000, one text line per change
Boards
up to 4 connections each

One board, one job. For sensor use the integrations switch the board to report every change; use a board either in a buzzer show or as a contact interface, not both at the same time.

Ten buttons.
One winner.

BuzzNet 10 is designed and built by WISEGUYS for our own game shows and for the productions we work with. Ask us about boards, the enclosure, button cabling, the show-software components and the Home Assistant, MQTT and Node-RED integrations.