diff --git a/README.md b/README.md index 555a15e..0948f27 100644 --- a/README.md +++ b/README.md @@ -4,16 +4,27 @@ Application HTML5 de quiz temps rĂ©el pour plusieurs modules ESP32-S3 via Blueto ## đ Description -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. +BleQuiz permet de crĂ©er un systĂšme de quiz interactif en temps rĂ©el oĂč jusqu'Ă 8 modules ESP32-S3 peuvent ĂȘtre connectĂ©s simultanĂ©ment via Bluetooth. Chaque module surveille 4 boutons (GPIOs) et envoie instantanĂ©ment les Ă©vĂ©nements Ă une interface web HTML5 avec feedback visuel LED. + +**Cas d'usage** : Quiz en classe, jeux de rapiditĂ©, systĂšmes de vote, buzzers interactifs multi-joueurs. **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`) +## âš FonctionnalitĂ©s principales + +- đź **Identification automatique** : 8 modules nommĂ©s automatiquement via jumpers (BleQuiz-1 Ă BleQuiz-8) +- đ **Appairage sĂ©curisĂ©** : Code PIN 123456, mĂ©morisation pour reconnexion automatique +- đĄ **LED RGB intĂ©grĂ©e** : Feedback visuel couleur selon la rĂ©ponse (Rouge/Vert/Bleu/Jaune) +- đ± **Multi-plateforme** : Compatible Android, iOS, Linux, Windows (Chrome/Edge) +- đ **Interface web moderne** : Support des formules chimiques (indices/exposants) +- ⥠**Temps rĂ©el** : DĂ©tection instantanĂ©e du premier Ă rĂ©pondre + ## đ§ Configuration -### ESP32 (src/main.cpp) +### ESP32-S3 (src/main.cpp) -Par dĂ©faut, le code surveille 4 GPIOs : **2, 4, 5, 6** d'un module ESP32-S3 supermini gĂ©nĂ©rique. +Par dĂ©faut, le code surveille 4 GPIOs : **2, 4, 5, 6** (compatibles ESP32-S3 Supermini) Pour modifier les GPIOs surveillĂ©s, Ă©ditez cette ligne : ```cpp @@ -64,27 +75,40 @@ Chaque module ESP32-S3 peut ĂȘtre identifiĂ© automatiquement via 3 GPIOs configu | LOW | LOW | HIGH | 110 | **BleQuiz-7** | | LOW | LOW | LOW | 111 | **BleQuiz-8** | +**Avantage** : Plus besoin de modifier le code pour chaque module, il suffit de configurer les jumpers ! + +### Appairage Bluetooth sĂ©curisĂ© + +Le systĂšme utilise un appairage sĂ©curisĂ© avec code PIN pour une meilleure compatibilitĂ© : + +- **Code PIN fixe** : **123456** (affichĂ© au dĂ©marrage dans le moniteur sĂ©rie) +- **Premier appairage** : Entrez 123456 sur votre appareil +- **Appairages suivants** : Reconnexion automatique sans code +- **CompatibilitĂ©** : â Android | â iOS | â Linux | â Windows ## đ Installation et utilisation ### 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) +- **PlatformIO** (VS Code ou CLI) +- **ESP32-S3** (Seeed XIAO ESP32-S3 ou compatible) +- **Python 3** (serveur HTTPS) +- **Navigateur** : Chrome, Edge ou Opera -### 2. Configuration des ESP32 +### 2. Compilation et tĂ©lĂ©versement -**Compiler et tĂ©lĂ©verser pour ESP32-S3** : +**Compiler et tĂ©lĂ©verser** : ```bash -pio run -e esp32-s3-supermini pio run -e esp32-s3-supermini --target upload ``` -**Monitorer le port sĂ©rie** (optionnel) : + +**Monitorer le port sĂ©rie** (voir code PIN 123456) : ```bash pio device monitor ``` +â ïž **Important** : Notez le code PIN **123456** affichĂ© au dĂ©marrage pour le premier appairage. + ### 3. DĂ©marrer le serveur HTTPS â ïž **Important** : Web Bluetooth nĂ©cessite HTTPS (ou localhost en HTTP) @@ -128,9 +152,17 @@ https://localhost:8443 ### 5. Utiliser l'application 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-S3 dans la liste Bluetooth -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 +2. **Connecter les modules** : Cliquez sur "Connecter un module" et sĂ©lectionnez votre ESP32 +3. **Premier appairage** : Entrez le code **123456** quand demandĂ© (Android/iOS) +4. **Appairages suivants** : La connexion se fait automatiquement sans code +5. **Lancer le quiz** : Naviguez entre les questions, les modules rĂ©pondent en appuyant sur leurs boutons +6. **RĂ©pĂ©tez** pour connecter plusieurs modules simultanĂ©ment + +**Note sur l'appairage** : +- **PremiĂšre connexion** : Le systĂšme demande un code PIN (**123456**) +- **Connexions suivantes** : L'appairage est mĂ©morisĂ©, reconnexion automatique +- **Android/iOS** : L'appairage sĂ©curisĂ© amĂ©liore grandement la compatibilitĂ© +- **Ubuntu/Linux** : Fonctionne avec ou sans appairage ## đ Pourquoi HTTPS est nĂ©cessaire ? @@ -249,28 +281,28 @@ CrĂ©ez un fichier texte avec ce format (voir `quiz_exemple.txt`) : ## đ DĂ©pannage -### 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-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` -- Consultez la console JavaScript (F12) pour voir les erreurs -- Testez en connectant un GPIO Ă GND avec un simple fil -- VĂ©rifiez que le module est bien connectĂ© (voyant dans l'interface) - -### DĂ©connexions frĂ©quentes -- RĂ©duisez la distance entre l'ESP32-S3 et l'ordinateur (< 5 mĂš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 +### ProblĂšmes d'appairage Bluetooth + +**Android ne veut pas appairer** : +- Assurez-vous d'entrer le code PIN **123456** quand demandĂ© +- Effacez les appairages Bluetooth prĂ©cĂ©dents dans les paramĂštres Android +- RĂ©initialisez l'ESP32 et rĂ©essayez + +**iOS ne voit pas le module** : +- VĂ©rifiez que le Bluetooth est activĂ© dans les rĂ©glages iOS +- Le module doit ĂȘtre alimentĂ© et le moniteur sĂ©rie doit afficher "Advertising BLE dĂ©marrĂ©" +- iOS peut mettre quelques secondes avant de dĂ©couvrir les pĂ©riphĂ©riques BLE +- Entrez le code **123456** lors du premier appairage + +**Le module n'apparaĂźt pas dans la liste Bluetooth** : +- VĂ©rifiez l'alimentation USB (5V stable) +- Consultez `pio device monitor` pour voir "Code d'appairage : 123456" +- RedĂ©marrez l'ESP32 (bouton RESET) +- Sur Linux, vĂ©rifiez BlueZ : `bluetoothctl --version` ### Erreur "HTTPS required" ou "Bluetooth API not available" -- VĂ©rifiez que vous accĂ©dez bien Ă `https://localhost:8443` (pas `http://`) -- Utilisez Chrome, Edge ou Opera (pas Firefox ni Safari) +- AccĂ©dez Ă `https://localhost:8443` (pas http://) +- Navigateurs supportĂ©s : Chrome, Edge, Opera uniquement - Sur Linux, utilisez le script `./start.sh` pour les bons paramĂštres Chrome ### Erreur de compilation PlatformIO @@ -295,7 +327,8 @@ CrĂ©ez un fichier texte avec ce format (voir `quiz_exemple.txt`) : ## đŻ Notes d'utilisation - **Identification automatique** : Les modules se nomment automatiquement BleQuiz-1 Ă BleQuiz-8 selon les GPIOs 8, 9, 10 -- **SĂ©curitĂ© BLE** : Le code utilise un mode sans bonding (pas de mĂ©morisation d'appairage) +- **Appairage BLE** : Code PIN fixe **123456** pour le premier appairage, puis reconnexion automatique +- **CompatibilitĂ©** : Appairage sĂ©curisĂ© (bonding) pour Android/iOS, fonctionne aussi sur Ubuntu/Linux - **Web Bluetooth** : La page HTML doit obligatoirement ĂȘtre servie en HTTPS ou via localhost - **DĂ©tection de changement** : Les Ă©vĂ©nements GPIO sont envoyĂ©s instantanĂ©ment lors des transitions HIGHâLOW - **Mode Pull-up** : Les boutons doivent connecter le GPIO Ă GND (pas Ă VCC) @@ -329,4 +362,4 @@ pio run -e esp32dev --target upload ## đ Licence -Ce projet est open source. Libre d'utilisation, modification et distribution. +Ce projet est open source. Libre d'utilisation, modification et distribution. \ No newline at end of file diff --git a/html/index.html b/html/index.html index d5a293b..8bad50b 100644 --- a/html/index.html +++ b/html/index.html @@ -178,6 +178,23 @@ margin-right: 15px; } + .answer-letter.letter-a { + background: #f44336; + } + + .answer-letter.letter-b { + background: #4CAF50; + } + + .answer-letter.letter-c { + background: #2196F3; + } + + .answer-letter.letter-d { + background: #FFEB3B; + color: #333; + } + .answer-content { display: flex; align-items: center; @@ -1031,7 +1048,7 @@ answerDiv.innerHTML = `