Passerelle.Infini 2023 : Trobar

De Les Fabriques du Ponant
Aller à : navigation, rechercher

Introduction

Résumé du projet

L’objectif était de créer un dispositif nomade permettant à la fois de jouer de la musique collectivement et de proposer un lien entre la musique créée et de l'écriture de texte.

membres du projet

Troubarequipe1.jpg

  • Stephane,
  • Stephanie,
  • Sebastien,
  • Guillaume.



1/ Pistes et recherches

1.1 Bibliographie et webographie sur le projet

Mettre ici des exemples trouvés sur web de projets qui ressemblent et des technologies qui s'en rapprochent ou qui servent d'inspiration.

1.2 Pistes explorée, abandonnées ou fertiles

Nous avions le projet de récupérer l'ambiance sonore afin que cette information sonore inter agisse sur sur notre réalisation, ainsi que d integrer d autres instruments, boîtes à effets musicales...dans le but que ces éléments sonores interagissent sur une boîte qui nous donnerai une histoire, mots, émotions....

Après de longs échanges, nous avons décidé que cette boîte nous affichera des mots de façon aléatoire suivants les différentes éléments sonores...et que l histoire serait par une personne seul ou un groupe....

1.3 L'objet idéal

L'objet idéal aurait plusieurs fonctions. La fonction "création sonore" permettrait tout d'abord de capter l'ambiance sonore d'un lieu, grâce à des micros. Ensuite différents capteurs permettrait de déclencher et de moduler des sons, que ce soit des sons musicaux ou le son d'ambiance. Une partition sonore se crée à partir de ces éléments. Le Trobar serait ensuite capable de transformer cette partition musicale en mots. Grâce à un programme Arduino analysant l'intensité sonore de la création et son tempo, le Trobar proposerait un nuage de mots correspondant à l'univers musical créé. A des sons doux et lents correspondraient des mots dans un champ lexical équivalent, tandis que des sons au tempo et à l'intensité élevés feraient apparaître des mots issus de champs lexicaux de l'ordre de la vitesse, de la colère etc. A partir de ces mots, le médiateur culturel qui se sert du Trobar pourrait proposer des jeux littéraires : atelier d'écriture (de texte, de chansons, de nouvelles..), improvisation théâtrale, etc.

2/ Fabrication du prototype

Passerelle.infini2023 TROBAR.JPG

Passerelle.infini2023 TROBAR2.JPG

2.1 Matériel et fourniture nécéssaires

  • Ordinateur (Windows/Linux) avec le logiciel arduino IDE
  • Découpe Laser (surface de 300*300mm minimum) capable de découper du CP léger de 3mm.
  • Un kit Arduino (Arduino mini ou Uno, alimentation 5v indépendante, câble USB...)
  • 9 LED adressables (souvent vendu en bandeau que l'on pourra couper).
  • Bois
  • Bouton de borne d'arcades
  • Haut parleur
  • Vis à bois
  • Colle chaude
  • Le nécessaire de soudure électronique et composants de base


2.1 Hardware

2.1.1 Le cadran à LED

Nous allons réaliser un cadran de 9 cases sur lequel il pourra être positionné des étiquettes à écriture transparente de 77*77mm.

  • Commencer par découper trois plaques de CP de 3mm selon les fichiers nommés Media:Cadre1.svg media:Cadre2.svg et Media:Cadre3.svg.
  • Couper également au laser la boite à cadran (Media:Separateur.svg)qui sera à positionner à l'arrière des 3 cadres. (Ce dernier fichier est éventuellement à refaire car dans notre version ce cadre n'est pas correctement dimensionné par rapport aux trois cadres placés devant.
  • Superposer ces trois plaques les unes sur les autres en suivant l'ordre défini (1,2,3). La plaque 3 sera celle visible sur le dessus.
  • Coller ces dernières
  • Couper au bandeau LED 9 pièces, les souder les unes aux autres au moyens de fils de 10cm environ. Réaliser ainsi une série de 9 LED distantes d'environ 11cm les une des autres. Veiller à ce que ces LED soient assemblés dans le bon sens (flèche allant des fils d'alimentation à la dernière LED). On utilisera entre chaque LED 3 fils un rouge pour le VCC, un jaune pour le data et un noir pour la masse. A l'entrée de cette série, souder 3 fils plus long (environ 20cm) avec des connecteurs duponts mâles pour se connecter facilement à l'Arduino).
  • Passer les LED en serpentin dans la boite à cas précédemment découpe. Nous n'avons pas prévu de passage entre cases alors découper une encoche entre chaque case au cutter ou modifiez le fichier.
  • Coller chaque LED bien au centre des case.
  • Brancher le fil noir sur une masse (GND) de l'arduino, le fil rouge sur une alimentation (5v), et le fil jaune sur la pin 6 de l'Arduino (cf. schéma ci dessous).
  • Brancher un bouton poussoir (bouton d'arcade) entre une masse et la borne 2 de l'Arduino.

Montage trobar 230310.png

Le shèma ci dessous a été réalisé à l'aide du logiciel libre fritzing complété de l'empreinte d'un ruban LED NeoPixel (cc-by-sa majikthys)


2.2 Software

Le programme suivant propose de déclencher à la pression du bouton poussoir, un effet de lumière multicolore se terminant au bout de quelques secondes par le choix aléatoire d'une seule des 9 cases. Ce code est librement inspiré des exemples fourni avec la librairie Adafruit_NeoPixel.h (GNU Lesser General Public License)

/*Le projet Trobar a été réalisé dans le cadre du marathon créatif paserelle.infini eyant eu lieu à la paserelle à Brest le 9 et 10 mars 2023.
Il est le programme du prototype réalisé dans les deux jours et en aucun cas une version finale. 
Ce code allume 9 led à la pression d'un bouton poussoir et choisis au hasard une des 9 cases qu'il allumera en blanc*/

#include <Adafruit_NeoPixel.h> //Nécessite de préinstaller dans votre IDE la librairie Adafruit_NeoPixel.h
#ifdef __AVR__
#include <avr/power.h>
#endif

// Défini le numéro de broche où sera connecté le fil de datas du ruban LAED
#define PIN 6 

// Combien de DEL y a t-il sur votre trobar ? 
#define NUMPIXELS 9

Adafruit_NeoPixel strip(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

//Défini le numéro de broche où sera connecté le bouton poussoir
int bouton=2;

//Défini une variable qui servira à choisir un nombre aléatoire. Ne pas modifier cette variable.
int nbreAleatoire=0;


void setup(){ 
pinMode(bouton, INPUT_PULLUP);  
  strip.begin(); // Initialise le ruban LED
}

void loop(){
if(!digitalRead(bouton)){
  strip.clear();
  depart(50);
  delay(1000);
  strip.clear();
  nbreAleatoire = random(0, 8);
  strip.setPixelColor(nbreAleatoire, strip.Color(150, 150, 150));
  strip.show();
}
}

void depart(int wait){
int firstPixelHue = 0;     // Premier pixel démarre sur rouge
  for(int a=0; a<60; a++) {  // Répète 60 fois
    for(int b=0; b<3; b++) {
      strip.clear();         
      for(int c=b; c<strip.numPixels(); c += 3) {
        int      hue   = firstPixelHue + c * 65536L / strip.numPixels();
        uint32_t color = strip.gamma32(strip.ColorHSV(hue)); 
        strip.setPixelColor(c, color); 
      }
      strip.show();                
      delay(wait);                 
      firstPixelHue += 65536 / 90;
    }
  }
}

3/ Faire vivre le prototype après le Hackathon

3.1 Besoins

Après le Hackathon, l'organisation a arraché le cerveau du Trobar, l'empêchant ainsi de vivre après le week-end. C'est sans compter sur l'envie de Staphane de lui donner une chance et d'expérimenter cette beta auprès de jeunes publics. Guillaume Lui propose donc une solution pour le restaurer.

  • 1 Arduino Nano
  • Une pile 6LR61 ou équivalent 9v rechargeable
  • Câble USB mini / USB
  • Interupteur à souder
  • Gaine thermorétractable
  • fils
  • Jeu de connecteurs duponts
  • Connecteur pile 9V
  • Imprimante 3D et filament

3.2 Hardware

Montage trobar VArd-Nano bb.png

3.3 Software

Au moyen du logiciel arduino IDE, flasher sur la carte le code suivant. La seule différence avec le précédent est l'adresse du PIN data du rubanLED. J'ai remplacé la broche pour faciliter la cablemanagement et regrouper les pinoche sur un seul connecteur Dupont. Ce dernier Software (12/06/2023) affiche 3 case aléatoirement. Chaque case prend une couleur aléatoire (RVB).

/*Le projet Trobar est réalisé dans le cadre du marathon créatif paserelle.infini eyant eu lieu à la paserelle à Brest le 9 et 10 mars 2023.
Il est le programme du second prototype réalisé au moyen d'une Arduino Nano 
Ce code alume 9 led à la pression d'un bouton poussoir et choisis au hasard trois des 9 cases qu'il allumera en en 3 couleurs (RVB)*/

#include <Adafruit_NeoPixel.h> //Nécessite de préinstaller dans votre IDE la librairie Adafruit_NeoPixel.h
#ifdef __AVR__
#include <avr/power.h>
#endif

// Défini le numéro de broche où sera connecté le fil de datas du ruban LED
#define PIN 3 

// Combien de DEL y a t-il sur votre trobar ? 
#define NUMPIXELS 9

Adafruit_NeoPixel strip(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

//Défini le numéro de broche où sera connecté le bouton poussoir
int bouton=2;

//Défini une variable qui servira à choisir un nombre aléatoire. Ne pas modifier cette variable.
int nbreAleatoire1=0;
int nbreAleatoire2=0;
int nbreAleatoire3=0;


void setup(){  
  Serial.begin(9600);
  pinMode(bouton, INPUT_PULLUP);  
  strip.begin(); // Initialise le ruban LED
}

void loop(){
if(!digitalRead(bouton)){
  strip.clear();
  depart(50);
  delay(1);
  strip.clear();
  nbreAleatoire1 = random(0, 8);
  nbreAleatoire2 = random(0, 8);
  nbreAleatoire3 = random(0, 8);
  while (nbreAleatoire2 == nbreAleatoire1){
    nbreAleatoire2 = random(0, 8);
  }
  while (nbreAleatoire3 == nbreAleatoire1 || nbreAleatoire3 == nbreAleatoire2) {
    nbreAleatoire3 = random(0, 8);
  }
  strip.setPixelColor(nbreAleatoire1, strip.Color(150, 0, 0));
  strip.setPixelColor(nbreAleatoire2, strip.Color(0, 0, 150));
  strip.setPixelColor(nbreAleatoire3, strip.Color(0, 150, 0));
  strip.show();
  Serial.println(nbreAleatoire1);
  Serial.println(nbreAleatoire2);
  Serial.println(nbreAleatoire3);
}
}

void depart(int wait){
  int firstPixelHue = 0;     // Premier pixel démarre sur rouge
  for(int a=0; a<60; a++) {  // Répète 60 fois
    for(int b=0; b<3; b++) {
      strip.clear();         
      for(int c=b; c<strip.numPixels(); c += 3) {
        int      hue   = firstPixelHue + c * 65536L / strip.numPixels();
        uint32_t color = strip.gamma32(strip.ColorHSV(hue)); 
        strip.setPixelColor(c, color); 
      }
      strip.show();               
      delay(wait);                 
      firstPixelHue += 65536 / 90;
    }
  }
}


ne pas toucher en dessous de ce paragraphe