aide pour ukulele electronique ^^ (arduino bt ?)

salut

je fabrique un instrument de musique
un genre d'ukulélé électronique percussif

je compte mettre 2 piezzos (percussion main droite) et 3 capteurs de position (mélodie sur le manche, main gauche) (interface z)

traitement sonore dans max msp

ça ferait 7 câbles à tirer jusqu'à l'arduino du coup (1 5v, 1 masse, 2 piezzi et 3 cv)
en utilisant un boîtier externe pour l'arduino, je devrais utiliser un câble DIN 8 pour brancher l'instrument et connecter les piezzos à ma carte son (en tirant des jack depuis le din8)

l'alternative à laquelle je pense serait d'utiliser un arduino bluetooth intégré dans le corps de l'instrument
comme ça pas de galère de câble et ce serait mieux pour la scène :sunglasses:

mais j'ai jamais testé bluetooth ?
temps de latence ?
stabilité ?
portée ?

sinon on m'a conseillé aussi xbee
mais je trouve plus cher en fait... quel serait les intérêts de cette technique ?

merci pour d'éventuels conseils

intérêts du XBee :

  • l'autonomie
  • la connexion à un autre équipement Arduino (synthé midi ?)

argh

ça y est j'ai tout construit
j'ai choisi l'arduino bt en fin de compte

je fais des essais depuis hier mais les piezos capteurs de chocs me donnent du fil à retordre.

schéma :

la vitesse de communication serial ne permet pas une analyse externe du signal, je loupe 3 knocks sur 4

j'ai trouvé deux sortes de codes pour gérer les piezo knock sensors

 const int threshold = 100;  // threshold value to decide when the detected sound is a knock or not

 // these variables will change:
 int sensorReading = 0;      // variable to store the value read from the sensor pin
 int ledState = LOW;         // variable used to store the last LED status, to toggle the light

 void setup() {
  pinMode(ledPin, OUTPUT); // declare the ledPin as as OUTPUT
  Serial.begin(9600);       // use the serial port
 }

 void loop() {
   // read the sensor and store it in the variable sensorReading:
   sensorReading = analogRead(knockSensor);    

   // if the sensor reading is greater than the threshold:
   if (sensorReading >= threshold) {
     // toggle the status of the ledPin:
     ledState = !ledState;   
     // update the LED pin itself:        
     digitalWrite(ledPin, ledState);
     // send the string "Knock!" back to the computer, followed by newline
     Serial.println("Knock!");         
   }
   delay(100);  // delay to avoid overloading the serial port buffer
 }

celui ci ne gère pas la vélocité

et

// deal with first piezo, this is kind of a hack
  val = analogRead(piezoAPin);
  if( val >= PIEZOTHRESHOLD ) {
    t=0;
    while(analogRead(piezoAPin) >= PIEZOTHRESHOLD/2) {
      t++;
    }
    noteOn(drumchan,note_hihatopen, t*2);
    delay(t);
    noteOff(drumchan,note_hihatopen,0);
  }

http://todbot.com/blog/2006/10/29/spooky-arduino-projects-4-and-musical-arduino/

là il s'agit d'estimer la force de frappe en fonction du temps (t) que met l'onde à redescendre

ce que je trouve peu logique car on aura plutôt une notion de la fréquence que de la vélocité
d'ailleurs dans mes tests c'est vraiment pas convainquant

du coup je suis pour l'instant sur le premier système :

sensorReading_0 = analogRead(piezo_0);
if(sensorReading_0 >= threshold) {
  Serial.print("/piezo_0/");
  Serial.println(sensorReading_0);
  delay(60);
}

mais je crois que mon problème vient surtout d'un manque de sensibilité

sur le duemilanove en ne branchant qu'un piezo avec sa résistance les chocs électriques que j'envoie oscillent généralement entre 1 et 20 (sur 1024) et ça fonctionne (c'est léger parce que je ne tape pas directement le buzzer mais la partie en bois sur laquelle il est collée)

mais sur le bluetooth j'ai un gros buzz (même en débranchant les capteurs de positions) et continuellement des valeurs entre 0 et 10 ce qui m'empêche de réduire le threshold en dessous de 10, du coup très peu de sensibilité
(pourtant en branchant en même temps le piezo à l'entrée de ma table de mix le buzz n'est pas si énorme, à moins qu'il ne soit pas dans les fréquences audibles)

je me demande si il y aurait un méthode pour réduire ce buzz que je n'ai pas sur le duemilanove
(par ex relier la masse qui alimente l'arduino avec celle que sort l'arduino serait une très mauvaise idée ? je m'y connais pas tant en électricité)

merci

kro:
pourtant en branchant en même temps le piezo à l'entrée de ma table de mix le buzz n'est pas si énorme, à moins qu'il ne soit pas dans les fréquences audibles

après enregistrement et analyse du signal (en audio) j'ai bien un gros buzz de 50 hz
voilà un impact typique de piezo noyé dans le buzz :

pas si gros le buzz en fait : le volume est augmenté 16x à peu prés

ce buzz est présent même avec l'arduino éteint et les capteurs de position débranchés et augmente quand je m'approche de la bécane :expressionless:

un électronicien présent aurait une idée pour l'éradiquer ? (ou du moins l'ignorer dans arduino) :-?