Wiki

Reso-nance numérique | Arts et cultures libres

Outils du site


projets:brutbox:v1:accueil

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
projets:brutbox:v1:accueil [2017/04/10 18:09]
resonance [Électronique]
projets:brutbox:v1:accueil [2019/10/04 19:44] (Version actuelle)
resonance [Matériel]
Ligne 2: Ligne 2:
 La Brutbox v1.0 est un contrôleur MIDI/USB que l'on peut connecter à son ordinateur. Un micro-contrôleur Teensy 2.0 envoie les données de 8 capteurs simples (mono signal) : pression, bouton, lumière, distance, rotatif. La Brutbox v1.0 est un contrôleur MIDI/USB que l'on peut connecter à son ordinateur. Un micro-contrôleur Teensy 2.0 envoie les données de 8 capteurs simples (mono signal) : pression, bouton, lumière, distance, rotatif.
  
-Tous les fichiers sur https://git.framasoft.org/resonance/brutbox+Tous les fichiers de fabrication sur notre [[https://git.framasoft.org/resonance/brutbox|git.framasoft.org/resonance]]. 
 + 
 +{{:projets:brutbox:v1:bb-logo.jpg?400|}}
  
 ===== Électronique =====  ===== Électronique ===== 
-  * Carte [[https://www.pjrc.com/store/teensy.html|Teensy 2.0 ]]+Nous réalisons un circuit imprimé pour connecter la Teensy 2.0 à des prises USB mâles, faciles à trouver et résistantes aux manipulations. Les capteurs sont reliés par une prise USB femelle. 
 + 
 +====Matériel==== 
 +  * Carte [[https://www.pjrc.com/store/teensy.html|Teensy 2.0]]
   * Plaque de cuivre présensibilisée et matériel pour fabriquer un circuit imprimé   * Plaque de cuivre présensibilisée et matériel pour fabriquer un circuit imprimé
   * Capteurs : distance (x2), luminosité LDR (x2), potentiomètre (x2), pression (x1) et bouton d'arcade (x2)   * Capteurs : distance (x2), luminosité LDR (x2), potentiomètre (x2), pression (x1) et bouton d'arcade (x2)
   * Prise USB A (x8) et B (x8)   * Prise USB A (x8) et B (x8)
 +  * {{ :projets:brutbox:v1:liste_achat_brutbox_-_feuille_1.pdf |liste/liens indicatifs d'achats}}
  
 +<WRAP important 80% center>**Prises USB** : on utilise les broches +, - et  D+.</WRAP>
  
 +====Réalisation====
 +Suivre cette page de ressources sur la fabrication de [[materiel:pcb-diy:accueil|circuits imprimés DIY]].
  
-Nous utilisons pour le moment, la carte Teensy 2.0 qui permet de convertir en MIDI les données de nos capteursEn guise de connectique nous avons opté pour des connecteurs USB (pour éviter les faux contacts).+<WRAP group> 
 +<WRAP third column>{{:projets:brutbox:v1:brutbox-v1-typons.jpg|}} \\ Impression du typon</WRAP> 
 +<WRAP third column>{{:projets:brutbox:v1:brutbox-v1-pcb.jpg|}} \\ Perçage des trous avec une fraiseuse numérique</WRAP> 
 +<WRAP third column>{{:projets:brutbox:v1:brutbox-v1-pcb-result.jpg|}} \\ Gravure chimique de la plaque</WRAP> 
 +</WRAP>
  
-**Gravure** :\\ 
-On fait de la gravure a l'anglaise avec une fraiseuse numérique, vitesse 100mm/m, hauteur de passe 0.1mm. Cela prend environ 40 minutes pour faire la carte principale et 10 minutes par plaque USB B. 
  
  
 +===== Boîtes ===== 
 +Découpe de trois plaques en bois de 3mm d'épaisseurs et de dimensions 50x30cm, avec une machine à découpe laser. Munissez-vous d'une colle à bois pour assembler les capteurs. Nous ne collons pas la face du dessus pour ouvrir et montrer comment sont connectés les capteurs.
  
-{{.:pcb-teensy-usb-implementation.jpg|}} +<WRAP group> 
- +<WRAP third column>{{:projets:brutbox:v1:bb-boites-capteurs.png?400|}} \\ Planche capteurs à découper deux fois </WRAP> 
-  * **Fichiers actuels** (dxf+cambam+gcode) : {{:projets:brutbox:v1:pcb-brutbox-012016.zip|}} +<WRAP third column>{{:projets:brutbox:v1:bb-boites-teensy.png?400|}} \\ Planche Teensy et capteurs à découper une fois </WRAP> 
-<WRAP   info 60%+<WRAP third column>{{:projets:brutbox:v1:dsc_7410.jpg?400|}} \\ Assemblage</WRAP>
-On utilise +, - et  **D+** +
 </WRAP> </WRAP>
  
-==== Prise usb A ==== 
-{{:projets:brutbox:v1:screen_shot_12-06-16_at_10.13_am.png?nolink&200|}} 
  
-D = d+ 
  
-===== Boîtes =====  
-Découpe de plaques en bois de 3mm avec une machine à découpe laser. 
  
 ===== Logiciel =====  ===== Logiciel ===== 
-Code Teensy pour recevoir huit capteurs analogiques et envoyer les informations en MIDI :+ 
 +==== Teensy==== 
 +Code Teensy pour recevoir huit capteurs analogiques et envoyer les informations en MIDI
 + 
 +  * Installer le logiciel Arduino 
 +  * Installer l'extension [[https://www.pjrc.com/teensy/teensyduino.html|Teensyduino]] pour utiliser la Teensy avec Arduino 
 +  * Téléverser le code sur votre Teensy
  
 ++++ teensy-8-in.ino | ++++ teensy-8-in.ino |
Ligne 127: Ligne 140:
 </code> </code>
 ++++ ++++
 +
 +=== Utiliser deux CC par entrée analogique pour avoir 1023 valeur au lieu de 127 ===
 +
 +ensuite dans puredata il faudra combiner les deux valeurs
 +
 +{{:projets:brutbox:v1:screen_shot_10-17-17_at_12.11_pm.png?nolink|}}
 + 
 +
 +++++ teensy 8 control - 16 cc midi  |
 +<code cpp>
 +// the MIDI channel number to send messages
 +const int channel = 1;
 +
 +//Definir les sorties en fonction des canaux midi
 +const int cc_A=8; const int cc_Abis=18;  // A = pour l'entrée physique A0
 +const int cc_B=7; const int cc_Bbis=17;  // B = pour l'entrée physique A1 ...etc
 +const int cc_C=6; const int cc_Cbis=16;
 +const int cc_D=5; const int cc_Dbis=15;
 +const int cc_E=4; const int cc_Ebis=14;
 +const int cc_F=3; const int cc_Fbis=13;
 +const int cc_G=2; const int cc_Gbis=12;
 +const int cc_H=1; const int cc_Hbis=11;
 +
 +
 +void setup() {}
 +
 +int previous_n0a = -1; int previous_n0b = -1;
 +int previous_n1a = -1; int previous_n1b = -1;
 +int previous_n2a = -1; int previous_n2b = -1;
 +int previous_n3a = -1; int previous_n3b = -1;
 +int previous_n4a = -1; int previous_n4b = -1;
 +int previous_n5a = -1; int previous_n5b = -1;
 +int previous_n6a = -1; int previous_n6b = -1;
 +int previous_n7a = -1; int previous_n7b = -1;
 +
 +elapsedMillis msec = 0;
 + 
 +void loop() {
 +  // only check the analog cc_s 50 times per second (20ms),
 +  // to prevent a flood of MIDI messages
 +  if (msec >= 20) {
 +    msec = 0;
 +    int n0a = analogRead(A0) / 100;
 +    int n0b = analogRead(A0) - n0a*100;
 +
 +    int n1a = analogRead(A1) / 100;
 +    int n1b = analogRead(A1) - n1a*100;
 +    
 +    int n2a = analogRead(A2) / 100;
 +    int n2b = analogRead(A2) - n2a*100;
 +
 +    int n3a = analogRead(A3) / 100;
 +    int n3b = analogRead(A3) - n3a*100;
 +    
 +    int n4a = analogRead(A4) / 100;
 +    int n4b = analogRead(A4) - n4a*100;
 +
 +    int n5a = analogRead(A5) / 100;
 +    int n5b = analogRead(A5) - n5a*100;
 +    
 +    int n6a = analogRead(A6) / 100;
 +    int n6b = analogRead(A6) - n6a*100;
 +
 +    int n7a = analogRead(A7) / 100;
 +    int n7b = analogRead(A7) - n7a*100;
 +
 +    // only transmit MIDI messages if analog cc_ changed
 +    //       usbMIDI.sendControlChange(cc, value, channel);
 +
 +    // control change
 +    if (n0a != previous_n0a) {
 +      usbMIDI.sendControlChange(cc_A, n0a, channel);
 +      previous_n0a = n0a;
 +    }
 +
 +    if (n0b != previous_n0b) {
 +      usbMIDI.sendControlChange(cc_Abis, n0b, channel);
 +      previous_n0b = n0b;
 +    }
 +    
 +    // control change
 +    if (n1a != previous_n1a) {
 +      usbMIDI.sendControlChange(cc_B, n1a, channel);
 +      previous_n1a = n1a;
 +    }
 +
 +    if (n1b != previous_n1b) {
 +      usbMIDI.sendControlChange(cc_Bbis, n1b, channel);
 +      previous_n1b = n1b;
 +    }    
 +
 +    // control change
 +    if (n2a != previous_n2a) {
 +      usbMIDI.sendControlChange(cc_C, n2a, channel);
 +      previous_n2a = n2a;
 +    }
 +
 +    if (n2b != previous_n2b) {
 +      usbMIDI.sendControlChange(cc_Cbis, n2b, channel);
 +      previous_n2b = n2b;
 +    }    
 +
 +    // control change
 +    if (n3a != previous_n3a) {
 +      usbMIDI.sendControlChange(cc_D, n3a, channel);
 +      previous_n3a = n3a;
 +    }
 +
 +    if (n3b != previous_n3b) {
 +      usbMIDI.sendControlChange(cc_Dbis, n3b, channel);
 +      previous_n3b = n3b;
 +    }    
 +
 +    // control change
 +    if (n4a != previous_n4a) {
 +      usbMIDI.sendControlChange(cc_E, n4a, channel);
 +      previous_n4a = n4a;
 +    }
 +
 +    if (n4b != previous_n4b) {
 +      usbMIDI.sendControlChange(cc_Ebis, n4b, channel);
 +      previous_n4b = n4b;
 +    }   
 +
 +    // control change
 +    if (n5a != previous_n5a) {
 +      usbMIDI.sendControlChange(cc_F, n5a, channel);
 +      previous_n5a = n5a;
 +    }
 +
 +    if (n5b != previous_n5b) {
 +      usbMIDI.sendControlChange(cc_Fbis, n5b, channel);
 +      previous_n5b = n5b;
 +    }   
 +
 +    // control change
 +    if (n6a != previous_n6a) {
 +      usbMIDI.sendControlChange(cc_G, n6a, channel);
 +      previous_n6a = n6a;
 +    }
 +
 +    if (n6b != previous_n6b) {
 +      usbMIDI.sendControlChange(cc_Gbis, n6b, channel);
 +      previous_n6b = n6b;
 +    }   
 +
 +    // control change
 +    if (n7a != previous_n7a) {
 +      usbMIDI.sendControlChange(cc_H, n7a, channel);
 +      previous_n7a = n7a;
 +    }
 +
 +    if (n7b != previous_n7b) {
 +      usbMIDI.sendControlChange(cc_Hbis, n7b, channel);
 +      previous_n7b = n7b;
 +    }   
 +
 +  }
 + 
 +  // MIDI Controllers should discard incoming MIDI messages.
 +  // http://forum.pjrc.com/threads/24179-Teensy-3-Ableton-Analog-CC-causes-midi-crash
 +  while (usbMIDI.read()) {
 +    // ignore incoming messages
 +  }
 +}
 +</code>
 +++++
 +
 +
 +==== Pure Data ====
 +Nous utilisons Pure Data pour générer les sons et les images. Nous nous basons sur notre //framework// [[http://malinette.info|Malinette]].
 +
 +  * Télécharger Pure Data Extended
 +  * Ouvrir le fichier "brutbox/software/puredata/brutbox/BRUTBOX-expert.pd" 
 +
 +{{:projets:brutbox:v1:bb-puredata.png?800|}}
/home/resonancg/www/wiki/data/attic/projets/brutbox/v1/accueil.1491840555.txt.gz · Dernière modification: 2017/04/10 18:09 de resonance