Banc Sensoriel de Cervières - Museomix Aura 2019


Projet Banc Sensoriel réalisé à Cervières lors du Museomix 2019.


Description :
L'équipe "Cervières A Quoi?" a réalisé un banc sensoriel pour permettre au visiteur de profiter du paysage, tout en ayant la possibilité de se laisser bercer par une musique douce ou d'écouter le récit des aventures du pays.



Matériel utilisé :




Première étape réalisée par l'équipe et Aurélien :
Enregistrer les 4 pistes au format MP3, et les déposer sur la carte micro-SD en les nommant track001.mp3, track002.mp3, track003.mp3, track004.mp3, c'est le format par défaut que reconnait la carte MP3.

Installer l'extension VS 1053MP3 sur la carte Arduino et insérer la carte micro SD contenant les fichiers MP3, connecter les enceintes





Le Code
Pour utiliser la carte d'extension MP3, nous avons téléchargé la librairie suivante  https://www.elecrow.com/wiki/index.php?title=File:MP3_Shield_libraries.zip

Téléchargez la librairie et installez-la via le menu "Croquis / Inclure une bibliothèque / Ajouter la bibliothèque Zip..." du logiciel Arduino .
 (il peut être nécessaire de fermer et relancer le logiciel si les exemples n'apparaissent pas)

Le code est inspiré de l'exemple MP3ButtonPlayer2.ino :




On a juste multiplié les boutons et adapté leur fonctionnement, voici le code modifié : 

/**
 * \file BancSensoriel.ino 
 * https://lesarduineurs.blogspot.com/2020/02/arduino-mp3-boutons-museomix-aura.html
 */

// libraries
#include <SPI.h>
#include <SdFat.h>
#include <SdFatUtil.h>
#include <SFEMP3Shield.h>
#include <Bounce2.h>

// définition des broches utilisées pour les boutons
#define T1  2
#define T2  3
#define T3  4
#define T4  5

#define BUTTON_DEBOUNCE_PERIOD 20 //ms

SdFat sd;
SFEMP3Shield MP3player;

Bounce b_T1  = Bounce();
Bounce b_T2  = Bounce();
Bounce b_T3  = Bounce();
Bounce b_T4  = Bounce();


void setup() {
  Serial.begin(115200);

  pinMode(T1, INPUT_PULLUP);
  pinMode(T2, INPUT_PULLUP);
  pinMode(T3, INPUT_PULLUP);
  pinMode(T4, INPUT_PULLUP);


  b_T1.attach(T1);
  b_T1.interval(BUTTON_DEBOUNCE_PERIOD);
  b_T2.attach(T2);
  b_T2.interval(BUTTON_DEBOUNCE_PERIOD);
  b_T3.attach(T3);
  b_T3.interval(BUTTON_DEBOUNCE_PERIOD);
  b_T4.attach(T4);
  b_T4.interval(BUTTON_DEBOUNCE_PERIOD);


  if(!sd.begin(9, SPI_HALF_SPEED)) sd.initErrorHalt();
  if (!sd.chdir("/")) sd.errorHalt("sd.chdir");

  MP3player.begin();
  MP3player.setVolume(0,0);
  
  Serial.println(F("Looking for Buttons to be depressed..."));
}


void loop() {

// Below is only needed if not interrupt driven. Safe to remove if not using.
#if defined(USE_MP3_REFILL_MEANS) \
    && ( (USE_MP3_REFILL_MEANS == USE_MP3_SimpleTimer) \
    ||   (USE_MP3_REFILL_MEANS == USE_MP3_Polled)      )

  MP3player.available();
#endif

  if (b_T1.update()) {
    if (b_T1.read() == LOW)  {
      Serial.println(F("T1 pressed, Start Playing Track #1 "));
      MP3player.stopTrack();
      MP3player.playTrack(1);
  }
}

  if (b_T2.update()) {
    if (b_T2.read() == LOW) {
      Serial.println(F("T2 pressed, Stopping Track #2"));
      MP3player.stopTrack();
      MP3player.playTrack(2);
    }
  }

  if (b_T3.update()) {
    if (b_T3.read() == LOW)  {
      Serial.println(F("T3 pressed, Stopping Track #3"));
      MP3player.stopTrack();
      MP3player.playTrack(3);
    }
  }

  if (b_T4.update()) {
    if (b_T4.read() == LOW)  {
      Serial.println(F("T4 pressed, Stopping Track #4"));
      MP3player.stopTrack();
      MP3player.playTrack(4);
    }
  }

}




Les lignes

#define T1  2
#define T2  3
#define T3  4
#define T4  5

indiquent que nos 4 interrupteurs sont connectés au broches 2,3,4,5 de la carte extension Mp3

Le branchement des interrupteurs est très simple puisque l'on utilise la résistance Pull-up interne de la carte Arduino comme décrit dans cet article : https://www.locoduino.org/spip.php?article122

Schéma de montage de l'interrupteur sur la broche 2

Les autres interrupteurs se branche de manière similaire

( laisser suffisamment de câble pour pouvoir cacher le montage et les enceintes dans le banc)


L'appui sur un des 4 boutons est détecté par la séquence suivante et lance la lecture de la piste correspondante

  if (b_T1.update()) {
    if (b_T1.read() == LOW)  {
      Serial.println(F("T1 pressed, Start Playing Track #1 "));
      MP3player.stopTrack();
      MP3player.playTrack(1);
  }
}

--> Si le bouton branché sur T1 est en position appuyée, alors arrêter la lecture et jouer la piste MP3 numéro 1 (track001.mp3 stockée sur la carte micro-sd)

Téléverser le programme sur la carte Arduino, Tester, et tout installer dans le banc avec la pile 9V.


+ L'installation est agrémentée d'un QrCode brodé à la main au fil d'or !!! qui permet de connecter son smartphone au site pour écouter d'autres enregistrements.

Fabrication du banc par l'équipe et les habitants :


Installation du banc :

Les tests de performance :



Commentaires