Borne d’écoute “Maintenant c’est moi qui lis”

Tout commence en mars 2021. Notre « meilleur club du monde » est contacté par Cédric Hergault de la Compagnie La Goulotte qui porte alors le projet « Maintenant c’est moi qui lis ». Un chouette projet culturel qui se structure en 2 étapes :

  • 1. Cédric anime un atelier de lecture et d’enregistrement de livres audios avec des enfants d’école primaire (lecture + musique + bruitage). Des exemples de ces chouettes podcasts sont à écouter sur le site de la compagnie ici.
  • 2. Ensuite l’idée est de proposer ces enregistrements en écoute libre dans des médiathèques du territoire via des bornes d’écoute faites maison. C’est là que notre aide était la bienvenue pour imaginer et concevoir la partie technique.

Les contraintes

Quelques contraintes posées par Cédric :
• La durabilité, comme tout équipement public qui se respecte;
• La borne doit proposer 8 livres différents en lecture;
• L’idée de grande simplicité d’utilisation, avec un minimum d’électronique apparent;
• Proposer un dispositif assez facile à installer et à démonter (mobilité de la borne);
• Faire un objet un peu « magique » (des mobiles en mouvement? des jeux de lumière?).

A priori pas un grand challenge technique pour la partie audio, mais il fallait quand même imaginer une installation pérenne et dénicher le composant adéquat.

L’esquisse du projet

Il faudrait proposer 8 livres en écoute, et on trouve la formule la plus simple : 1 casque audio = 1 livre enregistré. Pas besoin alors de boutons « piste suivante/précédente », juste l’action « play » et « stop ».
L’action de décrocher le casque audio joue le titre mp3 depuis le début, et ça coupe/réinitialise lorsqu’on repose le casque sur un levier/balancier qui fait contact avec un interrupteur à lamelle.


La forme : une sorte de colonne morris avec embase hexagonale et 8 casques audios répartis sur 4 faces et les livres correspondants à proximité des casques.
Pour la « magie » de l’objet, on argue qu’un mouvement mécanique permanent (forme tournoyante au dessus de la colonne) serait un peu bruyante pour une médiathèque, et on se tourne donc vers l’idée de jeux de lumières à travers des vitraux sur certaines faces de la colonne.

Le composant : DF player mini

Après quelques recherches, on se tourne vers le module DFplayer mini (https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299) qui peut fonctionner en autonomie avec la panoplie de commandes d’un lecteur MP3, ou bien combiné à Arduino avec une communication en TX/RX. Les fichiers MP3 sont stockés et lus via un lecteur de micro SD intégré.

Côté hardware, mettre une résistance de 1K sur la ligne RX pour éviter les légers parasites (buzz).
On peut brancher une entrée casque audio sur les broches DAC_R et DAC_L, ou un mini HP sur les broches SPK_1 et SPK_2.

Attention selon le modèle que vous aurez entre les mains (module officiel ou copie chinoise) vous aurez plus ou moins de souffle, une qualité de lecture et une gestion du volume qui diffèrent.

Le programme

Deux bibliothèques sont nécessaires : SoftwareSerial qui est disponible dans la bibliothèque de base d’Arduino, et Dfplayermini à récupéré sur https://github.com/DFRobot/DFRobotDFPlayerMini.

J’ai trouvé pas mal de ressources sur le DFPalyer mini en français sur cet article ici et celui-ci.

Sinon c’est un programme très très simple mais ça a l’avantage que ça marche 🙂

// Pour Aduino Nano ATMega (Old bootloader)

#include "SoftwareSerial.h" // pour les communications series avec le DFplayer
#include "DFRobotDFPlayerMini.h" // bibliothèque pour le DFPlayer

int bouton = 12;
int buttonState = 0;         // état actuel du bouton
int lastButtonState = 1;     // état précédent du bouton

// Port RX/TX pour communication entre la nano et le DFplayer : 10 et 11 ou 26 et 27
#define RX 10
#define TX 11


SoftwareSerial mySoftwareSerial(RX, TX);
DFRobotDFPlayerMini myDFPlayer;


void setup()
{
  //Initialisation serial DFplayer
  mySoftwareSerial.begin(9600);
  
  //Initialisation serial Arduino
  Serial.begin(115200);
  
  //Vérifications si le module répond bien et si la carte SD est bien lue

  if (!myDFPlayer.begin(mySoftwareSerial))
  {
    Serial.println(F("Problème d'initialisation:"));
    Serial.println(F("1. Vérifiez les branchements de votre module"));
    Serial.println(F("2. Insérez une carte micro SD"));
    while (true);
  }

  Serial.println();
  Serial.println(F("Le module DFPlayer Mini est prêt!"));

  //Réglages initiaux
  myDFPlayer.setTimeOut(500); //Timeout serial 500ms
  myDFPlayer.volume(30); //Volume 11 pour le composant officel, 30 pour la copie chinoise! (réglages de 0 à 30)
  myDFPlayer.EQ(0); //Mode d'equalisation normal (Sinon 1:pop, 2:Rock, 3:Jazz, 4:Classic, 5:Base)
  

  pinMode(bouton, INPUT_PULLUP); //Les Pull Up sont des résistances internes à l'arduino.
}


void loop()
{
  buttonState = digitalRead(bouton);      //On lit et stocke l'information d'état actuel du bouton 

  if (buttonState != lastButtonState) {   //Si il y a un changement d'état (de ON vers OFF ou de OFF vers ON…)
    if (digitalRead(bouton) == 1)         //Si le bouton est ON
    {
      myDFPlayer.play(1);                        //On joue le 1er mp3 (et le seul dans notre projet)
    }

    if (digitalRead(bouton) == 0)         //Si le bouton est OFF
    {
      myDFPlayer.stop();                  //On stop la lecture du morceau, ce n'est pas un simple "pause" mais un stop qui permet de rejouer depuis le début
    }
  }

  lastButtonState = buttonState;         //Avant de clore la boucle, on stocke La valeur actuelle du bouton dans la valeur précédente
  delay(100);
}
Lors de l’inauguration à la médiathèque de Kercado de Vannes

Laisser un commentaire