Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
|
projets:olo_220v:accueil [2020/03/12 16:59] laurent [Matériaux] |
projets:olo_220v:accueil [2020/05/26 08:50] (Version actuelle) resonance [Jeu] |
||
|---|---|---|---|
| Ligne 3: | Ligne 3: | ||
| * Date : 2020 | * Date : 2020 | ||
| * Licence : libre ! | * Licence : libre ! | ||
| - | * Contexte : | + | * Contexte : Invitation à Bergen by BEK : postponed for coronavirus... |
| * Fichiers : lien | * Fichiers : lien | ||
| * Lien : lien vers un site éventuellement | * Lien : lien vers un site éventuellement | ||
| Ligne 10: | Ligne 10: | ||
| {{tag> | {{tag> | ||
| ===== Description ===== | ===== Description ===== | ||
| - | + | {{ : | |
| - | {{ : | + | |
| Olo en version 220v.... | Olo en version 220v.... | ||
| ===== Jeu ===== | ===== Jeu ===== | ||
| + | |||
| Sur une interface representant les differentes lumieres. | Sur une interface representant les differentes lumieres. | ||
| On peut enregistrer une sequence en appuyant sur des boutons (ou interface photoresitance) | On peut enregistrer une sequence en appuyant sur des boutons (ou interface photoresitance) | ||
| - | | + | |
| - | * Si une deuxieme sequence de 3s est ajouté , elle s' | + | |
| - | * etc... | + | * Si une deuxieme sequence de 3s est ajouté , elle s' |
| Ligne 30: | Ligne 31: | ||
| * douille E27 + ampoule halogene | * douille E27 + ampoule halogene | ||
| * prise 220v male | * prise 220v male | ||
| + | * potentiomètre (1€) | ||
| * jumpers divers | * jumpers divers | ||
| * fils electriques 220v 0.75 (2€) | * fils electriques 220v 0.75 (2€) | ||
| Ligne 41: | Ligne 43: | ||
| Ca clignote un peu quand on est pres du zero... il faut plutot se ballader entre 5% et 100% pour eviter ces clignotements... | Ca clignote un peu quand on est pres du zero... il faut plutot se ballader entre 5% et 100% pour eviter ces clignotements... | ||
| - | ===== Code source | + | ===== Fonctionnement |
| - | Code pour esp8266 avec les libs : | + | Le code source est consultable sur le [[https:// |
| - | [[https:// | + | |
| + | ==== ESP8266 ==== | ||
| + | ===câblage=== | ||
| + | Les ESP8266 sont alimentés en 5v via un petit convertisseur 230VAC -> 5VDC dédié. Ils alimentent à leur tour un [[ https:// | ||
| + | ^ ESP8266 ^ dimmer ^ Potentiomètre | ||
| + | | G | GND | patte externe | ||
| + | | 5v | | | +v | | ||
| + | | 3v3 | VCC | patte externe | ||
| + | | A0 | | patte centrale | | | ||
| + | | D1 | PWM | | | | ||
| + | | D2 | ZC | ||
| + | |||
| + | === réseau === | ||
| + | Les ESP8266 se connectent sur un routeur dédié dont le SSID et éventuellement mot de passe est défini dans le code : | ||
| + | <code cpp> | ||
| + | static char* PSK = NULL; | ||
| + | static char* SSID = " | ||
| + | </ | ||
| + | Un //nom d' | ||
| + | <code cpp># | ||
| + | Dès leur connexion au réseau, ils se présenterons en donnant leur nom d' | ||
| + | Si nécessaire, | ||
| + | <==== Interface web ==== | ||
| + | Un Raspberry Pi est utilisé pour servir une interface web via un script python3 utilisant //flask// et // | ||
| + | La déclaration des ESP8266 attendus se fait dans le fichier **config.py** où il est possible d' | ||
| + | |||
| + | La génération de son côté client se fait par la librairie [[https:// | ||
| + | <code javascript> | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | }).toMaster();</ | ||
| + | Les notes utilisées pour chaque fenêtre sont réglable dans le fichier **config.py** : | ||
| + | <code python> | ||
| + | startOctave = 3 # lowest octave to be played | ||
| + | playNotesOnUI = True # play sounds corresponding to lights on the UI when sequences are played</ | ||
| + | * //notes// contient la liste des notes jouées (dans l' | ||
| + | * // | ||
| + | * // | ||
| + | <WRAP center round important 60%> | ||
| + | Il est totalement impossible de garantir une lecture synchrone de ces sons avec les lumières sur le téléphone de chaque participant connecté. | ||
| + | |||
| + | Le tout peut devenir très vite cacophonique. | ||
| + | </ | ||
| + | L' | ||
| + | |||
| + | ==== lecture des séquences ==== | ||
| + | Chaque séquence est lue en boucle, atténuée à chaque itération. L' | ||
| + | |||
| + | ==== communication lampes/ | ||
| + | Serveur et lampes communiquent en OSC par UDP, le serveur écoute sur le **port 9000** et transmet sur le **port 8000** (donc l' | ||
| + | |||
| + | Liste des messages OSC implémentés : | ||
| + | * **/light** : fixe l' | ||
| + | * //(int) valeur// en pourcent | ||
| + | * ex : /// | ||
| + | * **/ACK** : réponse de l'ESP à ///light//, ce message permet au serveur de vérifier qu'un ordre a bien été reçu par la lampe | ||
| + | * //(int) valeur// en pourcent | ||
| + | * **/fade** : débute un fondu qui s' | ||
| + | * //(int) start// : valeur de début du fondu | ||
| + | * //(int) stop// : valeur attendue en fin de fondu. | ||
| + | * //(int) durée// : durée du fondu en millisecondes. | ||
| + | * ex : /// | ||
| + | * ex2 : /// | ||
| + | * **/ | ||
| + | * //(int) start// : valeur de début du fondu | ||
| + | * //(int) stop// : valeur attendue en fin de fondu. | ||
| + | * //(int) durée// : durée du fondu en millisecondes. | ||
| + | * **/ | ||
| + | * **/myID** : répond au serveur qui enregistrera l'IP de la réponse | ||
| + | * //(str) hostname// nom d' | ||
| + | * **/ | ||
| - | Les ESP se connectent sur le routeur malinette (xiaomi) et attendent de recevoir en OSC | ||
| - | / | ||
| - | Ils répondent /ACK avec en premier argument leur nom d' | ||
| - | Par défaut les ESP envoient en broadcast, sauf s'il reçoivent l'OSC "/ | ||
| + | ==== communication serveur/ | ||
| + | Pour créer un portail captif, on utilise un routeur flashé sous [[https:// | ||
| + | Côté Pi, la communication serveur/ | ||
| ===== Idées design | ===== Idées design | ||
| Idée design tasseau + conserve.. :{{ : | Idée design tasseau + conserve.. :{{ : | ||