User Tools

Site Tools


documentation_theta_fantomes

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
documentation_theta_fantomes [2016/10/04 16:06] – [Wifi] romaindocumentation_theta_fantomes [2017/07/18 17:50] (current) – [Plateformes] romain
Line 1: Line 1:
 +====== Documentation Thêta Fantômes ======
 +---
 +===== L'installation =====
 +
 +==== Mise en place, démarrage et control des plateformes ====
 +
 +
 +Le schéma :
 +
 +
 +{{:bwcartoon2.jpg?200|}}
 +
 +  - Brancher le routeur wifi.
 +  - Attendre que le voyant wifi soit allumé.
 +  - Connecter les ordi sur le réseau theta (mtpa: !!!fant0m3s!!!)
 +  - Lancer puredata et ouvrir le patch MAINTOLAUCH dans répétroire PatchTheta
 +  - appuyer 6 secondes sur le bouton de démarrage du casque eeg - led clignote
 +  - mettre le casque eeg sur son front
 +  - cliquer icône bluetooth
 +  - cliquer sur search
 +  - clique droit sur le casque Muse et cliquer sur pair
 +  - ouvrir terminal et rentrer la commande : muse-io --device NUM_DEVICE (numéro du device bluetooth / casque eeg sélectionné)
 +  - ouvrir un autre terminal et rentrer la commande : muse-player -l 5000 -s 7111
 +  - Brancher les batteries sur les circuits jaune des plateformes (PAS SUR LA BLEUE, RISQUE DE DESTRUCTION).
 +  - La plateforme devrait faire un bruit strident, elle est en marche.
 +  - Start Aleatoire plateforme (test réponse plateforme / seulement pour test ou en cas de probléme)
 +  - Ouvrir sous-patch OSC send -> pd envoie plateforme (patch main)
 +  - Cliquer sur connection + IP + port dans le patch pure data -> la plateforme devrait se mettre à bouger)
 +  - Brancher le module de contrôle des lasers.
 +  - 
 +
 +
 +*au 09/09/16 : pas de capteurs obstacles fonctionnels donc test avec un stop=barre d'espace
 +
 +==== connection du casque EEG/Muse (détails) ====
 +
 +bluetooth & muse, documentation détaillé ici :
 +http://apo33.org/apotek/doku.php?id=casque_muse_-_connection_eeg#appairer_le_casque_muse
 +
 +  -connection automatique via muse-player (lancement terminal)
 +  -voir chiffre en mouvement dans OSC receive 
 +
 +==== Troubleshooting ====
 +
 +//"La plateforme fait un bruit étrange et ne roule pas correctement, voir vibre."//
 +
 +  * La batterie est probablement vide, il faut la recharger ou en utiliser une autre pleine.
 +
 +//"La plateforme ne roule pas correctement, les moteurs ne forcent pas ou forcent peu lors de la mise sous tension et ne font pas de bruit, voir vibrent."//
 +
 +  * Les drivers n'envoient peut-être pas assez de courant aux moteurs. Il faut donc tourner chaque potentiomètre des drivers avec UN TOURNE VIS CÉRAMIQUE jusqu'à ce qu'ils fassent un bruit et que les moteurs soient bloqués.
 +
 +//"Un moteur ne fonctionne pas du tout, n'est pas bloqué, et même en tournant le potentiomètre du driver cela n'a aucun effet."//
 +
 +  * Le driver est probablement grillé. Il faut tester avec un nouveau driver.
 +
 +//"La plateforme est sous tension, fait du bruit mais n'avance pas lorsque l'ordinateur lui envoie une information."//
 +
 +  * Vous avez surement branché les plateformes trop tôt après avoir branché le routeur wifi, attendez que le voyant WIFI de celui-ci s'allume pour débranchez et rebranchez la plateforme.
 +
 +//"Le module de contrôle des lasers est sous tension mais les lasers ne bougent pas lorsque l'ordinateur lui envoie une information."//
 +
 +  * Vous avez surement branché le module trop tôt après avoir branché le routeur wifi, attendez que le voyant WIFI de celui-ci s'allume pour débrancher et rebrancher le module de contrôle des lasers.
 +
 +===== Technique =====
 +
 +À [[https://github.com/jottavi/thetafantomes|cette adresse]], vous trouverez le dossier contenant :
 +
 +  * le code
 +  * les librairies
 +  * les pièces 3D
 +  * les circuits imprimés
 +  * les drivers
 +
 +==== Wifi ====
 +
 +=== Network ===
 +
 +Voici les IP et les ports sur lesquels les dispositifs fonctionnent :
 +
 +^Dispositifs                  ^IP             ^PORT^Envoi / Réception                        ^
 +|Master Machine               |192.168.168.100|7110|Envoi > Broadcast                        |
 +|Laptop Player 1              |192.168.168.101|7110|Envoi > Broadcast                        |
 +|Laptop Player 2              |192.168.168.102|7110|Envoi > Broadcast                        |
 +|Laptop Player 3              |192.168.168.103|7110|Envoi > Broadcast                        |
 +|Laptop Player 4              |192.168.168.104|7110|Envoi > Broadcast                        |
 +|Lasers                       |192.168.168.200|7110|Réception > 192.168.168.101-102-103-104  |
 +|Plateforme Player 1 (Alpha)  |192.168.168.201|7110|Réception > 192.168.168.101              |
 +|Plateforme Player 2 (Bravo)  |192.168.168.202|7110|Réception > 192.168.168.102              |
 +|Plateforme Player 3 (Charlie)|192.168.168.203|7110|Réception > 192.168.168.103              |
 +|Plateforme Player 4 (Tango)  |192.168.168.204|7110|Réception > 192.168.168.104              |
 +
 +Le module de contrôle des lasers écoute sur toutes les IPs des ordinateurs des joueurs et actionne le laser correspondant au joueur attribué.
 +
 +Les messages OSC peuvent être envoyés jusqu'à 10 millisecondes sur les lasers, pas moins. Peut-être plus pour les plateformes.
 +
 +Voici les messages OSC réceptionnés par les dispositifs (plateformes et lasers) :
 +
 +^Plateformes||
 +^Route    ^Valeurs         ^Effet
 +|/speed   |-10000 => 10000 |Vitesse
 +|/angle   |-180 => 180     |Rotation
 +
 +^Lasers||
 +^Route   ^Valeurs                        ^Effet
 +|/x      |0 => 127                       |Position X
 +|/y      |0 => 127                       |Position Y
 +|/blink  |0 => 171 (0 = OFF / 171 = ON)  |Clignotement
 +
 +=== Programmation ===
 +
 +{{:wifi_new.jpg?direct&300|}}
 +
 +Le module wifi utilisé (ESP8266) contient un petit microcontrôleur programmable et une puce wifi.\\
 +Aussi, pour une meilleur gestion des messages OSC, le module a dû être reprogrammé à partir de l'IDE arduino, en y installant une librairie de gestion du protocole OSC.\\
 +Vous trouverez la documentation de cette librairie à [[https://github.com/CNMAT/OSC|cet endroit]], et le reste des fonctions se trouvent[[http://cnmat.berkeley.edu/library/oscuino/|ici]].\\
 +La version utilisée est adaptée pour l'ESP8266, vous la trouverez dans le dossier du projet et à [[https://github.com/sandeepmistry/esp8266-OSC|cette adresse]].\\
 +Vous pouvez toujours remettre le firmware d'origine, disponible sur le site d'espressif.
 +
 +Le module MOD-WIFI-ESP8266 de chez Olimex est un mauvais choix de version de module, nécessitant une soudure pour pouvoir le reprogrammer (voir image ci-dessous). En revanche, d'autres modules sont excellents, comme le NodeMcu Lua ESP8266, utilisable plus facilement en standalone, sans arduino, mais sur lequel il est difficile d'ajouter un shield.\\
 +
 +{{:wifi_old.jpg?direct&300|}}
 +
 +Il est nécessaire d'installer des outils pour pouvoir flasher ces modules avec un nouveau code.
 +
 +== Installation des outils de programmation dans l'IDE arduino ==
 +
 +Pour commencer à programmer les ESP8266, vous aurez besoin d'installer les librairies relatives à ce module :
 +
 +  * Lancez arduino.
 +  * Aller dans //Arduino > Préférences//.
 +  * Sur cette fenêtre, entrez l'url http://arduino.esp8266.com/stable/package_esp8266com_index.json dans le champs //"URL de gestionnaire de cartes supplémentaires"// (Image ci-dessous).
 +
 +{{:pref-arduino-esp8266.png?direct&300|}}
 +
 +  * Cliquez sur OK.
 +  * Allez dans //Outils > Type de carte > Gestionnaire de carte//.
 +  * Dans cette fenêtre, recherchez //"esp8266"// et installez la librairie correspondante (voir ci-dessous).
 +
 +{{:board-arduino-esp8266.png?direct&300|}}
 +
 +== Installation du programmeur de l'ESP8266 ==
 +
 +Pour programmer ce module, nous allons avoir besoin de ce programmeur (voir image), plus simple à utiliser, basé sur la puce CH340.
 +
 +{{:programmer.jpg?direct&300|}}
 +
 +Les drivers pour cette puce et les instructions d'installation sont présents à [[http://sparks.gogo.co.nz/ch340.html|cette page]].\\
 +Vous les retrouverez dans le dossier du projet, disponible sur github. Sur linux, il n'est peut-être pas nécessaire de les installer.
 +
 +== Uploader un sketch sur l'ESP8266 ==
 +
 +Une fois ces étapes réalisées, vous devez sélectionner certains paramètres afin de programmer le module.
 +
 +  * Dans Arduino, allez dans //Outils > Type de Carte// et choisissez //"Generic ESP8266 Module"//.
 +
 +{{:carte-arduino-esp8266.png?direct&300|}}
 +
 +  * Ensuite, lorsque le programmeur est branché, allez dans //Outils > Port// et choisissez //"/dev/cu.wchusbserial410"//.
 +
 +{{:port-arduino-esp8266.png?direct&300|}}
 +
 +  * Vous pouvez uploader le code.
 +
 +
 +En cas de soucis (ex : port Com grisé/impssible de téléverser le code), effectuer la commande suivante :
 +
 +<code>sudo usermod -a -G tty Nom_Utilisateur</code>
 +<code>sudo usermod -a -G dialout Nom_Utilisateur</code>
 +
 +==== Lasers ====
 +
 +=== mise en route ===
 +
 +au 09 oct :
 +
 +brancher les lasers :
 +
 +a-laser1 directe en sortie du shield dmx arduino (function 001)
 +
 +b-laser2 en output du 1er avec cable xlr (function 006)
 +
 +
 +__si déréglage :__
 +
 +reset = func jusqu'à 7 puis enter
 +
 +a-laser1 - choisir function 001 et enter puis function S 5 et enter
 +
 +b-laser2 - choisir function 006 et enter puis funtion s 5 et enter
 +
 +
 +puis dans puredata / patch thêta
 +
 +
 +
 +
 +=== partie pré-programmation (à réecrire) ===
 +
 +Le code des lasers est très simple et met en oeuvre une Arduino Uno, un module wifi ESP8266 et un Tinkerkit Dmx Master Shield.\\
 +Comme pour les plateformes, le module wifi relaie l'information osc vers l'arduino uno qui pilote les lasers via le shield DMX.
 +
 +{{:dmx-shield.jpg?direct&300|}}
 +
 +En revanche, le shield DMX comprend des embases XLR femelles 5 broches non compatibles avec les câbles XLR 3 broches couramment utilisés.\\
 +Voici un schéma de montage pour construire un adaptateur XLR 5 broches vers XLR 3 broches afin de rendre ces câbles compatibles avec le shield.
 +
 +{{:dmx-5-to-3_.jpg?direct&300|}}
 +
 +Le shield est pilotable par la librairie DmxSimple, disponible dans le dossier du projet et utilise la broche digital 3 de l'arduino UNO pour envoyer les commandes DMX.
 +
 +Ces librairies se trouvent dans le dossier du projet. Vous trouverez la page de DmxSimple à [[https://github.com/PaulStoffregen/DmxSimple|cette adresse]].\\
 +Pour installer une librairie arduino sur votre IDE, suivez [[https://www.arduino.cc/en/Guide/Libraries|ce lien]].
 +
 +==== Plateformes ====
 +
 +{{:schema_plateform.png?direct&300|}}
 +
 +Schéma réalisé avec Fritzing.
 +
 +=== Uploader le bon player ===
 +
 +__**Dans le fichier _init.h du code des plateformes, vous trouverez dans les premières lignes une macro appelée "PLAYER_ID".\\
 +En changeant cette ID par 1, 2, 3 ou 4, on change aussi le player contrôlant la plateforme.**__
 +
 +Chaque module Wifi correspond à une plateforme, dans le sens ou leur adresse MAC est fixée sur le routeur.
 +
 +=== Moteurs & Drivers ===
 +
 +{{:drv8825.png?direct&300|}}
 +{{:pololu.png?direct&300|}}
 +
 +Les branchements du schéma ont été trouvés à [[http://wiki.mchobby.be/index.php?title=A4988|cette adresse]].
 +
 +On trouve différents types de circuits compatibles avec les shields des plateformes, triés ci-dessous par efficacité :
 +
 +  - [[https://www.reprap-france.com/produit/407-pilote-de-moteur-pas-a-pas-cooldrv8825|COOLDRV8825]] => Le meilleur, extrêmement puissant
 +  - DRV8825
 +  - Pololu A4988 Black Edition
 +  - Pololu A4988
 +  - copies chinoises, à éviter, fonctionnent très mal
 +
 +__**/!\ ATTENTION, LES DRV8825 SE BRANCHE DANS LE SENS INVERSE DES POLOLU A4988, voir images ci-dessous /!\**__
 +
 +Une fois la plateforme sous tension, on doit tourner le potentiomètre sur le pololu pour augmenter l'ampérage de sortie et donc la puissance des moteurs. Il faut essayer de bouger la plateforme pour vérifier le niveau d'ampérage utilisé.\\
 +Cette manipulation doit s'effectuer avec un tourne vis en céramique pour ne pas abîmer les drivers (un tourne-vis en métal conduit le courant).
 +
 +{{:drivers-tourne-vis.jpg?direct&200|}}
 +{{:tourne-vis.png?direct&200|}}
 +
 +Les moteurs utilisés sont des moteurs pas à pas de type NEMA 17 (pour la taille) et les références pécises sont celles-ci :
 +
 +
 +
 +    Personnalisé: Oui
 +    Couple de Possession: 2.6kg.cm
 +    Type: Hybride
 +    Nom de la marque: jkongmotor
 +    Phase: 2
 +    Courant/ Phase: 1.7A
 +    Certification: CE,Iso,ROHS
 +    Angle d'Etape (degrés): 1.8 °
 +    Numéro du modèle: 42HS40-1704
 +    Motor Length: 40mm
 +    No of leading wire: 4
 +    
 +
 +
 +Les moteurs sont contrôlés par les drivers sur 6 ports digitaux :
 +
 +  * ENABLE : Active le pololu et le bloquage du moteur lorsque la broche est en LOW (logique inversée).
 +  * STEP : En passant cette branche sur HIGH puis sur LOW (avec un delai), le moteur fait un pas.
 +  * DIR : Sélectionne le sens de rotation du moteur (ex: LOW -> avance, HIGH -> recule).
 +  * MS1, MS2, MS3 : Définissent la précision du pas (1/4, 1/8, 1/16, voir 1/32 pour les DRV8825).
 +
 +Nous avons choisi de mettre la précision sur 1/32 de pas (avec un DRV8825) pour que le moteur fasse moins de bruit et que le mouvement soit plus linéaire. Cette précision est modifiable en changeant les signaux entrants sur les ports MS1, MS2 et MS3 des drivers comme ceci (pour un DRV8825) :
 +
 +^MS1 ^MS2 ^MS3 ^Resolution du Micro-pas           ^
 +| LOW   | LOW   | LOW   |Pas de microstepping (full step)  |
 +| HIGH  | LOW   | LOW   |Demi-pas (half step)              |
 +| LOW   | HIGH  | LOW   |1/4 pas                           |
 +| HIGH  | HIGH  | LOW   |1/8 pas                           |
 +| LOW   | LOW   | HIGH  |1/16 pas                          |
 +| HIGH  | LOW   | HIGH  |1/32 pas                          |
 +| LOW   | HIGH  | HIGH  |1/32 pas                          |
 +| HIGH  | HIGH  | HIGH  |1/32 pas                          |
 +
 +À chaque fois que le signal sur la broche STEP du drivers effectue une période HIGH/LOW, le moteur fait un pas.\\
 +Ainsi, pour contrôler la vitesse des moteur, le code développé utilise une fonction permettant de générer une onde carrée à une fréquence donnée sur une broche de l’arduino, envoyée vers la broche STEP du driver, ce qui fait avancer le moteur plus vite si la fréquence est haute, et plus lentement si la fréquence est basse.
 +
 +Cette librairie se trouvent dans le dossier du projet. Vous trouverez la page de la librairie à [[https://code.google.com/archive/p/rogue-code/wikis/ToneLibraryDocumentation.wiki|cette adresse]] et un exemple d’utilisation de cette librairie à [[http://blog.ocad.ca/wordpress/digf6l01-fw201402-01/2014/10/using-arduino-to-play-two-tones-simultaneously/|cette page]].\\
 +Pour installer une librairie arduino sur votre IDE, suivez [[https://www.arduino.cc/en/Guide/Libraries|ce lien]].
 +
 +=== Mécanique & construction ===
 +
 +== Installation de la sculpture sur les plateformes ==
 +
 +ATTENTION, lors de l'installation d'une sculpture sur une plateforme, assurez-vous que la tige soit encastrée dans le deuxième socle (le petit sur la plaque de bois inférieure).\\
 +Ne pas hésiter à forcer sur la barre pour la faire glisser dans le socle.
 +
 +{{:socle-dehors.jpg?direct&300|}}
 +{{:socle-dedans.jpg?direct&300|}}
 +
 +Image de gauche : en dehors / image de droite : dedans.
 +
 +== Modèles 3D ==
 +
 +Si une pièce imprimée en 3D vient à être détruite, vous pouvez toujours en ré-imprimer une à partir des fichiers présents dans le dossier du projet, à l'aide de [[tuto_imprimante_3d|ce tutoriel]].
 +
 +== Améliorations possibles ==
 +
 +  * __Ventilateur__ : Pour mieux refroidir les drivers de moteur, il peut être bon d'ajouter un petit ventilateur au-dessus de ceux-ci. (Même si les COOLDRV8825 se refroidissent très bien.)
 +  * __Batterie__ : Les changer pour des batteries du style [[http://www.batteryspace.com/airsoftgunbattery12v4200mahnimhbatterypackforairsoftmodguns.aspx|NiMh 12V environ 4000mAh]]. Ce sont des batteries qui ont plus de cycles de recharge, qui sont plus rapides à charger, et (beaucoup) moins lourdes que les batteries au plomb.
 +  * __Roues/stabilisateurs__ : Utiliser des [[https://www.pololu.com/product/2692|stabilisateurs (ball caster) avec des billes en nylons]], un matériau très silencieux lors de frictions avec une autre surface. En revanche, attention à la hauteur de ces stabilisateurs, peut-être trop hauts pour être fixés sur les plateformes.
 +  * __Protection du bois__ : L'humidité et la lumière peuvent faire gondoler le bois. Un saturateur pour bois peut être appliqué sur celui-ci ou bien des plaques peuvent être redécoupées dans du contre-plaqué marin, très résistant à l'eau.
 +
 +
 +=== Sonars ===
 +
 +Les capteurs de distances que l'on appellera sonars sont des modules HC-SR04.
 +
 +Ils fonctionnent par ultrasons. Leur angle de visu est de 15 à 30 degrés selon la distance.
 +
 +Code couleur des capteurs :
 +
 +  * Blanc  : Grd / Masse 
 +  * Noir 1 : Echo 
 +  * Noir 2 : Ping  
 +  * Rouge  : Voltage 
 +
 +
 +Sur le schéma de la nappe on a une correspondance avec la PIN Echo du Sonar connecté à la PIN impair de la Arduino, et la PIN Ping du Sonar connecté à la PIN pair de la Arduino.
 +