MIDI TOY : Différence entre versions

De fablabo
Aller à : navigation, rechercher
(Partie hardware)
 
(31 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 
{{Projet
 
{{Projet
<!--Header-->
+
|name = RITOURNELLE
|name = MIDI_TOY
 
 
|status = experimental
 
|status = experimental
<!--Image-->
+
|image = autonome.JPG
|image =  
 
<!--General-->
 
 
|description = prototypage d'une interface MIDI pour contrôler tous types de jouets.
 
|description = prototypage d'une interface MIDI pour contrôler tous types de jouets.
 
|license = GPL v3.0
 
|license = GPL v3.0
|contributeurs = [[contributeur::Thomas]]
+
|contributeurs = Thomas
|matériaux = [[materiau::electronique]],[[materiau::code]],[[materiau::Processing]], [[materiau::Arduino]]
+
|ingrédients = electronique, code, Processing, Arduino
|cadModel =
 
 
|url =  
 
|url =  
 
}}
 
}}
Ligne 16 : Ligne 12 :
 
=Contrôleur MIDI pour engins électroniques modifiés=
 
=Contrôleur MIDI pour engins électroniques modifiés=
  
==Note d'intention :==
+
==Note d'intention :==
Le but est de pouvoir contrôler n'importe quel machine électronique fonctionnant sur faible voltage (12V maximum) et que l'on peut trouver à bas coût dans les vides greniers, emmaus …
+
Le but est de pouvoir contrôler n'importe quel machine électronique fonctionnant sur faible voltage (12V maximum) et que l'on peut trouver à bas coût dans les vides greniers, emmaus … en MIDI dans un premier temps.
 
Afin de pouvoir créer des instruments de musique électronique à partir de n'importe quel rebut électronique de préférence sonores.
 
Afin de pouvoir créer des instruments de musique électronique à partir de n'importe quel rebut électronique de préférence sonores.
  
==Quels modes de synchronisation possibles ?==
+
De cette façon on peut modifier un jouet, changer la hauteur de note de ses sonorités par exemple, puis l'intégrer à son ''set'' d'instruments électroniques grâce à la possibilité d'y intégrer ce module MIDI.
 +
 
 +
Par ailleurs, je cherche à réaliser rapidement, à l'aide des machines CNC, des circuits électroniques simples pour intégrer des effets audio aux jouets modifiés (fuzz, filtre ...)
 +
 
 +
==Quels modes de synchronisation possibles ?==
  
 
MIDI
 
MIDI
Ligne 32 : Ligne 32 :
 
==Plusieurs pistes existantes pour contrôler des machines 12V==
 
==Plusieurs pistes existantes pour contrôler des machines 12V==
  
===Casper Electronics version :===
+
===Casper Electronics version :===
  
 
[[File:Casper version.png|border|640px|méthode proposée par Casper Electronics]]
 
[[File:Casper version.png|border|640px|méthode proposée par Casper Electronics]]
Ligne 38 : Ligne 38 :
 
===HighLy Liquid version :===
 
===HighLy Liquid version :===
  
 +
[http://store.highlyliquid.com/collections/midi-controllers/ Le site de Highy liquid ]
  
 
Matériel et composants utilisés :
 
Matériel et composants utilisés :
Ligne 49 : Ligne 50 :
 
multiplexer 4051 :
 
multiplexer 4051 :
  
===Little Scale versions :===
+
===Little Scale versions :===
  
 
== Version 4066 ==
 
== Version 4066 ==
Ligne 55 : Ligne 56 :
 
http://little-scale.blogspot.fr/search/label/circuit%20bending?updated-max=2013-05-22T17:45:00%2B09:30&max-results=20&start=6&by-date=false  
 
http://little-scale.blogspot.fr/search/label/circuit%20bending?updated-max=2013-05-22T17:45:00%2B09:30&max-results=20&start=6&by-date=false  
  
Exploration du circuit bending en utilisant un microcontrolleur du type d'Arduino pour émuler la pression d'un bouton, le contrôle d'un oscillateur etc.
+
Utilisation d'un multiplexeur quad analog switch quad(4066) pour émuler la pression de boutons avec un microcontrolleur du type d'Arduino, le contrôle d'un oscillateur etc.<br />
Chaque bouton sur un jouet met en contact deux parties du circuit du jouet. Il s'agit dans un premier temps de trouver ces 2 parties et de trouver un endroit ou il est possible de les connecter.
+
Chaque bouton sur un jouet met en contact deux parties du circuit du jouet. Il s'agit dans un premier temps de trouver ces 2 parties et de trouver un endroit ou il est possible de les connecter afin de les relier plus tard à mon  multiplexeur.
  
 
==== Partie hardware ====
 
==== Partie hardware ====
Ligne 80 : Ligne 81 :
 
Si on envoi 5V sur le pin13 le pin 1 & 2 sont connectés, sinon ils sont déconnectés. Ce signal de 5V peut être généré par Arduino.
 
Si on envoi 5V sur le pin13 le pin 1 & 2 sont connectés, sinon ils sont déconnectés. Ce signal de 5V peut être généré par Arduino.
  
NB : la résistance entre 1 & 2 se nomme RON, on trouve cette valeur dans le datasheet de la puce. Sa valeur est de 470 Ohm à 25°C pour la HCF4066. Cette valeur est peut être la raison pour laquelle le 4066 ne marche pas pour l'instant sur tous les jouets -> Après tests le problème ne vient pas de là.
+
NB : la résistance entre 1 & 2 se nomme RON, on trouve cette valeur dans le datasheet de la puce. Sa valeur est de 470 Ohm à 25°C pour la HCF4066. Cette valeur est peut être la raison pour laquelle le 4066 ne marche pas pour l'instant sur tous les jouets -> Après tests le problème ne vient pas de là.
  
Voici comment connecter le 4066 avec Arduino et le jouet :
+
Voici comment connecter le 4066 avec Arduino et le jouet :
  
 
[[File:4066_diagram.jpg|border|640px|méthode proposée par Casper Electronics]]
 
[[File:4066_diagram.jpg|border|640px|méthode proposée par Casper Electronics]]
Ligne 90 : Ligne 91 :
 
==== Partie software ====
 
==== Partie software ====
  
Voici un code simple pour tester le trigger dans Arduino :
+
Voici un code simple pour tester le trigger dans Arduino :
  
 
<code code lang='c'>
 
<code code lang='c'>
 
void setup() {
 
void setup() {
pinMode(0, OUTPUT); 
+
pinMode(0, OUTPUT);  
 
}
 
}
  
 
void loop() {
 
void loop() {
digitalWrite(0, HIGH); 
+
digitalWrite(0, HIGH);  
delay(500); 
+
delay(500);  
digitalWrite(0, LOW); 
+
digitalWrite(0, LOW);  
 
delay(500);  
 
delay(500);  
 
}
 
}
Ligne 284 : Ligne 285 :
 
</code>
 
</code>
  
=== Divers ===
+
== Programmer la puce ATMEL ATTINY avec Arduino ==
 +
 
 +
Dans un premier temps essai avec le tutoriel suivant [http://www.semageek.com/tuto-programmation-des-attiny45-avec-un-arduino/ semageek].<br/>
 +
Ce tutoriel est très bien fait [http://www.kobakant.at/DIY/?p=3742 kobakant]
 +
 
 +
Il faut dans un premier temps installer [http://arduino.cc/en/Tutorial/ArduinoISP Arduino ISP] sur l'Arduino, c a d installer le sketch ARDUINO ISP (que l'on trouve dans les exemples) sur notre board. <br />
 +
''This tutorial explains how to use an Arduino board as an AVR ISP (in-system programmer).'' <br/>
 +
 
 +
ATTENTION : il faut d'abord uploader le programme et ensuite mettre le condensateur entre le reset et la masse. <br/>
 +
Il faut également copier les librairie attiny-master que l'on trouve sur le github su monsieur dans le /usr/share/arduino/hardware.
 +
 
 +
En RÉSUMÉ :<br/>
 +
* Réaliser le montage tel que présenté dans le tuto semageek.
 +
* Télécharger la librairie ''ATTINY'' [http://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips à partir de ce lien]
 +
* Vérifier quelles sont bien installées dans Arduino.
 +
* Téléverser le programme ''ArduinoISP'' sur votre Arduino.
 +
* Formater la puce Attiny à programmer :
 +
** sélectionner “ATtiny45 (8 MHz)” dans le menu “Tools > Board”
 +
** sélectionner “Arduino as ISP“ dans le menu “Tools > Programmer” ->
 +
** sélectionner “Burn Bootloader” dans le menu “Tools”.
 +
* Téléverser le programme pour l'attiny dans l'attiny :
 +
** sélectionner Attiny45 dans le menu “Tools > Board”
 +
** sélectionner “Arduino as ISP“ dans le menu “Tools > Programmer”.
 +
ce message doit apparaître, mais ne doit pas vous inquiéter : <br/>
 +
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85<br/>
 +
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny8<br/>
 +
 
 +
== réalisation du montage final ==
 +
 
 +
= Projet parallèle : modules d'effets audio electroniques simples =
 +
 
 +
Un certains Tim Escobedo réalise des montage électroniqes simples pour faire des effets sonores à bas coûts DIY.
 +
 
 +
La plupart de ses réalisations fonctionnant en 9V, il est possible de de les intégrer à des jouets modifier, à la façon de modules intégrables.
 +
 
 +
On peut les trouver ici : [[http://www.jiggawoo.eclipse.co.uk/guitarhq/Circuitsnippets/snippets.html Site de TIM ESCOBEDO]]
 +
 
 +
Parmi ceux ci :
 +
 
 +
* '''BOOST O RAMA''' [http://www.geocities.ws/diygescorp/schematics.html trouvé sur cette page]
 +
 
 +
[[File:Boostoramalayout.gif|border|640px]]
 +
 
 +
* '''IDIOT WAH''' [http://www.geocities.ws/diygescorp/schematics.html trouvé sur cette page]
  
Pour coder la puce Atmel Tiny ATTiny85
+
[[File:Idiotwahlayout.gif|border|640px]]
 +
 
 +
* '''THING MODULATOR''' [http://www.geocities.ws/diygescorp/schematics.html trouvé sur cette page]
 +
 
 +
[[File:Thingmodulatorlayout.gif|border|640px]]
 +
 
 +
* '''T.M.K''' [http://www.geocities.ws/diygescorp/schematics.html trouvé sur cette page]
 +
 
 +
[[File:Tmk1.3layout.gif|border|640px]]
 +
 
 +
= utilisation de GedA =
 +
 
 +
J'ai utilisé la suite CAO libre Geda pour réaliser mes pcb.
 +
 
 +
Plus d'informations ici : http://fablabo.net/wiki/Geda
 +
 
 +
=  Divers =
 +
 
 +
Pour coder la puce Atmel Tiny ATTiny85, une version simple mais qui comporte certains risques électriques d'après laurentB
  
 
http://www.hacknowledge.org/drupal/?q=ispprogrammer
 
http://www.hacknowledge.org/drupal/?q=ispprogrammer
 
[[Catégorie:Arduino]]
 
[[Catégorie:Machines_Sonores]]
 
[[Catégorie:Projets]]
 
[[Catégorie:Recyclage]]
 

Version actuelle en date du 28 novembre 2014 à 14:48


prototypage d'une interface MIDI pour contrôler tous types de jouets.




Contrôleur MIDI pour engins électroniques modifiés

Note d'intention :

Le but est de pouvoir contrôler n'importe quel machine électronique fonctionnant sur faible voltage (12V maximum) et que l'on peut trouver à bas coût dans les vides greniers, emmaus … en MIDI dans un premier temps. Afin de pouvoir créer des instruments de musique électronique à partir de n'importe quel rebut électronique de préférence sonores.

De cette façon on peut modifier un jouet, changer la hauteur de note de ses sonorités par exemple, puis l'intégrer à son set d'instruments électroniques grâce à la possibilité d'y intégrer ce module MIDI.

Par ailleurs, je cherche à réaliser rapidement, à l'aide des machines CNC, des circuits électroniques simples pour intégrer des effets audio aux jouets modifiés (fuzz, filtre ...)

Quels modes de synchronisation possibles ?

MIDI

Sync

CV/Gate

OSC

Plusieurs pistes existantes pour contrôler des machines 12V

Casper Electronics version :

méthode proposée par Casper Electronics

HighLy Liquid version :

Le site de Highy liquid

Matériel et composants utilisés :

transistors NPN :

Relais :

multiplexer 4066 :

multiplexer 4051 :

Little Scale versions :

Version 4066

http://little-scale.blogspot.fr/search/label/circuit%20bending?updated-max=2013-05-22T17:45:00%2B09:30&max-results=20&start=6&by-date=false

Utilisation d'un multiplexeur quad analog switch quad(4066) pour émuler la pression de boutons avec un microcontrolleur du type d'Arduino, le contrôle d'un oscillateur etc.
Chaque bouton sur un jouet met en contact deux parties du circuit du jouet. Il s'agit dans un premier temps de trouver ces 2 parties et de trouver un endroit ou il est possible de les connecter afin de les relier plus tard à mon multiplexeur.

Partie hardware


Connecter le point A au point 1 équivaux à presser le bouton correspondant.

Il s'agit maintenant de connecter ses points là de façon électrique en utilisant Arduino.

Arduino ne peut pas connecter à lui seul 2 boutons, il faut utiliser une puce 4066 (4066 Quad Bi-Lateral Switch CMOS IC).

Cette puce coûte à peu près 50 centimes. Le 4066 est une puce switch qui combine 4 interrupteurs électriques.

Par exemple le pin 13 contrôle le mécanisme pour fermer et ouvrir les pin 1 & 2 et ainsi contrôler l'ouverture et la fermeture du bouton de façon électrique.

Si on envoi 5V sur le pin13 le pin 1 & 2 sont connectés, sinon ils sont déconnectés. Ce signal de 5V peut être généré par Arduino.

NB : la résistance entre 1 & 2 se nomme RON, on trouve cette valeur dans le datasheet de la puce. Sa valeur est de 470 Ohm à 25°C pour la HCF4066. Cette valeur est peut être la raison pour laquelle le 4066 ne marche pas pour l'instant sur tous les jouets -> Après tests le problème ne vient pas de là.

Voici comment connecter le 4066 avec Arduino et le jouet :

méthode proposée par Casper Electronics

méthode proposée par Casper Electronics

Partie software

Voici un code simple pour tester le trigger dans Arduino :

void setup() { pinMode(0, OUTPUT); }

void loop() { digitalWrite(0, HIGH); delay(500); digitalWrite(0, LOW); delay(500); }

Le code utilisé pour MIDI TOY version 4066

int incomingByte = 0; // for incoming serial data

const int nb = 12; int toy [nb]; char input [nb] = {

 'A', 'Z', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'Q', 'S'}; 


void setup() {

 Serial.begin(9600);
 for(int i=0; i<nb; i++){
   toy[i] = i;
   pinMode(toy[i]+2, OUTPUT);
 }

}

void loop(){

 if(Serial.available() > 0){
   incomingByte = Serial.read();
   for(int i=0; i<nb; i++){
     if(incomingByte == input[i])
       digitalWrite(toy[i]+2, HIGH);
   }
 }
 // cette partie est importante car elle permet de réguler la vitesse de commutation des touches du jouet
 // on peut la changer en fonction du jouet (10ms pour un jouet de bonne qualité permettra de créer des
 // rythmes rapides sans coupures de son)
 delay(70);  
 for(int i=0; i<nb; i++){
   digitalWrite(toy[i]+2, LOW);
 }

}

Version multiplexer 4051

Utilisation d'une puce 4051 analog multiplexer.

Partie hardware

Illustration du fonctionnement du multiplexer CD4051.

Maintenant que vous avez compris parfaitement le fonctionnement d'un multiplexer. Voyons voir comment ça se soude sur notre Arduino :

méthode proposée par Casper Electronics

Partie software

Le code utilisé pour MIDI TOY version 4051

Pour l'instant pas commenté, mais il faut noter qu'il est nécessaire d'utiliser le point inhibit de la puce pour éviter un effet boucle sur le déclenchement des sons.

méthode proposée par Casper Electronics

int incomingByte = 0; // for incoming serial data

const int nb = 12; int inhibit = 7; int out1 = 8; int out2 = 9; int out3 = 10; char input [nb] = {

 'A', 'Z', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'Q', 'S'}; 


void setup() {

 Serial.begin(9600);
 pinMode(out1,OUTPUT);
 pinMode(out2,OUTPUT);
 pinMode(out3,OUTPUT);
 pinMode(inhibit, OUTPUT);

}

void loop() {

 if(Serial.available() > 0){
   incomingByte = Serial.read();
   for(int i=0; i<nb; i++){
     if(incomingByte == input[i]){
       switch(incomingByte){
       case 'A':
         /* Select Input 1 */
         digitalWrite(inhibit, LOW);
         digitalWrite(out1, LOW);
         digitalWrite(out2, LOW);
         digitalWrite(out3, LOW);
         delay(70);
         break;      
       case 'Z':
         /* Select Input 2 */
         digitalWrite(inhibit, LOW);
         digitalWrite(out1, LOW);
         digitalWrite(out2, LOW);
         digitalWrite(out3, HIGH);
         delay(70);
         break;
       case 'E':
         /* Select Input 3 */
         digitalWrite(inhibit, LOW);
         digitalWrite(out1, LOW);
         digitalWrite(out2, HIGH);
         digitalWrite(out3, LOW);
         delay(70);
         break;
       case 'R':
         /* Select Input 4 */
         digitalWrite(inhibit, LOW);
         digitalWrite(out1, LOW);
         digitalWrite(out2, HIGH);
         digitalWrite(out3, HIGH);
         delay(70);
         break;
       case 'T':
         /* Select Input 5 */
         digitalWrite(inhibit, LOW);
         digitalWrite(out1, HIGH);
         digitalWrite(out2, LOW);
         digitalWrite(out3, LOW);
         delay(70);
         break;
       case 'Y':
         /* Select Input 6 */
         digitalWrite(inhibit, LOW);
         digitalWrite(out1, HIGH);
         digitalWrite(out2, LOW);
         digitalWrite(out3, HIGH);
         delay(70);
         break;
       case 'U':
         /* Select Input 7 */
         digitalWrite(inhibit, LOW);
         digitalWrite(out1, HIGH);
         digitalWrite(out2, HIGH);
         digitalWrite(out3, LOW);
         delay(70);
         break;
       case 'I':
         /* Select Input 8 */
         digitalWrite(inhibit, LOW);
         digitalWrite(out1, HIGH);
         digitalWrite(out2, HIGH);
         digitalWrite(out3, HIGH);
         delay(70);
         break;
       default:
         digitalWrite(inhibit, HIGH);
         delay(70);
       }
     }
   }
 }
 else{
   digitalWrite(inhibit, HIGH);
   delay(70);
 }

}

Programmer la puce ATMEL ATTINY avec Arduino

Dans un premier temps essai avec le tutoriel suivant semageek.
Ce tutoriel est très bien fait kobakant

Il faut dans un premier temps installer Arduino ISP sur l'Arduino, c a d installer le sketch ARDUINO ISP (que l'on trouve dans les exemples) sur notre board.
This tutorial explains how to use an Arduino board as an AVR ISP (in-system programmer).

ATTENTION : il faut d'abord uploader le programme et ensuite mettre le condensateur entre le reset et la masse.
Il faut également copier les librairie attiny-master que l'on trouve sur le github su monsieur dans le /usr/share/arduino/hardware.

En RÉSUMÉ :

  • Réaliser le montage tel que présenté dans le tuto semageek.
  • Télécharger la librairie ATTINY à partir de ce lien
  • Vérifier quelles sont bien installées dans Arduino.
  • Téléverser le programme ArduinoISP sur votre Arduino.
  • Formater la puce Attiny à programmer :
    • sélectionner “ATtiny45 (8 MHz)” dans le menu “Tools > Board”
    • sélectionner “Arduino as ISP“ dans le menu “Tools > Programmer” ->
    • sélectionner “Burn Bootloader” dans le menu “Tools”.
  • Téléverser le programme pour l'attiny dans l'attiny :
    • sélectionner Attiny45 dans le menu “Tools > Board”
    • sélectionner “Arduino as ISP“ dans le menu “Tools > Programmer”.

ce message doit apparaître, mais ne doit pas vous inquiéter :
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny8

réalisation du montage final

Projet parallèle : modules d'effets audio electroniques simples

Un certains Tim Escobedo réalise des montage électroniqes simples pour faire des effets sonores à bas coûts DIY.

La plupart de ses réalisations fonctionnant en 9V, il est possible de de les intégrer à des jouets modifier, à la façon de modules intégrables.

On peut les trouver ici : [Site de TIM ESCOBEDO]

Parmi ceux ci :

Boostoramalayout.gif

Idiotwahlayout.gif

Thingmodulatorlayout.gif

Tmk1.3layout.gif

utilisation de GedA

J'ai utilisé la suite CAO libre Geda pour réaliser mes pcb.

Plus d'informations ici : http://fablabo.net/wiki/Geda

Divers

Pour coder la puce Atmel Tiny ATTiny85, une version simple mais qui comporte certains risques électriques d'après laurentB

http://www.hacknowledge.org/drupal/?q=ispprogrammer