ESP32 Projekt: Quiz Buzzer – Wer drückt als erster
Kennst du das? Du sitzt mit Freunden bei einem Gesellschaftsspiel zusammen, eine spannende Frage wird gestellt und plötzlich rufen alle gleichzeitig die Antwort. Wer war zuerst dran? Um dieses Problem technisch und mit einer ordentlichen Portion Bastelspaß zu lösen, bauen wir uns heute ein digitales Quiz-Buzzer-System.
Die Idee dahinter
Das Prinzip ist simpel: Jeder Spieler bekommt einen handlichen Buzzer. Wer zuerst drückt, dessen Farbe leuchtet an einer zentralen Anzeige auf. Klingt einfach, ist aber alles andere als simpel. Jeder Drücker arbeitet kabellos, akkubetrieben und im Tiefschlaf (Deep‑Sleep Modus), um im entscheidenden Moment aufzuwachen und ein präzises ESP‑NOW‑Signal zur Zentrale zu senden. Der Würfel reagiert sofort, erkennt den schnellsten Spieler und zeigt dessen Farbe an.
Hinter dieser scheinbar leichten Bedienung steckt ein bewusst reduziertes, aber technisch anspruchsvolles Zusammenspiel aus Funkkommunikation, Energieeffizienz, MAC‑Adress‑Logik und kompakter Hardware.
Als Anzeige nutzen wir meinen LED-Würfel, den ich euch bereits in einem anderen Tutorial vorgestellt habe und kann je nach gewünschter Personenanzahl auch für bis zu 10 Personen erweitert werden.
Ein Tutorial in zwei Teilen
Da das Projekt doch einige Hürden bereithielt, habe ich es für dich in zwei klare Teile aufgeteilt:
Teil 1: Der Würfel (Die Zentrale): Wir erweitern den bestehenden LED-Würfel um eine neue Software (Sketch), damit er per Funk auf die Buzzer reagiert.
Teil 2: Die Buzzer (Die Drücker): Wir bauen kompakte, batteriebetriebene Sendeeinheiten, die energiesparend arbeiten.
Teil 1: Der Würfel – Die smarte Zentrale
Der Würfel ist das Herzstück unseres Spiels. Er empfängt die Signale der Spieler und entscheidet in Millisekunden, wer gewonnen hat.
Die Hardware: ESP32 Lolin Lite mit LiPo Akku
Im Inneren des Würfels arbeitet ein ESP32 Lolin Lite. Ich habe mich bewusst für dieses Board entschieden, weil es einen Anschluss für einen LiPo-Akku (Lithium-Polymer-Akkumulator) besitzt. So können wir den Würfel im Betrieb puffern und sind nicht auf ein ständig angeschlossenes USB-Kabel angewiesen. Der Akku wird auch über den USB Anschluss des ESP32 Lolin geladen. Weitere Info, Siehe unter LOLIN32 vs LOLIN32 Lite
Schutzschaltung (PCM=Protection Circuit Module): Nutze nur Akkus mit integrierter Schutzelektronik (erkennbar an der kleinen Platine unter der Isolierung am Kopf des Akkus), da das Board selbst keine Abschaltung bei Unterspannung besitzt.
Gehäuse & Flexibilität
Das Beste an dem Projekt: Du kannst es genau auf deine Bedürfnisse anpassen. Je nachdem, ob du meistens mit 6, 8 oder sogar 10 Personen spielst, habe ich eine Vorlagen die ein anpassbares Gehäuse auf Makerworld.com hinterlegt. Dort kannst du entscheiden, mit welcher Personenzahl du starten möchtest.
Diese Flexibilität ist zwar praktisch, hat mich aber noch zu keiner finalen Lösung für die Befestigung des Lolin und die Ladekabelöffnung gebracht. Momentan liegt das Board mit Akku daher noch lose am Deckelboden.
Die neue Software (Der Sketch)
Damit der Würfel weiß, welcher Spieler gerade gedrückt hat, nutzt er ESP-NOW. Das ist ein schnelles, drahtloses Kommunikationsprotokoll von Espressif, das keine WLAN-Verbindung zu einem Router benötigt.
Damit das funktioniert, muss der Würfel die MAC-Adresse (Media Access Control-Adresse – die eindeutige Hardware-Nummer) jedes einzelnen Buzzers kennen. Der neue Sketch reagiert also ganz gezielt auf die Signale „seiner“ Buzzer und lässt die entsprechende LED leuchten.
Die neue Software: Wer war der Schnellste?
Die ursprüngliche Software des Würfels (aus dem Gehäuse-Tutorial) ersetzen wir nun durch einen spezialisierten Sketch. Dieser macht zwei Dinge:
Auswerten: Er empfängt die Signale der Buzzer via ESP-NOW. Da jeder Lolin Lite eine eigene MAC-Adresse (Media Access Control-Adresse) hat, weiß der Würfel genau, welche LED er einschalten muss. Wie vorab diese MAC-Adresse ausgelesen wird, hatte ich im Beitrag Kabellose Kommunikation mit ESP-NOW ohne Router beschrieben.
Strom sparen: Damit der Akku geschont wird, schaltet sich der Würfel nach 5 Minuten Inaktivität automatisch in den Deep Sleep (Tiefschlaf).
Der Reset-Taster: Er ist das wichtigste Bedienelement. Wenn ein Spieler gedrückt hat, leuchtet seine LED und alle anderen Buzzer werden ignoriert. Erst wenn du den Reset-Taster drückst, wird die Anzeige gelöscht und die Runde wieder freigegeben. Sollte der Würfel eingeschlafen sein, weckst du ihn mit genau diesem Taster auch wieder auf.
Hardwareliste für den Würfel
Hier ist das Material, das du für die Zentrale benötigst:
Mikrocontroller:ESP32 Lolin Lite (wegen der guten Akku-Ladesteuerung).
Akku: Ein passender LiPo-Akku 3,7V, 2000-3000mA (z.B. von EEMB). Wird auch über den JST PH 2.0 Lolin Lite Anschluss geladen. Beim bestellen und vor dem Anschließen unbedingt auf die Polung achten, da es hier keine einheitliche Normung gibt. Board geht sofort kaputt!
Taster: Ein Standard-Taster (12mm) zum Zurücksetzen der Runde.
LED: GPIO Pin für 6 Personen wären 12, 13, 14, 25, 26, 27 (erweiterbar) Taster: Reset-Taster an GPIO 15 (gegen GND geschaltet)
Die Software für den Würfel:
Bevor du den ESP32 Lolin einbaust, musst du MAC Adressen auslesen. Nutze den MAC-Scanner von meiner Webseite, im Beitrag Kabellose Kommunikation mit ESP-NOW ohne Router beschrieben, um die Adresse deiner Buzzers im Teil 2 zu ermitteln und trage diese in den Sketch ein.
Quellcode (6 Personen) für VS Code auf Github: prilchen/buzzerreceiver (Für Arduino IDE den Inhalt, der unter Verzeichnis „src“ zu findenden main.cpp Datei, verwenden)
Die wichtigsten Abschnitte werden im Quellcode als Kommentarzeilen erklärt.
Teil 2: Der Buzzer / Drücker
Nachdem unser Würfel (die Zentrale) bereit ist, bauen wir jetzt die Buzzer. Das sind die Einheiten, die die Spieler vor sich stehen oder in der Hand haltend haben. Da diese komplett kabellos funktionieren, müssen sie klein, robust und vor allem extrem sparsam im Energieverbrauch sein.
Die Hardware-Liste
Für jeden Buzzer benötigst du:
Mikrocontroller:ESP32 Lolin Lite (ideal wegen des Akku-Anschlusses).
Akku: Ein kleiner LiPo-Akku 3,7V, 20mm breit (Lithium-Polymer) mit ca. 250 mAh (Milliamperestunden). Da ich keinen anderen gefunden habe, weil falscher Anschluss Stecker musste ich noch passende JST 2.0 PH Stecker dazu bestellen und umlöten. Auch hier beim bestellen und vor dem Anschließen unbedingt auf die Polung achten, da es hier keine einheitliche Normung gibt.
Taster: Ein 12mm Standard-Taster (um Strom vom Akku zu sparen nicht leuchtend).
Gehäuse: Mein Design aus dem 3D-Drucker. Mit einer kleinen Öffnung (5,7×12,3mm) für das USB-C Ladekabel. Die Druckdatei kann bei Makerworld heruntergeladen werden.
Der Trick mit den Farben
Ich wollte für jeden Spieler eine eigene Taster-Farbe. Da ich im Handel aber nur Taster in sechs verschiedenen Farben finden konnte, musste ich kreativ werden:
Bastler-Tipp: Ich habe einfach weitere neutrale weiße Taster genommen und diese mit speziellen Farbstiften (Acrylic Markers) gefärbt. So konnte ich problemlos passende Buzzer zur LED Farbe erstellen, ohne nach exotischen Bauteilen suchen zu müssen! Auch gibt es das Gehäuse für die empfange Zentrale für 3D Drucker als einfarbigen Vorlage. Mit solchen Farbstiften kann es auch mehrfarbig werden.
Damit der Buzzer in das kleine Gehäuse passt, halten wir die Verdrahtung so simpel wie möglich.
Anschlussplan:
Taster: Ein Kontakt kommt an GPIO 4, der andere an GND (Ground/Masse).
Akku: Wird direkt in den JST-2.0 PH Anschluss des Lolin 32 Lite gesteckt.
Strom per USB-C laden
Da die ESP32 Lolin Lite ein Ladeelektronik mitbringen, kann per USB-C Kabel der Akku geladen werden.
Ladefunktion: Das Buzzer Gehäuse hat eine Aussparung 5,7×12,3mm für das USB-Kabel. So kannst du den Buzzer zum Laden einfach an ein Handy-Netzteil anschließen. Die Ladeelektronik leuchtet Blau während des Ladevorgang und geht aus wenn abgeschlossen.
Die Software für den Buzzer
Bevor du den ESP32 Lolin einbaust, musst du MAC Adressen auslesen. Nutze den MAC-Scanner von meiner Webseite, im Beitrag Kabellose Kommunikation mit ESP-NOW ohne Router beschrieben, um die Adresse deines Buzzers zu ermitteln und notiere sie dir (für den Würfel-Sketch aus Teil 1).
Quellcode für VS Code auf Github die so auf jeden erstellten Buzzer aufgespielt werden kann: prilchen/buzzersenderespnow (Für Arduino IDE den Inhalt, der unter Verzeichnis „src“ zu findenden main.cpp Datei, verwenden)
Die wichtigsten Abschnitte werden im Quellcode als Kommentarzeilen erklärt.
Installation über WebInstaller: Alternativ habe ich nun auch die Installation über einen Online WebInstaller bereitgestellt. Erstmal nur für den Buzzer, da der Würfel ja vorab noch die Mac-Adressen von euren Sender benötigt. Sollte auf Desktops mit Chrome und Edge Browsern funktionieren:
Wenn dann zum ersten Mal getestet wird, kann im Sketch die Zeile „define DEBUG 0“ auf 1 gesetzt werden, damit im Seriellen Monitor bei Problemen, Step by Step die einzelnen Schritte verfolgt werden können. Nur nicht vergessen anschließend dann wieder auf 0 zurück zu setzen. Das spart Stromverbrauch.
Theoretische Energie-Bilanz:
Wie lange hält der Spielspaß? Nach der Optimierung des Codes und dem Einsatz des Deep Sleep (Tiefschlaf) Modus müsste sich folgende Laufzeit für beide Komponenten ergeben:
Der Sender (Buzzer)
Akkugröße: 250 mAh.
Verbrauch: Dank EXT0-Wakeup verbraucht der Buzzer nur im Moment des Drückens nennenswerten Strom. Ein typischer Zyklus (Aufwachen, ESP-NOW Nachricht senden, kurzes Warten auf Bestätigung, zurück in den Schlaf) dauert bei guter Verbindung etwa 100 bis 200 Millisekunden.
Verbrauch im Wachzustand: Während des Sendens verbraucht der ESP32 etwa 150 mA bis 200 mA.
Verbrauch pro „Klick“: Rechnen wir konservativ mit 200 mA für 0,2 Sekunden.
Energiebedarf: Das entspricht etwa 0,011 Milliamperestunden (mAh) pro Tastendruck.
Der verwendete Akku hat eine Kapazität von 250 mAh. Da wir den Akku nicht bis auf 0 % tiefentladen sollten (und der LDO-Regler des ESP32 eine gewisse Mindestspannung benötigt), rechnen wir mit einer nutzbaren Kapazität von ca. 200 mAh.
Wenn wir die nutzbare Kapazität durch den Verbrauch pro Klick teilen, ergibt sich 200mA/0,011mA=18181 Klicks
Ausdauer: Ein kleiner 250 mAh Akku reicht rechnerisch für über 18.000 Tastendrücke. Selbst bei intensiver Nutzung hält eine Ladung viele Wochen.
Der Empfänger (Würfel-Zentrale)
Akkugröße: 2000 mAh.
Verbrauch: Die Zentrale muss permanent auf Signale „lauschen“, was etwa 80-90 mA (inklusive LED) benötigt. Rechne ich mit einer nutzbaren Kapazität von ca. 1600 mAh (80 % der Nennkapazität, um den Akku zu schonen und den Spannungsabfall zu berücksichtigen) ergibt sich 1600mA/90mA=17,7Std.
Ausdauer: Im Dauerbetrieb hält der Akku ca. 17 bis 18 Stunden am Stück durch.
Sicherheitsnetz: Nach 5 Minuten Inaktivität schaltet sich auch die Zentrale in den Tiefschlaf, um eine Tiefentladung des Akkus zu verhindern, falls man das Ausschalten vergisst.
Mit dieser Kombination aus kleineren Akkus in den Buzzern und einem großen Puffer in der Zentrale müsste das System für einen langen Spieleabend gerüstet sein, ohne dass ständig ein Ladekabel im Weg liegt. Ob ich damit richtig liege, wird sich nun beim nächsten Spieleabend beweisen müssen.
Fazit & offene Punkte
Betreffend der fehlenden Befestigung des Lolin im Würfel Gehäuse und entsprechender Ladekabelöffnung bin ich noch nicht endgültig zufrieden. Das Projekt Quiz-Buzzer zeigt aber sehr schön, wie man mit moderner Hardware und ein paar Zeilen Code ein tolles Spielgerät bauen kann.