Conversion d'un vieux téléphone à cadran pour projet escape game

Bonjour à toutes et à tous,
Dans le cadre d'un projet avec des élèves en situation de décrochage scolaire dans le collège où je suis prof, j'essaye d'utiliser un vieux téléphone à cadran rotatif pour que ce dernier puisse, lors d'un escape game, diffuser des sons dans le combiné en fonction du numéro de téléphone composé.
J'ai trouvé un super tuto en vidéo : https://www.youtube.com/watch?v=0_pVijmOgPs&t=141s&ab_channel=EscapeTechno

J'ai tout suivi à la lettre, mais impossible d'avoir le moindre son.
Pour ce projet j'ai besoin :

  • un téléphone à cadran
  • une carte arduino uno (j'en ai testé deux différentes) ;
  • un dfplayer (j'en ai testé 4 différents);
  • une carte sd de maximum 32 go (j'en ai testé 3 différentes, de différentes capacités), elles sont bien formatées en fat32, les fichiers dedans sont bien rangés dans un dossier "mp3" et commencent tous par 000 (0001.mp3, 0002.mp3, etc...) ;
  • une résistante de 200 ohm mais en suivant d'autres tutos sur internet j'ai aussi testé du 1000 ohm.

J'ai vérifié à de nombreuses reprises les branchements .
Mon code est le suivant :

#include <DFRobotDFPlayerMini.h>
#include <SoftwareSerial.h>


//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////  DEBUT ZONE A MODIFIER   //////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
const byte nbNum = 1; // Nombre de numéro à identifier
const String t_num_tel[nbNum] = {"17"}; // les numéros de téléphone à identifier (tous de la même longueur)
const byte t_mp3_tel[]  = {15}; // numéro de piste MP3 => 15 pour le fichier 0015.mp3, 16 pour le fichier 0016.mp3
// Attention, les fichiers mp3 sont à copier dans le répertoire mp3 / de la micro SD 
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////  FIN  ////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////

#define impulsions  13   // Cadran - fil rouge
#define rotation    12   // Cadran - fil bleu
#define df_rx       11   // dfPlayer RX
#define df_tx       10   // dfPlayer TX
#define combine     7    // Capteur Décroché Racroché
#define finMP3      4    // Busy du Dfplayer

int chiffre;
byte etat=0;
byte appel=false;
String numtel="";

byte son_tonalite = 1;      // piste 1 => mp3 / 0001.mp3
byte son_raccroche = 2;     // piste 2 => mp3 / 0002.mp3
byte son_numinconnuA = 3;   // piste 3 => mp3 / 0003.mp3 // Partie 1 du message Numéro inconnu
byte son_numinconnuB = 4;   // piste 4 => mp3 / 0004.mp3 // Partie 2 du message Numéro inconnu
// les fichiers 0005 Ã  0014 sont les enregistrements sonores des chiffres de 0 Ã  9.

byte lgNum = t_num_tel[0].length();

SoftwareSerial dfSerial(df_tx, df_rx);
DFRobotDFPlayerMini dfPlayer;

void setup() {
  pinMode(impulsions, INPUT_PULLUP);
  pinMode(rotation, INPUT_PULLUP);
  pinMode(combine , INPUT_PULLUP);
  pinMode(finMP3, INPUT_PULLUP);
  dfSerial.begin(9600);
  dfPlayer.begin(dfSerial);
  dfPlayer.volume(15);
  dfPlayer.stop();
}

void loop() {
  if(digitalRead(combine)==LOW) {
    if ((numtel.length()==0) && (digitalRead(4)!=LOW)) {
      dfPlayer.playMp3Folder(son_tonalite);
      delay(300);
    }
    if ((digitalRead(rotation)==LOW)&&(!appel)) {
      dfPlayer.stop();
      chiffre=0;
      while(digitalRead(rotation)==LOW) {
        int reading = digitalRead(impulsions);
        if (etat != reading) {
          if (reading == LOW) chiffre++;
          etat = reading;
        }
        delay(20);
      }
      if(chiffre>=10) chiffre=0;
      numtel+=chiffre;
      if (numtel.length()==lgNum) {
        byte i;
        for (i=0;i<nbNum;i++) {
          if (numtel==t_num_tel[i]) { dfPlayer.playMp3Folder(t_mp3_tel[i]);break;}
        }
        if (i==nbNum) {
          dfPlayer.playMp3Folder(son_numinconnuA);
          delay(200);
          while((digitalRead(4)==LOW)&&(digitalRead(combine)==LOW));
          for (byte i=0;i<lgNum;i++) {
            dfPlayer.playMp3Folder(int(numtel[i])-43);
            delay(200);
            while((digitalRead(4)==LOW)&&(digitalRead(combine)==LOW));
          }
          dfPlayer.playMp3Folder(son_numinconnuB);
        }
        delay(500);
        while((digitalRead(4)==LOW)&&(digitalRead(combine)==LOW));
        dfPlayer.stop();
        appel=true;
      }
    }
    if (appel) {
      dfPlayer.playMp3Folder(son_raccroche);
      delay(500);
      while((digitalRead(4)==LOW)&&(digitalRead(combine)==LOW));
      dfPlayer.stop();
    }
  } else {
    if (dfPlayer.readState()) dfPlayer.stop();
    appel=false;
    numtel="";
  }
}

J'ai testé plusieurs sources d'alimentation, en me disant qu'il y avait peut être une déperdition d'énergie en passant par la carte arduino pour alimenter le dfplayer.

Quand je compose un numéro, dans l'écouteur, j'entend bien des petites impulsions, et la LED "L" de l'arduino clignote bien du bon nombre d'impulsions.

J'ai vraiment l'impression que c'est le dfplayer qui ne veut pas démarrer. Ce dernier semble posséder une petite LED mais je n'ai jamais vu cette dernière s'allumer. Est-ce que la LED doit s'allumer dès que le dfplayer est sous tension ou que quand il est en train de jouer un son ? Pour rappel j'ai testé 4 dfplayer différents venant de différents vendeur.



Quelqu'un aurait il une idée ?

Je me disais que ça venait peut être de l'alimentation. Actuellement je donne à l'arduino du 9 v via le port jack, et le dfplayer reçoit environ du 5 v (j'ai mesuré au voltmètre), si j'alimente par l'usb de l'arduino, la dfplayer ne reçoit qu'un peu plus de 3v.
L'ampérage du chargeur connecté au jack est il important ? Actuellement ce chargeur délivre du 0,6 A.

Un énorme merci par avance.

Vincent

Bonjour Vincent

Avec cette bibliothèque, à la place de:
dfPlayer.begin(dfSerial);
tu fais:

	if (!dfPlayer.begin(mySoftwareSerial))
	{
		Serial.println(F("Unable to begin:"));
		Serial.println(F("1.Please recheck the connection!"));
		Serial.println(F("2.Please insert the SD card!"));
		while(true);
	}
	Serial.println(F("DFPlayer Mini online."));

Tu peux tester l'ensemble câblage et carte SD.

PS: Ne pas oublier:

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

Cordialement
jpbbricole

  • As-tu fait fonctionner le DFPlayer avec l'un des programmes de démonstration installés avec la librairie?
  • Si tu as un doute sur l'alimentation, alimente le DFPlayer séparément avec un vieux chargeur de téléphone par exemple.
  • Pour voir s'il y a un problème avec ton code, il faudrait mettre quelques Serial.print() dans ton code pour voir si chiffre, numtel, ... contiennent bien les valeurs attendues

Bonjour, merci beaucoup pour ton aide.
Je viens de tester et voilà les messages que j'obtiens dans le moniteur :

DFRobot DFPlayer Mini Demo
Initializing DFPlayer ... (May take 3~5 seconds)
Unable to begin:
1.Please recheck the connection!
2.Please insert the SD card!

Donc en gros l'arduino n'arrive pas à communiquer avec le dfplayer, j'ai revérifier les câblages à plusieurs reprises. Je commence à me demander si je n'ai pas reçu non pas un mais 4 dfplayer défectueux....

Je viens d'essayer le code d'exemple de base de la bibliothèque DFrobot qui revient à refaire la même chose ue jpbbricole et du coup j'obtiens le même code d'erreur dans le moniteur.

DFRobot DFPlayer Mini Demo
Initializing DFPlayer ... (May take 3~5 seconds)
Unable to begin:
1.Please recheck the connection!
2.Please insert the SD card!

Et tu as essayé de faire fonctionner le DFPlayer en mode autonome, avec un ou 2 boutons?

Victoire, avec un nouveau DFplayer qui vient d'arriver... ok j'ai vraiment eu la poisse sur 4 DFplayer différents venant de deux vendeurs différents...
Le câblage est correct sauf sur le téléphone en lui même car j'ai des problèmes avec la fonction décrocher/raccrocher du téléphone. Mes fils ne doivent pas être sur les bonnes bornes du téléphone. Je retenterai plus tard dans la journée ou dans le semaine et je vous tiendrai au courant. Un grand merci pour votre aide en tout cas.

Bonsoir, j'ai pris 5 min ce soir, et j'ai enfin fini par paramétrer et brancher tout correctement et tout roule ! Merci beaucoup pour votre aide !