Projet diorama, détecteur de mouvement, dfplayer, led

Bonjour, à tous j'ai besoin de votre aide, mon projet est un diorama, lorsque je passe devant (avec un détecteur de mouvement) je souhaite qu'une led s'allume, diffuse un son, la led reste allumée puis une seconde s'allume et un autre son est joué, puis fin.
j'ai essayé avec ce que j'ai pu trouver sur le net mais le programme ne fonctionne pas...
pouvez vous m'aider ?
En vous remerciant d'avance.

#include "SoftwareSerial.h"
#include "DFPlayer_Mini_Mp3.h"
#define PIR  2
#define ledjaune 12
#define ledblanche 13



SoftwareSerial mySerial(0, 1); // RX, TX

void setup() {
     mySerial.begin(9600);
    mp3_set_serial(mySerial);
    mp3_set_volume(15);       // fixe le son (30 maximum)
    mp3_set_EQ(0);            // equalizer de 0 à 5
    delay (10000);
    pinMode(PIR, INPUT);
   pinMode(ledjaune, OUTPUT);
    pinMode(ledblanche, OUTPUT);
   Serial.begin(9600);
}

void loop() {
   if (digitalRead(PIR) == HIGH) {
      digitalWrite(ledjaune, HIGH);
      mp3_play(1);  // joue mp3/0001.mp3
    delay(1000); // pause de 5 secondes
     digitalWrite(ledblanche,LOW);
     digitalWrite(ledblanche,HIGH);
        mp3_next();  // joue le prochain mp3
   delay(5000); // pause de 5 secondes
    
   }
  

   if (digitalRead(PIR) == LOW) {
      digitalWrite(ledjaune, LOW);
       digitalWrite(ledblanche,LOW);
   }
   delay(200);
}

Bonjour.
Le principal problème que je vois dans votre code est que vous utilisez les broches 0 et 1 pour communiquer avec le DfPlayer. Ces broches sont le port série natif de votre arduino et sont utilisées par la puce de communication pour communiquer avec votre ordinateur, il est fortement recommandé de ne jamais les utiliser.

Utilisez par exemple les broches 10 et 11 pour communiquer avec le dfplayer, changez simplement la ligne :

SoftwareSerial mySerial(10, 11); // RX, TX

N'oubliez pas que ces rx/tx font référence à l'arduino il faut les croiser lors de la connexion du DfPlayer.

Vérifiez quand vous allumez et éteignez les LED car il me semble que vous laissez le jaune allumé pendant que les sons jouent.

delay(1000); // pause de 5 secondes
digitalWrite(ledblanche,LOW); // Est-ce exact?
digitalWrite(ledblanche,HIGH);

Et le deuxième "if", je le remplacerais par un "else", c'est plus logique.

 else {
    digitalWrite(ledjaune, LOW);
    digitalWrite(ledblanche,LOW);
    }

Comment avez-vous connecté le Vcc et le rx du DfPlayer ?

Bonjour,
le VCC est connecté au 5v, j'ai changé le rx/tx sur 5-6 le rx étant la 5.
concernant la led jaune doit resté allumé pendant le premier son au deuxième son elle reste allumé et la blanche s'allume également.

Et la question est ....

A noter, si le PIR reste actif plus de 5s on recommence la séquence. Est-ce voulu?

bon du coup j'ai fait comme ci-dessous, le programme à l'air assez stable vous en pensez quoi?


#include "SoftwareSerial.h"
#include "DFPlayer_Mini_Mp3.h"
#define PIR  7
#define ledjaune 12
#define ledblanche 9



SoftwareSerial mySerial(2, 3); // RX, TX


void setup() {
    {   
    mySerial.begin(9600);
    mp3_set_serial(mySerial);
    mp3_set_volume(15);       // fixe le son (30 maximum)
    mp3_set_EQ(0);            // equalizer de 0 à 5
    delay (5000);
    pinMode(PIR, INPUT);
   pinMode(ledjaune, OUTPUT);
    pinMode(ledblanche, OUTPUT);
  
}
}
void loop() {
   if (digitalRead(PIR) == HIGH) {
      digitalWrite(ledjaune, HIGH);
      digitalWrite(ledblanche, LOW);
      mp3_play(1);  // joue mp3/0001.mp3
   delay(5000);
 
   digitalWrite(ledblanche,HIGH);
       mp3_next();  // joue le prochain mp3
    delay(22000);
    
   }
  

  else {
    digitalWrite(ledjaune, LOW);
    digitalWrite(ledblanche,LOW);
    }
   delay(1000);
}

Si ça fait le job c'est le principal.

Totalement d'accord.

Concernant la connexion DFPlayer, je recommande le schéma suivant :
dfplayer

La ligne Tx telle que vous l'avez.

  • La diode : bien que le DFPlayer puisse fonctionner entre 3,3 et 5 V, dans la fiche technique il indique une valeur typique de 4,2 V. Avec la diode on perd 0,6 V et on l'alimente à 4,4 V, plus proche de sa valeur réelle qu'avec le 5 V

  • Les résistances : Les pins TX/RX du DFPlayer passent à 3.3V. Avec la ligne TX il n'y a pas de problème, l'arduino reconnaîtra le 3.3V du DfPlayer comme HIGH, vous n'avez rien à faire.
    Avec la ligne Rx si on ne met rien, le 5V de l'arduino peut endommager le DFPlayer, dans le réseau ils mettent normalement un 1K, mais ce n'est pas strictement correct, il est préférable d'utiliser un diviseur de tension comme je l'indique pour baisser le signal de l'arduino de 5V à 3.3V.

Merci pour vos réponses, bon, après plusieurs allumages je n'ai plus de son... les lumières s'exécutent bien mais pas le son...

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.