Arduino Forum

International => Français => Tutoriels et cours => Topic started by: hbachetti on Apr 15, 2018, 09:25 am

Title: DFPLAYER mini et bruit de fond
Post by: hbachetti on Apr 15, 2018, 09:25 am
Salut à tous

J'ai en cours de réalisation un carillon intelligent.
Je suis en train d'expérimenter le DFPLAYER MINI (http://www.picaxe.com/docs/spe033.pdf).
J'utilise la librairie DFROBOT (https://github.com/DFRobot/DFPlayer-Mini-mp3).
Le carillon est équipé d'un détecteur de mouvement HR-SR501 afin de diffuser un premier son (chien) et éventuellement allumer la lumière en cas de visite.
Reste à compléter avec un détecteur de luminosité.
Un amplificateur à base de TDA8932 (https://fr.aliexpress.com/item/Low-Power-TDA8932-35W-Digital-Amplifier-Board-Module-Mono-Power/32584429808.html?spm=a2g0s.9042311.0.0.y2MME6) est branché en sortie du DFPLAYER, car je compte utiliser un haut-parleur de 10cm large-bande de plusieurs dizaines de watts.

J'ai dans un premier temps réglé le volume du DFPLAYER sur 5 afin de limiter la puissance de sortie.

Code: [Select]
  myDFPlayer.volume(5);

La première chose que j'ai remarqué et un bruit important, d'une part un bruit de fond au repos, et d'autre part des bruits numériques très gênants pendant la restitution d'un MP3.
J'ai lu que certains problèmes de bruit pouvaient être réglés par l'ajout de résistances de 1K sur RX TX.
Cela n'apporte rien ou presque.

L'amplificateur est hors de cause car en débranchant son entrée, le bruit de fond disparaît.
Je me suis dit que je pouvais certainement diminuer ces bruits en augmentant le signal de sortie du DFPLAYER.
J'ai donc intercalé un potentiomètre 47K logarithmique entre le DFPLAYER et l'amplificateur.



Et je règle le volume du DFPLAYER au maximum.

Code: [Select]
  myDFPlayer.volume(30);

La solution apporte un gain énorme en terme de rapport signal sur bruit.
Je passe d'une solution à peine utilisable à une solution pleinement satisfaisante.

S'il vous est déjà arrivé d'essayer un DFPLAYER et que vous avez trouvé ça exécrable en terme de bruit, voilà la solution pour le réhabiliter.
Je ne manquerai pas de créer un topic sur le projet complet.

@+



Title: Re: DFPLAYER mini et bruit de fond
Post by: dfgh on Apr 15, 2018, 10:38 am
hello
je vais justement attaquer une application comme celle ci
donc inutile de te dire que j'apprécie le partage.

par contre, je constate que tu ne mets pas de résistance en talon.
ne crains tu pas de mettre la sortie en CC par inadvertance?
( par exemple en te trompant de sens de rotation sur le potentiomètre)
Title: Re: DFPLAYER mini et bruit de fond
Post by: hbachetti on Apr 15, 2018, 10:45 am
Salut

En mettant le curseur à la masse, je court-circuite l'entrée de l'ampli, pas la sortie du DFPLAYER.
J'ai changé l'image pour une image perso plus adaptée.

@+
Title: Re: DFPLAYER mini et bruit de fond
Post by: dfgh on Apr 15, 2018, 11:37 am
ok, ca change tout

merci
Title: Re: DFPLAYER mini et bruit de fond
Post by: hbachetti on Apr 15, 2018, 12:55 pm
J'ai trouvé une photorésistance dans un fond de tiroir. Elle doit bien avoir 40 ans.
J'ai donc un carillon qui fait un bruit de chien quand le détecteur de présence est activé, de la lumière qui s'allume s'il fait nuit, et une sonnerie (chants d'oiseaux) quand on appuie sur le bouton de sonnette.
Un switch permet de changer de mode pour la sonnette (chants d'oiseaux ou animaux divers).

Mon code commence à ressembler  à quelque chose :

Code: [Select]

/*
 * SD CARD is organized as shown below:
 * FOLDER 01
 *    001-dog.mp3
 *    002-crocodile.mp3
 *    003-aligator.mp3
 *    004-gorilla.mp3
 * FOLDER 02
 *    001-cuckoo.mp3
 *    002-finch.mp3
 *    003-raven.mp3
 *    004-crow.mp3
 *    005-magpie.mp3
 */

#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

#define BUTTON      2   // PullDown
#define PIR         3
#define SWITCH      4
#define LIGHT       7
#define LED         13
#define LUMINOSITY  1

SoftwareSerial mySoftwareSerial(5, 6); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

int buttonPressed;
int pirState = LOW;
int lightDuration = 5000;

void ButtonIsr(void)
{
  static int enable;
  static long lastDebounceTime = 0;

  if (lastDebounceTime == 0 || (millis() - lastDebounceTime) > 200) {
    if (enable) {
      Serial.println("ButtonIsr");
      lastDebounceTime = millis();
      buttonPressed++;
    }
    enable = 1;
  }
}

void readPir(void)
{
  int val;
 
  val = digitalRead(PIR);  // read input value
  if (val == HIGH) { // check if the input is HIGH
    digitalWrite(LED, HIGH);  // turn LED ON
    delay(150);
    if (pirState == LOW) {
      Serial.println("Motion detected!");
      pirState = HIGH;
    }
  } else {
    digitalWrite(LED, LOW); // turn LED OFF
    delay(300);
    if (pirState == HIGH){
      Serial.println("Motion ended!");
      pirState = LOW;
    }
  }
}

void play(int folder, int file)
{
  static int playing;

  if (folder == 0 && file == 0) {
    playing = false;
    return;
  }
  if (!playing) {
    Serial.print(F("Play the "));
    Serial.print(folder);
    Serial.print(", ");
    Serial.println(file);
    myDFPlayer.playFolder(folder, file);
    playing = true;
  }
}

int folder = 1;
int file = 1;
int nfile;

void setup()
{
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);
 
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
 
  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    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){
      delay(0); // Code to be compatible with ESP8266 watch dog.
    }
  }
  Serial.println(F("DFPlayer Mini online."));
  myDFPlayer.volume(30);  //Set volume value. From 0 to 30
  attachInterrupt(digitalPinToInterrupt(BUTTON), ButtonIsr, RISING);
  pinMode (BUTTON, INPUT_PULLUP);
  pinMode (LED, OUTPUT);
  digitalWrite(LED, LOW);
  pinMode (LIGHT, OUTPUT);
  digitalWrite(LIGHT, LOW);
  pinMode (PIR, INPUT);
}

void loop()
{
  static int night = 0;
  static long lightStart;

  if (lightStart && lightStart < millis() - lightDuration) {
    digitalWrite(LIGHT, LOW);
  }
  int luminosity = analogRead(LUMINOSITY);
  if (luminosity < 400) {
    if (!night) {
      Serial.println("NIGHT");
    }
    night = true;
  }
  else {
    if (night) {
      Serial.println("DAY");
    }
    night = false;
  }
  readPir();
  if (pirState == HIGH) {
    play(2, 1);
    if (night) {
      lightStart = millis();
      digitalWrite(LIGHT, HIGH);
    }
  }
  if (buttonPressed) {
    Serial.println(F("BUTTON pressed"));
    if (digitalRead(SWITCH) == HIGH) {
      folder = 1;
    }
    else {
      folder = 2;
    }
    nfile = myDFPlayer.readFileCountsInFolder(folder);
    if (file > nfile) {
      file = 1;
    }
    play(0, 0);
    play(folder, file++);
    buttonPressed = 0;
  }
 
  if (myDFPlayer.available()) {
    printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states.
  }
}

void printDetail(uint8_t type, int value){
  switch (type) {
    case TimeOut:
      Serial.println(F("Time Out!"));
      break;
    case WrongStack:
      Serial.println(F("Stack Wrong!"));
      break;
    case DFPlayerCardInserted:
      Serial.println(F("Card Inserted!"));
      break;
    case DFPlayerCardRemoved:
      Serial.println(F("Card Removed!"));
      break;
    case DFPlayerCardOnline:
      Serial.println(F("Card Online!"));
      break;
    case DFPlayerPlayFinished:
      Serial.print(F("Number:"));
      Serial.print(value);
      Serial.println(F(" Play Finished!"));
      play(0, 0);
      break;
    case DFPlayerError:
      Serial.print(F("DFPlayerError:"));
      switch (value) {
        case Busy:
          Serial.println(F("Card not found"));
          break;
        case Sleeping:
          Serial.println(F("Sleeping"));
          break;
        case SerialWrongStack:
          Serial.println(F("Get Wrong Stack"));
          break;
        case CheckSumNotMatch:
          Serial.println(F("Check Sum Not Match"));
          break;
        case FileIndexOut:
          Serial.println(F("File Index Out of Bound"));
          break;
        case FileMismatch:
          Serial.println(F("Cannot Find File"));
          break;
        case Advertise:
          Serial.println(F("In Advertise"));
          break;
        default:
          Serial.println(F("????"));
          break;
      }
      break;
    default:
      break;
  }

}


EDIT : j'ai découvert que les mp3 pouvaient porter des noms plus explicites :
001-dog.mp3 plus sympa que 001.mp3
Title: Re: DFPLAYER mini et bruit de fond
Post by: dfgh on Apr 15, 2018, 03:52 pm
moi aussi j'avance sur le sujet et je confirme que la légère ronflette (que je constatais en y prêtant une oreille attentive),  a complètement disparue après l'adjonction d'un potentiomètre de 47 Kohms.
merci Mr Bachetti
Title: Re: DFPLAYER mini et bruit de fond
Post by: hbachetti on Apr 15, 2018, 04:01 pm
Bien
Ne pas oublier de régler le volume du DFPLAYER à 30 et ajuster le niveau de sortie avec le potentiomètre.
Qu'utilises tu comme ampli ?

Title: Re: DFPLAYER mini et bruit de fond
Post by: dfgh on Apr 15, 2018, 07:24 pm
un truc tout simple en 5 V deux voies

PAM 8403

ICI (https://fr.aliexpress.com/item/10PCS-PAM8403-Super-mini-digital-amplifier-board-2-3W-Class-D-digital-amplifier-board-efficient-2/1547727101.html?spm=a2g0s.13010208.99999999.265.VngYEW)
Title: Re: DFPLAYER mini et bruit de fond
Post by: hbachetti on Apr 16, 2018, 07:18 am
Le DFPLAYER est mono. Il est équipé d'un 8002a (http://www.shenzhensum.com/products/datasheet/8002%282.0W%29.pdf) en sortie, un ampli bridgé de 2W.
Tu branches donc deux HP ?
Title: Re: DFPLAYER mini et bruit de fond
Post by: dfgh on Apr 16, 2018, 09:29 am
hello
je n'en avais raccordé qu'un seul, mais avant de te répondre, j'ai raccordé le 2 ème.

c'est ok.

j'ai utilisé des HP de récup qui se trouvaient dans la carcasse d'un moniteur hs que j'ai benné
Title: Re: DFPLAYER mini et bruit de fond
Post by: hbachetti on Apr 16, 2018, 11:03 am
Juste une remarque.
La sortie du DFPLAYER est bridgée et délivre donc deux signaux en opposition de phase.
Il faut donc brancher les deux entrée du PAM8403 sur la même sortie, sinon le son sera moins puissant, car les ondes sonores ont tendance à s'annuler.

D'autre part en supposant que l'alimentation du DFPLAYER et du PAM8403 soit commune, ne pas relier l'une des deux sorties du DFPLAYER à la masse de l'entrée de l'ampli, cela reviendrait à la mettre en court-circuit.
Le potentiomètre doit donc avoir sa broche gauche à la masse.

Cette remarque est sans objet si les alimentations sont séparées et que les masses ne sont pas reliées entre elles.
Je ne sais pas si l'étage de sortie du DFPLAYER est protégé contre les court-circuits, je n'ai rien vu de tel dans la datasheet du 8002A.

@+
Title: Re: DFPLAYER mini et bruit de fond
Post by: Jeeprock on Nov 03, 2018, 03:29 pm
Juste une remarque.
La sortie du DFPLAYER est bridgée et délivre donc deux signaux en opposition de phase.
Il faut donc brancher les deux entrée du PAM8403 sur la même sortie, sinon le son sera moins puissant, car les ondes sonores ont tendance à s'annuler.

D'autre part en supposant que l'alimentation du DFPLAYER et du PAM8403 soit commune, ne pas relier l'une des deux sorties du DFPLAYER à la masse de l'entrée de l'ampli, cela reviendrait à la mettre en court-circuit.
Le potentiomètre doit donc avoir sa broche gauche à la masse.

Cette remarque est sans objet si les alimentations sont séparées et que les masses ne sont pas reliées entre elles.
Je ne sais pas si l'étage de sortie du DFPLAYER est protégé contre les court-circuits, je n'ai rien vu de tel dans la datasheet du 8002A.

@+

Moi je peux te dire que la sortie n'est pas protégée pour les courts circuits, je l'ai expérimenté sur une erreur de branchement !
Title: Re: DFPLAYER mini et bruit de fond
Post by: hbachetti on Nov 03, 2018, 07:59 pm
Salut

Si tu crames le 8002A, le module DFPLAYER n'est pas perdu pour autant.
Tu peux remplacer le 8002A.

Ou tu peux l'utiliser sans l'ampli de sortie, en virant le 8002A et en branchant son entrée sur une des deux broches de sortie du module.
Le module devient un simple lecteur MP3 sans ampli, mais tout de même utilisable.
J'en ai cramé un aussi et je l'utilise avec un TDA8932 mono pour amplifier. 30W avec une alimentation 24V 50W avec un HP de 10cm. Super qualité !

@+
Title: Re: DFPLAYER mini et bruit de fond
Post by: loolyk on Apr 28, 2020, 09:16 pm
Bonjour à tous,

J'interviens sur le topic car après des jours de recherche et de tests, il m'est impossible de faire fonctionner le DFplayer avec un ampli 8403.

J'ai testé toutes les méthodes que l'ont peut trouver sur les différents forums FR / EN :

- Alimentation séparé, ce qui ne m'arrangerai pas
- Résistance 1K sur TX/RX, aucun changement
- Potentiometre 10K ( je n'ai pas trouvé de 47K ) , ce qui ne permet que de baisser le volume
- Condensateurs de différentes tailles sur l'alimentation du PAM8403
- Alimentation 3.3 / 4.3 et 5 sur le DFplayer

Est ce que quelqu'un à réellement réussi à faire fonctionner cet ampli avec le DFplayer ?
La seule piste interessante est celle de hbachetti, mais il utilise un autre ampli en 24v il me semble.

Merci pour votre aide.
Title: Re: DFPLAYER mini et bruit de fond
Post by: hbachetti on Apr 28, 2020, 10:10 pm
En matière de puissance une augmentation de 3 décibels revient à doubler la puissance.
Un haut-parleur ayant 90dB de rendement apporte une puissance largement supérieure à un haut-parleur ayant 80dB de rendement.
Cela représente 10dB de différence, donc un peu plus de 3 x 3dB c'est à dire environ 10 fois plus de puissance. Or avec 10db de différence on a l'impression d'entendre un son 2 fois plus fort.

Un PAM8403 s'alimente en 5V, tout comme l'ampli du DFPLAYER d'ailleurs et produit 3W au lieu de 2W, c'est à dire une puissance ridicule.
3W au lieu de 2W : une différence de niveau sonore à peine audible.
Quel est l'intérêt de remplacer l'ampli du DFPLAYER par un autre ampli n'ayant pas plus de puissance ?
Title: Re: DFPLAYER mini et bruit de fond
Post by: loolyk on May 02, 2020, 12:17 pm
Merci pour ta réponse.

J'ai décidé de mettre un ampli séparé car lors de la lecture direct avec le DFplayer celui ci se coupe si je mets le volume à 100% ( Valeur 30 ).
Hors effectivement, la différence de niveau est dérisoire je te l'accorde.

Dans mon projet j'ai une alimentation USB, type chargeur téléphone. Je ne peux aller plus haut en tension.
Des lors, je branche en // un nodemcu sur  [VCC In] de 5v et le dfplayer mais lors de la lecture je pense que la tension ( ampérage ? ) chute fortement et coupe le DFplayer.

Peut être que mon approche n'est pas la bonne ? Mon truc c'est l'info pas l'électronique et j'en appel donc à vos talents pour combler les miens  :smiley-confuse:

Merci
Title: Re: DFPLAYER mini et bruit de fond
Post by: hbachetti on May 02, 2020, 12:24 pm
Ou alors le haut-parleur a une impédance trop faible et fait chuter fortement la tension.
Il faudrait mesurer.
Ajouter un ampli ne résoudra pas ce problème de coupure s'il a pour cause une chute de tension.

Il y a tout de même un argument en faveur du PAM8403 : la stéréo.
La sortie amplifiée du DFPLAYER est mono, mais il existe deux sorties DAC_L et DAC_R que l'on peut donc brancher à l'entrée d'un ampli stéréo.
Title: Re: DFPLAYER mini et bruit de fond
Post by: loolyk on May 02, 2020, 12:34 pm
C'est un HP de 4 Ohms, c'est écrit dessus, je n'ai pas mesuré mais j'en ai plusieurs du même type et tous réagissent pareil.

Quand je dit qu'il ne fonctionne pas, j'entend par la que j'ai des bruits dans le HP comme des interférences et pendant la lecture c'est horrible.

En tout cas je vais prendre en compte ta remarque sur la stéréo. Sauf que dans mon projet je n'ai de la place que pour 1 seul HP. Peux ton mettre les 2 sorties sur le même HP ?

Avant ça il faut déjà que je rêgle mon problême de bruits dégueulasse.

Merci pour ton aide
Title: Re: DFPLAYER mini et bruit de fond
Post by: hbachetti on May 02, 2020, 12:53 pm
Quote
Peux ton mettre les 2 sorties sur le même HP ?
Non, le PAM8403 est un ampli bridgé, c'est à dire que ses sorties + et - sont en opposition de phase.
S'il y a la signale est plus fort sur une voie que sur l'autre cela va générer un courant important entre les deux sorties.



Comme tu peux le vois sur ce schéma les sorties DAC_L et DAC_R sont mixées à l'aide de deux résistances R2 R3 avant d'attaquer l'ampli mono 8002a à travers un condensateur.

Rien ne t'empêche de faire la même chose avec le PAM8403 mais sur une seule voie.
Il ne faut pas compter obtenir un résultat valable en jouant sur le volume logiciel.
La seule voie que j'aie trouvé c'est de régler le volume logiciel à fond et d'ajouter un réglage de volume par potentiomètre.
Title: Re: DFPLAYER mini et bruit de fond
Post by: loolyk on May 02, 2020, 01:33 pm
Merci pour cette réponse extrêmement précise, j'ai clairement compris comment faire pour cette partie.

Il me reste toutefois, le soucis de bruit parasite, avec un potentiomètre ça réduit le volume alors autant ne pas mettre d'ampli mais la le son est trop faible.

Je tourne en rond :



Peut être trouver une alim qui se découpe en 2 alims séparées ? Un idée ?
Title: Re: DFPLAYER mini et bruit de fond
Post by: hbachetti on May 02, 2020, 05:31 pm
J'ai une réalisation utilisant le DFPLAYER : un-carillon-mp3 (https://riton-duino.blogspot.com/2019/09/un-carillon-mp3.html)

Sur le schéma en 3.1 j'ai branché le potentiomètre entre SPK_2 et GND. L'ampli reçoit le signal entre curseur et GND. L'ampli est alimenté par une alimentation séparée, peu importe la tension. Si je n'avais pas besoin d'autant de puissance j'aurais utilisé une 9V ou une 12V.

Simplement pour confirmer la chose essaie dans un premier temps d'alimenter séparément l'ampli PAM8403 avec une alimentation dédiée.
Title: Re: DFPLAYER mini et bruit de fond
Post by: loolyk on May 02, 2020, 06:17 pm
Effectivement, je viens de tester de brancher le Nodemcu en USB et le DFplayer sur une autre alimentation 5V et ça à l'air d'être bon.

Sauf que dans mon projet, je n'ai qu'une arrivée 5V de type USB femelle.
De la je peux brancher un cable USB vers une boite qui contiendrai l'ensemble.

Reste à savoir comment, a partir d'une source 5V , récupérer 2 alimentations ?
Title: Re: DFPLAYER mini et bruit de fond
Post by: hbachetti on May 02, 2020, 06:20 pm
Les deux alimentations ont tout de même une masse commune ?
Title: Re: DFPLAYER mini et bruit de fond
Post by: loolyk on May 02, 2020, 06:53 pm
Pour l'instant je n'ai pas 2 alimentations, j'utilisait la sortie 3.3 du Nodemcu pour alimenter le DFplayer.

Finalement comme j'ai cru comprendre que le DFplayer fonctionnait mieux à 5V, donc j'ai testé un montage à partir d'un câble USB sur l'entrée 5V du Nodemcu et en parallèle sur le DFplayer et l'ampli. Donc tous sur la même masse et VCC.

Cela aurait été l'idéal pour moi, j'aurai imprimé une boite pour mon montage et mon projet serai terminé.

Mais malheureusement, partir de la j'ai fait toute les manipulations trouvés sur le web pour corriger le soucis de bruits et interférences dans le HP.

L'idée de séparer les alimentations fonctionne mais c'est la que je bloque, je n'ai qu'une arrivé 5V.
J'imagine qu'il faut la séparer par une alimentation spécifique, qui prend 5V et sors 5V séparée ou un truc du genre ? Mais c'est la que mes compétences s'arrêtent en électronique.

Title: Re: DFPLAYER mini et bruit de fond
Post by: hbachetti on May 02, 2020, 08:16 pm
Veux-tu dire qu'alimenté en 3.3V par le NodeMCU le DFPLAYER donne satisfaction en terme de bruit ?
Title: Re: DFPLAYER mini et bruit de fond
Post by: loolyk on May 04, 2020, 09:11 am
Effectivement, alimenté en 3.3 par le port USB ou via le Pin 5V du Nodemcu, je peux alimenter le DFPlayer sans problème de bruit. Idem si j'alimente une breadbord en 5V et que je les branches en parallèles.
Dans ce cas je n'ai qu'un soucis de volume trop bas, voila la raison pour laquelle je voulais ajouter un ampli.
Des lors que j'y branche un ampli PAM ou hxj8002 j'ai des interférences et du souffle dans les blancs sonores.
Je vais tenter d'amplifier le signal avec un transistor, des que j'aurai trouvé un schéma simple à base d'un seul transistor.
Title: Re: DFPLAYER mini et bruit de fond
Post by: hbachetti on May 04, 2020, 10:19 am
Le problème d'un ampli à un seul transistor est qu'il fournira une tension crête à crête d'environ 4.5V dans le meilleur des cas, donc une tension efficace de 1.6V.

P = U² / R = 1.6² / 4 = 0.64W

L'ampli du DFPLAYER et le PAM8403 sont des amplis bridgés (chaque voie comporte en fait deux amplis) donc ils fournissent en sortie deux tensions en opposition de phase, donc une tension efficace doublée. Dans ce cas la puissance est de :

P = U² / R = 3.2² / 4 = 2.5W

Donc l'ampli tout simple sera 4 fois moins puissant.

Physiquement, un ampli bridgé alimenté en 5V ne peut pas fournir plus de 2.5W

Autre hypothèse : les mp3 ont un volume d'enregistrement faible.
Essayer un haut parleur à rendement plus élevé.