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