Système de surveillance Bluetooth permettant de connecter plusieurs modules ESP32 et d'afficher l'état de leurs GPIOs en temps réel sur une page web.
Application HTML5 de quiz temps réel pour plusieurs modules ESP32 via Bluetooth Low Energy (BLE)
## 📋 Fonctionnalités
## 📋 Description
- ✅ Connexion de plusieurs modules ESP32 via Bluetooth (Web Bluetooth API)
- ✅ Affichage en temps réel de l'état des GPIOs
- ✅ Interface web moderne et responsive
- ✅ Notifications visuelles lors des changements d'état
- ✅ Gestion automatique de la reconnexion
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.
## 🔧 Configuration
### ESP32 (src/main.cpp)
Par défaut, le code surveille 4 GPIOs : **15, 16, 17, 18**
Par défaut, le code surveille 4 GPIOs : **2, 4, 5, 6** (compatibles ESP32 Wrover et ESP32-C3)
Pour modifier les GPIOs surveillés, éditez cette ligne :
```cpp
const int GPIO_PINS[] = {15, 16, 17, 18}; // Modifier selon vos besoins
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) :
@ -35,39 +33,69 @@ Le système envoie une notification à la page HTML **quand un GPIO passe à l'
@@ -35,39 +33,69 @@ Le système envoie une notification à la page HTML **quand un GPIO passe à l'
## 🚀 Installation et utilisation
### 1. Compiler et téléverser sur ESP32
### 1. Prérequis
- **PlatformIO** installé (via VS Code ou CLI)
- **Python 3** (pour le serveur HTTPS)
- **Navigateur compatible** : Chrome, Edge ou Opera (Firefox et Safari ne supportent pas Web Bluetooth)
### 2. Configuration des ESP32
Le projet supporte deux environnements (voir `platformio.ini`) :
- Vous verrez un avertissement de sécurité (certificat auto-signé) → Cliquez sur "Avancé" puis "Continuer vers localhost"
- Firefox et Safari ne supportent pas encore Web Bluetooth
- Sur Linux, utilisez le script `start.sh` pour lancer Chrome avec les bons paramètres
### 3. Connecter les modules
### 5. Utiliser l'application
1. Cliquez sur **"Connecter un module"**
2. Sélectionnez votre ESP32 dans la liste
3. Les GPIOs s'affichent en temps réel
4. Répétez pour connecter plusieurs modules
1. **Charger un fichier de questions** : Cliquez sur "Choisir un fichier" et sélectionnez votre fichier de quiz (voir `quiz_exemple.txt`)
2. **Connecter les modules** : Cliquez sur "Connecter un module" et sélectionnez votre ESP32
3. **Lancer le quiz** : Naviguez entre les questions, les modules répondent en appuyant sur leurs boutons
4. **Répétez** pour connecter plusieurs modules simultanément
## 🌐 Pourquoi HTTPS est nécessaire ?
@ -96,47 +125,88 @@ Les serveurs fournis (`server.py` et `server.js`) génèrent automatiquement un
@@ -96,47 +125,88 @@ Les serveurs fournis (`server.py` et `server.js`) génèrent automatiquement un
## 🔌 Branchement des GPIOs
Pour tester, connectez vos GPIOs à la masse (GND) :
Pour tester, connectez vos boutons/switches entre les GPIOs et la masse (GND) :
```
ESP32 Bouton/Capteur
GPIO 15 ---- [Switch] ---- GND
GPIO 16 ---- [Switch] ---- GND
GPIO 17 ---- [Switch] ---- GND
GPIO 18 ---- [Switch] ---- GND
ESP32 Bouton/Switch
GPIO 2 ---- [Bouton A] ---- GND
GPIO 4 ---- [Bouton B] ---- GND
GPIO 5 ---- [Bouton C] ---- GND
GPIO 6 ---- [Bouton D] ---- GND
```
## 📊 Format des données
**Configuration** : Les GPIOs utilisent des résistances de pull-up internes, donc :