Articles

Découverte de la Touch Board de Bare Conductive

Présentation

Dans cet article, nous allons vous présenter une carte programmable de la marque Bare Conductive : la Touch Board.

Cette carte Touch Board permet de transformer n’importe quelle surface ou objet conducteur en capteur tactile grâce à 12 électrodes pouvant détecter la plus petite tension, comme celle du corps humain.

Cette carte est notamment adaptée pour une utilisation avec de la peinture conductrice mais fonctionne aussi avec des cordons crocodiles ou tout élément conducteur.

Initialisation

La Touch Board est basée sur l’architecture Arduino. Elle possède un processeur de la même famille que celui de la Uno et convient à la plupart des Shields. Elle se programme avec le logiciel d’Arduino.

Installez le logiciel Arduino si ce n’est déjà fait. Vous débutez en Arduino ? Cliquez ici.

Téléchargez l’extension Touch Bord : Windows, Mac OSX, Linux 32 bits, Linux 64 bits. Lancez l’installation.

Lancez le logiciel Arduino. Dans l’onglet Outils à la ligne Type de carte, sélectionnez Bare Conductive Touch Board.
Raccordez votre carte en USB et mettez le switch sur ON. Dans l’onglet Outils à la ligne Port, sélectionnez le port de la carte.

PROJET 1 : Dessins sonores

Nous allons concevoir un programme permettant de jouer un son lorsque l’on touche un dessin. Chaque dessin aura son propre son.

NB : pour ce projet nous utiliserons des pinces crocodiles pour relier la Touch Board à nos connexions de peinture conductrice, mais vous pouvez très bien appliquer la peinture directement sur la carte.

Inventaire :

Starter Kit Touch Board
Patron

Application de la peinture :

Découpez le patron sur les pointillés.

Appliquez la peinture sur toutes les parties noires. Nous vous conseillons d’utiliser un pinceau et un peu d’eau pour diluer la peinture.

Inutile d’appliquer une couche de peinture épaisse.

Attendez 5 minutes que la peinture sèche.

Gestion des fichiers audio :

Retirez la carte micro-SD de la Touch Board et connectez-la à votre ordinateur à l’aide du lecteur.

À l’intérieur de la carte, vous trouverez plusieurs fichiers dont 12 audio nommés TRACK000.MP3 jusqu’à TRACK011.MP3. Chaque fichier est en fait associé à l’électrode de même numéro, c’est-à-dire que la piste TRACK003 est jouée lorsque l’électrode 3 est appuyée. Pour changer les pistes audio, il faut impérativement garder ce système de nommage pour assurer le bon fonctionnement. Il n’est pas obligatoire d’avoir 12 fichiers audio : si une électrode n’est associée à aucun fichier, elle n’émettra pas de son si on appuie dessus.

Conseil du constructeur : mettez les fichiers sonores par défaut dans un dossier nommé AUDIO GUIDE avant de mettre vos propres fichiers.

Téléchargez la bibliothèque sonore [Zapsplat ©], faites extraire l’archive et copier-coller les fichiers sur la carte micro-SD.

Insérez la carte dans la Touch Board.

Montage :

Reliez la Touch Board et l’enceinte avec le câble jack.

Reliez l’électrode avec les pinces crocodiles :

  • E9 à la voiture du patron
  • E6 à l’avion du patron
  • E3 au bateau du patron

Programme :

Nous allons faire en sorte que l’électrode :

  • E9 joue le son d’une voiture
  • E6 joue le son d’un avion
  • E3 joue le son d’un bateau

 

Reliez la Touch Board à votre ordinateur. Copiez-collez le code suivant :

#include <MPR121.h>
#include <Wire.h>
#define MPR121_ADDR 0x5C
#define MPR121_INT 4

#include <SPI.h>
#include <SdFat.h>
#include <FreeStack.h>
#include <SFEMP3Shield.h>

SFEMP3Shield MP3player;
byte resultat;
int sound = 0;

#define firstPin 0
#define lastPin 11

SdFat sd;

void setup() { //initialisation constructeur

  pinMode(LED_BUILTIN, OUTPUT);

  if (!sd.begin(SD_SEL, SPI_HALF_SPEED)) sd.initErrorHalt();

  if (!MPR121.begin(MPR121_ADDR)){}
  MPR121.setInterruptPin(MPR121_INT);

  MPR121.setTouchThreshold(40); 
  MPR121.setReleaseThreshold(20);

  resultat = MP3player.begin();
  MP3player.setVolume(50, 50); //echelle de 1 à 100, 1 étant un volume fort et 100 un volume faible

}

void loop() {
  touche();
}

void touche() {
  if (MPR121.touchStatusChanged()) { //si une touche a ete touchee

    MPR121.updateTouchData(); //mise a jour

    if (MPR121.getNumTouches() <= 1) { //on recupere le numero de l'electrode
      for (int i = 0; i < 12; i++) {
        if (MPR121.isNewTouch(i)) {

          digitalWrite(LED_BUILTIN, HIGH); //on allume la LED de la carte

          if (i <= lastPin && i >= firstPin) { //si on touche une electrode
            if (MP3player.isPlaying()) { //si un fichier audio est deja en cours de lecture
              if (sound == i) {
                MP3player.stopTrack(); //on l'arrete
              } else { //sinon on joue le fichier audio de meme numero que l'electrode
                MP3player.stopTrack();
                MP3player.playTrack(i - firstPin);
                sound = i;
              }
            } else { //sinon on continue de jouer le fichier en cours
              MP3player.playTrack(i - firstPin);
              sound = i;
            }
          }
        } else {
          if (MPR121.isNewRelease(i)) { //lorsque l'on arrête de toucher l'electrode, la LED s'eteint
            digitalWrite(LED_BUILTIN, LOW);
          }
        }
      }
    }
  }
}

Téléversez le programme.

Appuyez sur le bouton RESET de la carte et patientez 5 à 10 secondes.

Tout est prêt, chaque dessin doit jouer le son qui lui correspond.

PROJET 2 : Contrôleur RVB

Nous allons concevoir un programme permettant de contrôler un module LED RVB. À l’aide de la peinture conductrice on pourra régler les couleurs et la luminosité.

NB : pour ce projet nous utiliserons des pinces crocodiles pour relier la Touch Board à nos connexions de peinture conductrice, mais vous pouvez très bien appliquer la peinture directement sur la carte.

Inventaire :

Starter Kit Touch Board
Patron
Jeu de connecteurs Arduino
Jumpers M/F
Module LED RVB

Application de la peinture :

Découpez le patron suivant les pointillés.

Appliquez la peinture sur toutes les parties noires. Nous vous conseillons d’utiliser un pinceau et un peu d’eau pour diluer la peinture.

Inutile d’appliquer une couche de peinture épaisse.

Attendez 5 minutes que la peinture sèche.

Montage :

Nous aurons besoin du nécessaire de soudage. Si vous n’avez pas le matériel nécessaire pour souder, nous vous conseillons ce kit.

Vous débutez en soudure ? Suivez le guide :

Soudez les connecteurs à la carte Touch Board.

Reliez du module LED RVB à la Touch Board:

  • la broche R à la broche 9
  • la broche V à la broche 10
  • la broche B à la broche 11
  • la broche à un GND

 

Reliez les électrodes avec les pinces crocodiles:

  • E11 au premier quart de cercle (le plus fin)
  • E10 au 2ème quart de cercle
  • E9 au rond
  • E8 au 3ème quart de cercle
  • E7 au dernier quart de cercle (le plus épais)
  • E5 à la partie BASSE de la lettre R
  • E4 à la partie HAUTE de la lettre R
  • E3 à la partie BASSE de la lettre V
  • E2 à la partie HAUTE de la lettre V
  • E1 à la partie BASSE de la lettre B
  • E0 à la partie HAUTE de la lettre B

Programme :

Nous allons faire en sorte que l’électrode :

  • E11 met la luminosité à 25%
  • E10 met la luminosité à 50%
  • E9 allume/éteint la LED
  • E8 met la luminosité à 75%
  • E7 met la luminosité à 100%
  • E5 diminue l’intensité de la couleur rouge
  • E4 augmente l’intensité de la couleur rouge
  • E3 diminue l’intensité de la couleur verte
  • E2 augmente l’intensité de la couleur verte
  • E1 diminue l’intensité de la couleur bleue
  • E0 augmente l’intensité de la couleur bleue

Reliez la Touch Board à votre ordinateur. Copiez-collez le code suivant :

#include <MPR121.h>
#include <Wire.h>
#define MPR121_ADDR 0x5C
#define MPR121_INT 4

#define firstPin 0
#define lastPin 11

#define Rouge 9
#define Vert 10
#define Bleu 11

int r, v, b;
boolean onoff;

void setup() {
  /*------------initialisation constructeur--------------*/
  if (!MPR121.begin(MPR121_ADDR)){}
  MPR121.setInterruptPin(MPR121_INT);
  MPR121.setTouchThreshold(40);
  MPR121.setReleaseThreshold(20);
  /*-----------------------------------------------------*/
  pinMode(Rouge, OUTPUT);
  pinMode(Vert, OUTPUT);
  pinMode(Bleu, OUTPUT);

  onoff=true;
  r=v=b=255;
  analogWrite(Rouge, r);
  analogWrite(Vert, v);
  analogWrite(Bleu, b);
}

void loop() {

  if (MPR121.touchStatusChanged()) { //si une electrode a ete touchee

    MPR121.updateTouchData(); //mise a jour

    if (MPR121.getNumTouches() <= 1) { //on recupere le numero de l'electrode
      for (int i = 0; i < 12; i++) {
        if (MPR121.isNewTouch(i)) {

          if(i == 9){ //electrode 9 = on-off
            if(onoff == true){
              r=v=b=0; 
              onoff=false;
            }else{
              r=v=b=255; 
              onoff=true;
            }
          }

          if(i == 11){r=v=b=64;} /electrode 11 = 25%
          if(i == 10){r=v=b=128;} //electrode 10 = 50%
          if(i == 8){r=v=b=192;} //electrode 8 = 75%
          if(i == 7){r=v=b=255;} //electrode 7 = 100%

          if (i == 5) {r-=15; if(r<0) {r=0;} } //electrode 5 = on diminue le rouge
          if (i == 4) {r+=15; if(r>255) {r=255;} } //electrode 4 = on augmente le rouge
          if (i == 3) {v-=15; if(v<0) {v=0;} } //electrode 3 = on diminue le vert
          if (i == 2) {v+=15; if(v>255) {v=255;} } //electrode 2 = on augmente le vert
          if (i == 1) {b-=15; if(b<0) {b=0;} } //electrode 1 = on diminue le bleu
          if (i == 0) {b+=15; if(b>255) {b=255;} } //electrode 0 = on augmente le bleu

        analogWrite(Rouge, r); //on actualise la couleur rouge
        analogWrite(Vert, v); //on actualise la couleur verte
        analogWrite(Bleu, b); //on actualise la couleur bleue

        delay(30);

        } else {if (MPR121.isNewRelease(i)) {}} //quand on ne touche plus l'electrode, il ne se passe rien
      }
    }
  }
}

Téléversez le programme.

Appuyez sur le bouton RESET de la carte et patientez 5 à 10 secondes.

Votre contrôleur RVB est prêt !

Démonstration

Date de dernière modification 10 novembre 2020 16 h 13 min