Systeme de buzzers sans fil pour jeux de quiz.
BuzzControl est une solution complete pour animer des jeux de quiz avec des buzzers physiques sans fil. Le systeme se compose de :
- BuzzControl : Serveur central (Go) avec interface web d'administration
- BuzzClick : Buzzers individuels (ESP32-C3) communiquant en WiFi
- Quiz d'entreprise et team building
- Jeux televises amateurs
- Animations scolaires et pedagogiques
- Soirees quiz entre amis
| Type | Description |
|---|---|
| NORMAL | Question ouverte avec reponse libre |
| QCM | 4 choix colores (Rouge, Vert, Jaune, Bleu) |
| MEMORY | Jeu de paires a memoriser |
- Gestion des questions (creation, edition, suppression)
- Gestion des equipes et joueurs
- Controle du jeu en temps reel (START, PAUSE, STOP)
- Attribution des points (joueur ou equipe)
- Historique complet des parties
- Palmares par categorie
- Sauvegarde et restauration des donnees
- Vue Question : affichage de la question, timer, media
- Vue Scores : classement des equipes avec podium
- Vue Joueurs : classement individuel
- Fonds d'ecran personnalisables avec rotation automatique
- Mode plein ecran pour videoprojecteur
- 4 boutons colores par buzzer (A, B, C, D)
- Connexion WiFi automatique
- LED de statut
- Temps de reaction precis (microsecondes)
- Batterie longue duree
- Points configurables par question
- Attribution au joueur OU a l'equipe
- Bonus de completion (Memory)
- Penalites d'erreur (optionnel)
- Historique complet avec recalcul automatique
-
Telecharger la derniere release sur GitHub Releases :
buzzcontrol-vX.Y.Z-windows-amd64.exe(Windows)buzzcontrol-vX.Y.Z-linux-arm64(Raspberry Pi)
-
Placer l'executable dans un dossier dedie
-
Lancer l'executable :
# Windows ./buzzcontrol-vX.Y.Z-windows-amd64.exe # Raspberry Pi chmod +x buzzcontrol-vX.Y.Z-linux-arm64 ./buzzcontrol-vX.Y.Z-linux-arm64
-
Ouvrir dans le navigateur :
- Administration : http://localhost/
- Affichage TV : http://localhost/tv
# Cloner le depot
git clone https://github.com/CCoupel/BuzzMaster.git
cd BuzzMaster/server-go
# Installer les dependances frontend
cd web && npm install && cd ..
# Build
./build-release.ps1 # Windows
./build-release.sh # Linux/macOS
# Les executables sont dans releases/- Aller sur l'onglet Questions
- Remplir le formulaire (titre, reponse, type, points, temps)
- Ajouter une image (optionnel)
- Cliquer Sauvegarder
- Aller sur l'onglet Equipes
- Les equipes sont pre-configurees (6 equipes par defaut)
- Glisser-deposer les joueurs dans les equipes
- Assigner les couleurs de reponse pour le mode QCM
- Aller sur l'onglet Jeu
- Selectionner une question (clic)
- Attendre que les buzzers soient prets (phase PREPARE)
- Cliquer START pour lancer le timer
- Un joueur buzze → le jeu se met en pause
- Cliquer sur le joueur pour attribuer les points
- Cliquer REPONSE pour reveler la reponse
- Ouvrir http://localhost/tv sur l'ecran de diffusion
- Passer en plein ecran (F11)
- L'affichage se synchronise automatiquement avec l'admin
┌─────────────────────────────────────────────────────────────┐
│ BUZZCONTROL SERVER │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ HTTP │ │WebSocket│ │ TCP │ │ UDP │ │
│ │ :80 │ │ /ws │ │ :1234 │ │ :1234 │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │
│ │ │ │ │ │
│ └────────────┴─────┬──────┴────────────┘ │
│ │ │
│ ┌─────┴─────┐ │
│ │ ENGINE │ │
│ │ (Game │ │
│ │ Logic) │ │
│ └───────────┘ │
└─────────────────────────────────────────────────────────────┘
│ │ │
▼ ▼ ▼
┌─────────┐ ┌──────────┐ ┌──────────┐
│ Browser │ │ Browser │ │ BuzzClick│
│ (Admin) │ │ (TV) │ │ (Buzzer) │
└─────────┘ └──────────┘ └──────────┘
| Composant | Technologie |
|---|---|
| Serveur | Go 1.21+ |
| Frontend | React 18 + Vite |
| Buzzers | ESP32-C3 + Arduino |
| Communication | WebSocket, TCP, UDP |
| Stockage | JSON (fichiers locaux) |
{
"version": "2.36.0",
"server": {
"http_port": 80,
"tcp_port": 1234
}
}| Port | Protocole | Usage |
|---|---|---|
| 80 | HTTP | Interface web |
| 80 | WebSocket | Communication temps reel |
| 1234 | TCP | Connexion buzzers |
| 1234 | UDP | Broadcast (START/STOP) |
| 53 | DNS | Portail captif (optionnel) |
| Document | Description |
|---|---|
| CLAUDE.md | Reference technique complete |
| CHANGELOG.md | Historique des versions |
| docs/ADMIN_GUIDE.md | Guide utilisateur |
| docs/DEV_PROCEDURE.md | Procedure de developpement |
| docs/QUALIF_PROCEDURE.md | Procedure de qualification |
| docs/RELEASE_PROCEDURE.md | Procedure de release |
| docs/TEST_PROCEDURE.md | Procedure de tests |
| docs/GAME_STATE_MACHINE.md | Machine d'etat du jeu |
buzzcontrol/
├── server-go/ # Serveur Go
│ ├── cmd/server/ # Point d'entree
│ ├── internal/ # Code metier
│ │ ├── game/ # Logique de jeu
│ │ ├── server/ # HTTP, WebSocket, TCP, UDP
│ │ └── protocol/ # Parsing messages
│ ├── web/ # Frontend React
│ └── data/ # Donnees runtime
├── src/ # Firmware (legacy ESP32)
│ ├── BuzzControl/ # Serveur ESP32-S3 (obsolete)
│ └── BuzzClick/ # Client buzzer ESP32-C3
├── docs/ # Documentation
└── CLAUDE.md # Reference technique
- Fork le depot
- Creer une branche (
git checkout -b feature/ma-fonctionnalite) - Suivre la procedure de developpement
- Commit (
git commit -m 'feat: Ma fonctionnalite') - Push (
git push origin feature/ma-fonctionnalite) - Creer une Pull Request
Projet prive - Tous droits reserves.
- Cyril Coupel - Developpeur principal
- Claude (Anthropic) - Assistant IA
Pour signaler un bug ou demander une fonctionnalite :
- Ouvrir une issue sur GitHub
- Contacter l'auteur directement