Application HTML5 de quiz temps réel pour plusieurs modules ESP32 via Bluetooth Low Energy (BLE)
Application HTML5 de quiz temps réel pour plusieurs modules ESP32-S3 via Bluetooth Low Energy (BLE)
## 📋 Description
BleQuiz permet de créer un système de quiz interactif en temps réel où plusieurs ESP32 peuvent être connectés simultanément via Bluetooth. Chaque module ESP32 surveille des GPIOs (boutons) et envoie instantanément les événements à une interface web HTML5.
**Cas d'usage :**
Quiz en classe, jeux de rapidité, systèmes de vote, buzzers interactifs.
BleQuiz permet de créer un système de quiz interactif en temps réel où plusieurs ESP32-S3 peuvent être connectés simultanément via Bluetooth. Chaque module ESP32-S3 surveille des GPIOs (boutons) et envoie instantanément les événements à une interface web HTML5.
**Adresse de test :**
[https://blequiz.apps.christophe-scaya.fr/](https://blequiz.apps.christophe-scaya.fr/) (serveur de démonstration, utiliser le fichier `quiz_exemple.txt`)
@ -16,24 +13,57 @@ Quiz en classe, jeux de rapidité, systèmes de vote, buzzers interactifs.
@@ -16,24 +13,57 @@ Quiz en classe, jeux de rapidité, systèmes de vote, buzzers interactifs.
### ESP32 (src/main.cpp)
Par défaut, le code surveille 4 GPIOs : **2, 4, 5, 6**(compatibles ESP32 Wrover et ESP32-C3)
Par défaut, le code surveille 4 GPIOs : **2, 4, 5, 6**d'un module ESP32-S3 supermini générique.
Pour modifier les GPIOs surveillés, éditez cette ligne :
```cpp
const int GPIO_PINS[] = {2, 4, 5, 6}; // GPIOs à surveiller (A, B, C, D)
```
Pour changer le nom du module (important pour différencier plusieurs ESP32) :
```cpp
String moduleName = "ESP32-Module-1"; // Changer pour chaque ESP32
```
### LED WS2812 (ESP32-S3)
Le projet supporte une LED WS2812 sur le **GPIO 48** (ESP32-S3) pour indiquer l'état du module :
**États de la LED** :
- ⚪ **Blanc clignotant** (500ms) → Déconnecté de la page web
- ⚪ **Blanc fixe** → Connecté, en attente de réponse ou affichage des scores
Le système envoie une notification à la page HTML **quand un GPIO passe à l'état BAS**.
## 🚀 Installation et utilisation
@ -45,32 +75,16 @@ Le système envoie une notification à la page HTML **quand un GPIO passe à l'
@@ -45,32 +75,16 @@ Le système envoie une notification à la page HTML **quand un GPIO passe à l'
### 2. Configuration des ESP32
Le projet supporte deux environnements (voir `platformio.ini`) :
@ -252,12 +249,12 @@ Créez un fichier texte avec ce format (voir `quiz_exemple.txt`) :
@@ -252,12 +249,12 @@ Créez un fichier texte avec ce format (voir `quiz_exemple.txt`) :
## 🐛 Dépannage
### L'ESP32 n'apparaît pas dans la liste Bluetooth
### L'ESP32-S3 n'apparaît pas dans la liste Bluetooth
- Vérifiez que le module est alimenté correctement (USB ou externe 5V)
- Consultez le moniteur série : `pio device monitor` pour voir les messages de démarrage
- Assurez-vous que le Bluetooth est activé sur votre ordinateur
- Sur Linux, vérifiez que BlueZ est à jour : `bluetoothctl --version`
- Redémarrez l'ESP32 (bouton RESET ou débrancher/rebrancher)
- Redémarrez l'ESP32-S3 (bouton RESET ou débrancher/rebrancher)
### Pas de données reçues dans l'interface web
- Vérifiez que les UUID correspondent dans `src/main.cpp` et `index.html`
@ -266,8 +263,8 @@ Créez un fichier texte avec ce format (voir `quiz_exemple.txt`) :
@@ -266,8 +263,8 @@ Créez un fichier texte avec ce format (voir `quiz_exemple.txt`) :
- Vérifiez que le module est bien connecté (voyant dans l'interface)
### Déconnexions fréquentes
- Réduisez la distance entre l'ESP32 et l'ordinateur (<5mètres)
- Assurez-vous que l'alimentation de l'ESP32 est stable (câble USB de qualité)
- Réduisez la distance entre l'ESP32-S3 et l'ordinateur (<5mètres)
- Assurez-vous que l'alimentation de l'ESP32-S3 est stable (câble USB de qualité)
- Évitez les interférences (WiFi 2.4GHz, micro-ondes)
- Augmentez le délai dans la boucle principale si trop de données sont envoyées
@ -285,21 +282,28 @@ Créez un fichier texte avec ce format (voir `quiz_exemple.txt`) :
@@ -285,21 +282,28 @@ Créez un fichier texte avec ce format (voir `quiz_exemple.txt`) :
@ -316,17 +320,6 @@ pio run -e esp32dev --target upload
@@ -316,17 +320,6 @@ pio run -e esp32dev --target upload
# - Commencer le quiz !
```
## 🔐 Sécurité
Le projet est conçu pour un usage éducatif et de démonstration. Pour un usage en production :
- **Authentification BLE** : Implémenter un système de pairing sécurisé
- **Chiffrement des données** : Activer le chiffrement des caractéristiques BLE
- **Certificat SSL valide** : Remplacer le certificat auto-signé par un certificat CA
- **Validation côté serveur** : Ajouter une validation des réponses côté serveur
- **Limitation de connexions** : Implémenter une limite et un contrôle d'accès
- **Logs d'audit** : Enregistrer les actions pour le suivi et la sécurité
## 📚 Ressources
- [Web Bluetooth API Documentation](https://developer.mozilla.org/en-US/docs/Web/API/Web_Bluetooth_API)
@ -337,15 +330,3 @@ Le projet est conçu pour un usage éducatif et de démonstration. Pour un usage
@@ -337,15 +330,3 @@ Le projet est conçu pour un usage éducatif et de démonstration. Pour un usage
## 📄 Licence
Ce projet est open source. Libre d'utilisation, modification et distribution.
## 👥 Contribution
Les contributions sont les bienvenues ! N'hésitez pas à :
- Signaler des bugs
- Proposer de nouvelles fonctionnalités
- Améliorer la documentation
- Soumettre des pull requests
---
**Créé avec ❤️ pour l'éducation et l'apprentissage interactif**