Friday, 2 August 2019

Wireless Quiz / Game Buzzers

This is an Arduino based remote buzzer system. Scroll down for the code, circuit diagrams, Fusion360 files, STL files, Cura profiles (settings) and G-Codes for 3D printing the enclosures.

Features yet to be implemented are custom PCBs using individual components, a four position switch to set the buzzer unit's number, battery indication light, charging ports and a carrying case.

If you are interested in ordering such a system from us, please e-mail < > Since this project is not yet complete and in need of a host of optimizations, you will have to wait. Or use a temporary stable version until the updated version is shipped. Options inlcude number of buzzers, colours, range, battery capacity and A-B-C-D buttons for multiple choice questions.

Many Thanks to: Google, the Arduino Project - Community - Forum, Adafruit, Sparkfun, Hackaday, Ultimaker, Prusa Research, Mr. Andreas Spiess, Dave Jones [EEVBlog], Mike Dane [Giraffe Academy], Thomas Sanladerer, many great online data banks, repositories, tutorials and forums. Special Thanks to [maniacbug] and [TMRh20] for the excellent RF24 library which this project hinges on. Avishay Orpaz for the TM1637 display library - it works like a charm. Immense gratitude towards the PlatformIO project and Microsoft's VSCode, it's amazing. Thanks are due to Dr. Annappa Kamath from Mangalore for commissioning this project, his patience and support. The enclosures wouldn't have been possible without Autodesk's Fusion360. Excellent software, works like magic. Cloud base makes it perform well even on lower end and older systems.

Range of this setup with basic nRF24L01+ module is confirmed minimum 30 metres in open air (One concrete wall reduces this to around 10 metres). The [PA+LNA] version is drop-in replaceable to increase range and sensitivity.
Small LiPo batteries in the buzzers currently last for at least 4-5 hours.

The next video shows repeat presses being ignored :

Fast presses :

Buzzer enclosure - open/close with a half-turn :

Base Station :

Base station uses an Arduino Pro Mini 5V. The reason for having 5V in this circuit is the TM1637 7-segment display. We're using a 5V active buzzer module,  two wires - signal and ground. On the left are the Adafruit PowerBoost 1000C for 5V and the green Pololu switch mode voltage regulator board for 3.3V for the radio module. The Base Station runs for ~5 hours off a 2000 mAh LiPo battery.

Buzzers have Arduino Pro Mini 3.3V running directly off small LiPos, the regulated 3.3V being used for the nRF radio.

Temporary solution for recharging the buzzer unit LiPo batteries: TP4056 modules with resistor R2 on Pin2 replaced with 10 KOhms, giving pretty consistent 100 mA charge rate. 

Previously tested recharging solution : The button switch is an On/Off for the buzzer unit, to be kept in Off position while recharging as the TP4056 doesn't do load sharing. Small Lipo taped at the back.

IMPORTANT : Please take all necessary care while making this if you are a beginner. Especially when dealing with Mains or any potentially harmful electricity. Also when soldering, 3D printing, using tools. Please read up on safe practices. Take care with LiPo batteries. There are safety aspects regarding short circuit, over-charging and over-discharge. Protection circuitry on the batteries and in the charging system are required. 

Arduino Code : Note - There is one bug due to be looked into, which on rare occasions causes the buzzer to beep for a repeat press. It should be sorted out and the code here will be updated. Display is unaffected and continues to show correct values.

Base Station Code

Buzzer Unit Code
Circuit Diagrams :

Fusion360 Files : (These need to be redone properly, parametric editing is currently not stable)

Base Station Enclosure

Buzzer Enclosure

STL Files : (Input to your slicer)

Base Station Main

Base Station Cover

Buzzer Unit Main

Buzzer Unit Cover

Buzzer Unit Lock
Cura Profile Files : (Settings)

Printed in PLA.

By far the hardest part to print right was the horizontal flat surface just in front of the radio antenna. If 3D printing could be compared to flying an aircraft this would be called an inverted charlie. Key settings in Cura 4.1 (changes to stock) to achieve this were :

Layer Height (For the whole print) : 0.12 mm

Line Width : 0.4 mm (with 0.4mm nozzle)

Wall Thickness : 1.2 mm (3 walls)

Top/Bottom Pattern :  Zigzag

Bottom Pattern Initial Layer : Zigzag

Top/Bottom Line Directions : [0,90]

Top/Bottom Pattern and Bottom Pattern Initial Layer were both set to Zigzag, however this had no effect on the layer right next to the support gap. That is, the area within the walls was printed as lines in the X-direction. That was the problem - these lines had little to adhere to and would tend to move around for the slightest pixies. We eventually managed to get 8 units right, not without many failed attempts and some desperate Prayers.
Another trick was to print the layer right above as lines in the Y-direction, thinking these may adhere better to the troublesome layer below which had a fondness for sticking to the support top surface at 2-3 points, causing damage to the surface while removing the support (which could be done only after print completion).
Soluble filament is a lifesaver. But being restricted to single material FDM printer, as many others too would be, we decided to wrestle with it.

Skin Overlap Percentage : 50% (0.2 mm)

Top/Bottom Speed : 40 mm/sec

Support Roof Speed : 20 mm/sec

Fan Speed : 100%

Support Overhang Angle : 80%

Support Pattern : Grid

Support Wall Line Count : 1

Connect Support Lines : Yes

Support Density : 40% (2 mm Line Distance)

Support Top Distance : 0.12 mm (1 Layer)

Support X/Y Distance : 1.2 mm (X/Y Overrides Z)

Support Roof Thickness : 0.6mm (5 layers)

Support Roof Density : 80% (0.45 mm Line Distance)

Support Roof Pattern : Zigzag

One small note - ideally place a support blocker at the key slot's lower part (buzzer unit main being printed upside down) to prevent unnecessary support that'll spoil the clean inner surface of the buzzer unit. A fillet exists such that suppport is not essential there.

For support within the slot, 'Support Bottom Distance' was set to 0.24 mm (2 Layers) or even 0.36 mm (3 Layers) to facilitate easy removal. For the same reason 'Support X/Y Distance' was kept on the higher side. If all goes well here you should be able to remove the support using something like bent tweezers.

Base Station Main

Base Station Cover

Buzzer Unit Main

Buzzer Unit Cover

Buzzer Unit Lock 

G-Code Files : These were printed on a Creality Ender 3 using PLA. CAUTION !!! Use at your own risk as it may not suit Your setup. Take care and observe the entire print on the first go.

Base Station Main

Base Station Cover

Buzzer Unit Main

Buzzer Unit Cover

Buzzer Unit Lock


  1. I see you use the OLD version of those LiPo charger-boards: They lack protection-Circuitry.
    I advise to replace them with the new version wich include the protection-ICs.
    See the 2 additional Chips at the Battery-Side? Thats the stuff... :)

  2. This is a good project!

    Have you looked at the ESP8266 and the ESP-NOW library? Might be useful for a future version - an ESP-01 board would combine the microcontroller and the radio in one, saving space and cost. The main unit would probably need an ESP-12, since the ESP-01 doesn't have many I/O lines.

  3. Thank You Randy.

    Sure an ESP can be used, but it would be more suited if the system data needed to be uploaded to the Internet. Also, it's power consumption is > 3 times that of [ATmega+nRF24L01+]

    Wonder why boards with this combo aren't readily available.