The Neon Beat Buzzer is a companion device for the Neon Beat game. Its main goal is to provide a basic user interface to allow blind test players to compete.
The Neon beat buzzer is actively maintained and in sync with other components of the Neon Beat game. A rewrite in Rust is however in progress. It may be integrated at some point in this very same repository, or in a new one.
The buzzer relies on ESP32 with a button connected to it. The buzzer must connect to an access point which offers access to the Neon Beat backend server. Once connected, the server and the buzzer communicate over websocket, for configuration and for statuses (e.g : button pushed, connectivity maintenance, leds commands, etc)
- The buzzer is based on ESP32 board with a LiPo charge controller
- A battery can be connected onto the battery controller. Wiring a switch between the two elements allow a simple on/off feature on the buzzer
- The buzzer is meant to be used with a simple push button wired to one of the available GPIOs (no need to wire any pull resistor nor RC circuit, button is pulled and debounced by ESP32)
- The buzzer is capable of driving a WS2812 LED. The LED must be wired to a pin able to output the signal from a RMT peripheral
The following layout can be used as an example :

You can refer to the following components list :
- AZ-Delivery ESP32 Lolin
- Basic Lithium-Polymer battery, make sure to take a 3.7V battery with connector matching the one on ESP32 board
- On/Off Switch
- Arcade button
- Install ESP IDF SDK
- activate SDK with
export.sh - the project comes with some configuration regarding the controller that
the buzzer is supposed to connect to:
- Access point SSID
- Access point password
- controller IP address
- controller port
- button gpio
- led gpio
If you are using the default controller
configuration, the
default values should be enough. However, if you want to change those,
use
idf.py menuconfigand change the values under the "Buzzer configuration" menu. Don't forget to useidf.py save-defconfigafterward.
- configure your target: there are multiple variants of esp32, and so you
must build the software for your specific variant. The default is
esp32. You can list available targets withidf.py --list-targets, and set the target withidf.py set-target <target> - use
idf.py buildto build the project - plug the buzzer to computer with an USB cable
- use
idf.py flashto reflash the buzzer - advanced user : you can use
idf.py monitorto manage both previous steps and get device logs
The project has a default network configuration applied, which can be tuned
if needed. You can edit the network configuration by executing idf.py menuconfig, then selecting the "Buzzer configuration" menu.
The buzzer firmware has not been created especially for Neon Beat but for a former version of the game called the Ultimate Blind Test. The project is not officially supported anymore, as Neon Beat is the official replacement for it, but if you really want to give a try to the older version, you can generate a firmware compatible with it by checkint out the ubt-1.0.0 tag.
