Faire un don
Fichiers audio libres de droits et gratuits.
🛒 Panier | 👤 Compte
Sons gratuits et bruitages a telecharger
⚠️ LaSonothèque a du mal... elle a besoin de vous pour rester en vie ! Faites un (petit) don ⚠️
Tous les dossiers

Le DF Player Mini de DFRobot

Passionné par l'électronique et l'audio, j'ai rapidement découvert le "DF Player Mini" : un petit lecteur audio très peu cher, capable de lire des MP3 et des WAV sur une carte MicroSD, seul ou piloté par un microcontrôleur.

Deux DFR0299 : dans son sachet DFRobot, et nu

Ce dossier est entièrement consacré au "DFPlayer Mini" original de DFRobot, référence "DFR0299" : ce qu'il sait faire, comment le reconnaître, comment le brancher, comment l'exploiter au mieux et comment contourner ses caprices. Les nombreux clones qui circulent font l'objet d'un dossier séparé.

Tout cela peut sembler compliqué quand on débute en électronique : des résistances, une liaison série, un bout de C++... Rassurez-vous, ça ne l'est plus vraiment. L'intelligence artificielle a rendu ce genre de projet accessible à tout le monde : elle relit un schéma, explique une erreur, écrit ou corrige un programme, et répond patiemment aux questions qu'on n'ose pas poser. Personnellement, j'utilise "Claude" et j'y trouve un vrai gain de temps. Autant tirer parti des nouvelles technologies : lancez-vous, vous n'êtes plus seul devant votre plaque de prototypage.

D'ailleurs, grâce au (vrai) "DF Player Mini", je propose les modules "Exposi'Son", "Ambi'Son" et "Boita'Son" sur ma boutique, et je mets à disposition gratuitement deux dossiers pour apprendre à réaliser vous-même ces objets, DF seul ou avec un Arduino (c'est aussi possible sans DF, avec un Raspberry Pi).

Présentation

Le "DFPlayer Mini" a été conçu par la société chinoise DFRobot, qui le commercialise sous la référence "DFR0299". C'est une petite carte électronique pleine de pattes, capable d'accueillir une carte MicroSD (dite parfois "TF"), d'en lire les fichiers audio et de les restituer soit sur une sortie ligne, soit directement sur un haut-parleur grâce à son amplificateur intégré de 3 Watts.

Sa force, c'est de savoir fonctionner seul, sans microcontrôleur, tout en restant pilotable en série par un Arduino ou un Raspberry Pi quand le projet le nécessite.

Deux DFR0299 : face composants et face lecteur de carte

Physiquement

La carte mesure environ 20 x 20 mm pour 3,4 mm d'épaisseur, et pèse à peine 3 grammes. Elle porte 16 broches réparties en deux rangées de huit, au pas standard de 2,54 mm : elle se pique donc directement sur une plaque de prototypage. On y trouve l'alimentation, les sorties audio, la liaison série, les entrées "AdKey", les entrées "IO", la sortie "Busy", et le lecteur de carte MicroSD au dos.

Une LED, bleue sur le DFR0299, s'allume pendant la lecture. C'est le témoin le plus simple pour savoir si le module travaille.

Électroniquement

Il propose une sortie "DAC" parfaite pour y brancher un casque ou un amplificateur, et une sortie "SPK" amplifiée de 3 Watts sous 4 à 8 Ohms pour un haut-parleur ou un résonateur.

Il s'alimente entre 3,2 et 5 Volts, pour une consommation de l'ordre de 20 mA au repos, bien davantage en lecture sur haut-parleur, où l'amplificateur tire l'essentiel du courant. Comptez large sur l'alimentation : un HP de 3 W qui joue fort peut réclamer plusieurs centaines de milliampères en crête.

Toutes ses entrées et sorties logiques travaillent en 3,3 Volts. C'est un détail important quand on le relie à un Arduino en 5 V, j'y reviens plus bas.

Informatiquement

Ce module lit les WAV et les MP3 d'une carte MicroSD formatée en "Fat16" ou "Fat32", et communique grâce au RX/TX avec un Arduino (ou un clone comme j'utilise) ou un Raspberry.

Côté formats, il avale les MP3 de 8 à 320 kbit/s, en débit constant comme en débit variable, aux fréquences d'échantillonnage habituelles de 8 à 48 kHz. Certains firmwares acceptent aussi le WMA, mais je ne m'y fierais pas.

Ce qu'on peut en faire

Ce lecteur coûte le prix d'un café, et pourtant la liste de ce qu'il permet est sans fin. Quelques idées réellement réalisées :

  • Un diffuseur d'ambiances reposantes pour s'endormir le soir
  • Un lanceur de sons pour bruiter en direct une pièce de théâtre ou une émission de radio
  • Un lecteur de méditations guidées ou d'ASMR
  • Un minuteur de jeu de société
  • Un lanceur d'accompagnements pour vos improvisations, ou de morceaux pour musicien
  • Un lecteur d'histoires pour enfants que les enfants choisissent eux-mêmes, ou de livres audio
  • Un buzzer de jeu télévisé, avec un seul son et un gros bouton coup-de-poing
  • Un cartel sonore de musée, un pupitre d'écoute, une œuvre interactive
  • Une annonce de gare pour le modélisme ferroviaire, déclenchée au passage du train
  • Un vieux téléphone qui sonne et délivre un message à qui décroche
  • Ou ce que vous voulez d'autre !

Comment reconnaître le vrai

Avant de câbler quoi que ce soit, encore faut-il avoir le bon module entre les mains. C'est le point le plus délicat à l'achat : beaucoup de cartes vendues sous le nom "DFPlayer Mini" n'en sont pas. Voici les signes du véritable DFR0299 :

  • "DFRobot" et "DFR0299" écrit sur l'emballage
  • "DFPlayer Mini" imprimé en blanc sur le circuit, sans mention "HW-247A"
  • Tous les espaces réservés aux composants en contiennent (et il y en a beaucoup)
  • LED bleue
  • Puce audio "DFROBOTILISP3"
  • Amplificateur "YX8002D"

Acheté en 2024 à 5,90$, directement chez "DFRobot" (attention aux frais de douane : me concernant ce fut 4€ pour 2 DF !). Il est aussi en vente 6,55 € chez "BerryBase" et chez "Mouser".

Méfiez-vous des lots à bas prix sur les places de marché généralistes : le prix anormalement bas est presque toujours le signe d'un clone, et la photo de l'annonce ne correspond pas systématiquement à ce qui arrive dans la boîte aux lettres. Quand c'est possible, achetez chez un distributeur électronique sérieux, qui garantit la provenance.

Payer 6 € le vrai plutôt que 2,50 € un clone n'a rien d'un caprice : les copies perdent la stéréo, le grave, les entrées "AdKey", etc. Le détail des versions que j'ai eu sous la main est dans le dossier consacré aux clones.

Les versions successives

DFRobot ne publie pas d'historique de révisions, et la carte ne porte aucun numéro de version. L'identification se fait donc à la puce et à la sérigraphie. Voici ce que j'ai pu reconstituer, entre mes propres exemplaires, la documentation du fabricant et les retours de la communauté.

ÉpoqueDécodeurAmpliRepères visuels
Origine (depuis 2014)YX5200-24SS8002"DFPlayer Mini" sérigraphié, LED rouge
Boîtes DFR0299 d'avant 2023GD3200B8002"DFPlayer Mini" et "HW-247A", LED rouge
Actuelle (vue en 2024)DFROBOTILISP3YX8002D"DFPlayer Mini" seul, sans "HW-247A", LED bleue
À venir (annoncée le 1er septembre 2026)DFROBOTILISP3YX8002DIdentique, plus le logo DFRobot gravé sur le lecteur microSD

Le module d'origine repose sur le YX5200-24SS du fondeur Yuxin, associé à un petit amplificateur de la famille 8002. C'est la base commune de toute la descendance, celle que décrit la fameuse datasheet "FN-M16P" que l'on retrouve partout sur le web.

DFRobot a ensuite fait marquer son décodeur à son propre nom, "DFROBOTILISP3", très probablement pour se démarquer de la jungle des copies. C'est la version que je recommande, et la seule que j'utilise. L'amplificateur porte alors la référence "YX8002D", et tous les emplacements de composants sont garnis.

La nouvelle version de septembre 2026

DFRobot vient de diffuser un avis de modification de produit ("Product Change Notice") daté du 1er septembre 2026, pour la référence DFR0299. Le contenu tient en une ligne : le blindage métallique du lecteur de carte microSD reçoit désormais le logo DFRobot sérigraphié, afin d'améliorer la reconnaissance du produit. Aucune autre modification, ni électronique, ni logicielle.

Traduction concrète pour nous : le fabricant a fini par admettre que son module était indiscernable de ses copies, et il marque son territoire. Tant mieux. À partir de maintenant, un DFPlayer Mini dont le blindage porte la tête de robot DFRobot est un vrai, et cela évite d'avoir à déchiffrer la référence d'une puce à la loupe. Attendez-vous néanmoins à ce que les clones s'approprient ce logo d'ici quelques mois, comme ils se sont approprié le reste.

Le brochage

Seize broches, dont on n'utilise en pratique jamais plus de la moitié :

  • 1 - VCC : alimentation, 3,2 à 5 V
  • 2 - RX : réception série (vers le TX de l'Arduino)
  • 3 - TX : émission série (vers le RX de l'Arduino)
  • 4 - DAC_R : sortie ligne, canal droit
  • 5 - DAC_L : sortie ligne, canal gauche
  • 6 - SPK_2 : haut-parleur, borne 2
  • 7 - GND : masse
  • 8 - SPK_1 : haut-parleur, borne 1
  • 9 - IO_1 : bouton "précédent" (appui court) / volume - (appui long)
  • 10 - GND : masse
  • 11 - IO_2 : bouton "suivant" (appui court) / volume + (appui long)
  • 12 - AdKey_1 : entrée bouton analogique 1
  • 13 - AdKey_2 : entrée bouton analogique 2
  • 14 - USB+ : liaison USB (D+), pour lire une clé au lieu d'une carte
  • 15 - USB- : liaison USB (D-)
  • 16 - Busy : état de lecture, niveau bas pendant qu'un fichier joue

La broche "Busy" est très pratique : elle permet à un Arduino de savoir qu'un son est en cours sans interroger le lecteur, et de piloter une LED ou un relais pendant la lecture. Peu de tutoriels l'utilisent, je la trouve pourtant indispensable. Elle est au niveau bas pendant la lecture, au niveau haut le reste du temps, et elle sort en 3,3 V comme le reste.

L'alimentation et le câblage

Une bonne partie des sons "pollués" attribués au DF Player viennent en réalité de son alimentation ou de son câblage. Voici les schémas de base, et les précautions qui changent tout.

Schémas MONO 3W (sortie SPK) et STÉRÉO Line (sortie DAC)

De quoi l'alimenter

Officiellement, 3,2 à 5 Volts. En pratique, tout fait l'affaire : trois piles alcalines AA ou AAA (1,5 V) en série, trois ou quatre accus rechargeables (1,2 V) en série, un chargeur de téléphone USB-C (qui atteint parfois 5,5 V), une batterie 18650 de 3,7 V, le 5 V d'un Arduino ou d'un Raspberry.

Il m'arrive aussi de l'alimenter avec quatre piles AA de 1,5 V, soit 6 Volts, et il semble l'accepter. Attention toutefois : c'est au-delà des spécifications du fabricant, donc à vos risques et périls. Sachez que des piles neuves dépassent légèrement leur tension nominale, ce qui pousse encore un peu plus haut.

Les deux masses

Le DF Player a deux GND. Si vous utilisez la sortie DAC, servez-vous de l'un pour l'alimentation et de l'autre pour la masse de votre sortie audio. Oui, ce sont censées être les mêmes, et on pourrait les relier : n'en faites rien. Le circuit du DFPlayer est très bruyant, et ces fuites se retrouvent dans le son. Il faut donc bien séparer les deux.

Sur un circuit imprimé, cela se traduit concrètement ainsi : le GND de l'alimentation peut parfaitement rejoindre un plan de masse commun à toute la carte, c'est même souhaitable. En revanche, la masse audio doit rester une piste dédiée, fine et directe, sans plan de masse autour d'elle. Un grand plan de cuivre relié à la masse audio se comporte comme une antenne et ramène tous les parasites du circuit numérique dans le signal : c'est la recette du buzz garanti.

Le découplage

Toujours pour la sortie DAC, ajoutez au plus près physiquement du DF Player, entre le + et le - de son alimentation :

  • un condensateur électrolytique de 1000 µF (attention à bien le polariser)
  • un condensateur céramique de 100 nF

Le gros condensateur encaisse les appels de courant de l'amplificateur, le petit filtre les parasites haute fréquence. Les deux sont utiles, ils ne font pas le même travail.

Les protections

  • Une résistance de 1 kOhm en série sur la broche RX, entre le TX de l'Arduino et le RX du DF Player. Elle limite les parasites de la liaison série, et surtout elle protège une entrée prévue pour 3,3 V d'un signal qui sort en 5 V. Pour faire les choses dans les règles, un pont diviseur (1 kOhm en série puis 2 kOhms vers la masse) est encore plus propre.
  • Deux résistances de 27 Ohms / 1 W en série sur la sortie amplifiée, dans un cas bien précis : quand on fait sortir le 3 W amplifié sur une prise jack. Le montage est alambiqué, j'en conviens, mais il évite une catastrophe. La sortie SPK travaille en pont, aucune de ses deux bornes n'est à la masse. Or l'insertion d'une fiche mono dans un jack stéréo court-circuite deux contacts, et donc les deux bornes de l'ampli. Les résistances encaissent ce court-circuit à la place du module. À ne pas oublier si vos utilisateurs risquent de brancher n'importe quelle fiche, sinon risque fatal pour l'ampli du DFPlayer.

Et si l'alimentation est faiblarde ou partagée avec des accessoires gourmands (relais, écrans, servos), prévoyez une seconde alimentation pour ces derniers, avec la masse commune au module.

Les sorties audio

Contrairement à une idée répandue, les deux sorties ne s'excluent pas : l'amplificateur est câblé en permanence derrière le convertisseur, sans le moindre commutateur interne. Rien n'empêche donc d'avoir un haut-parleur sur SPK et une sortie ligne sur DAC en même temps.

Deux réserves quand même. D'abord, un ampli qui travaille pompe du courant et repollue le DAC, donc pour une écoute soignée, mieux vaut ne rien brancher sur SPK. Ensuite, le module ne coupe pas le haut-parleur quand on insère un jack : si vous voulez ce comportement, il faut un jack à contact de coupure, qui ouvre lui-même le circuit du HP.

La sortie Ligne (DAC)

Les broches "DAC_L" et "DAC_R" délivrent un signal de niveau ligne, en vraie stéréo, destiné à un casque, un ampli externe ou une entrée ligne. C'est par là que le DFR0299 donne le meilleur de lui-même.

J'ai mesuré sa réponse en fréquence en lui faisant lire un bruit blanc (spectre plat) au volume maximum : elle est plate du grave à l'aigu, et c'est aussi la plus forte de toutes les autres versions que j'ai testées, qui étaient toutes des clones. La référence, tout simplement.

Réponse de la sortie Line au bruit blanc : DFR0299, plate et pleine

La sortie amplifiée (SPK)

Les broches "SPK_1" et "SPK_2" attaquent directement un haut-parleur ou un résonateur, grâce à l'amplificateur embarqué : 3 Watts sous 4 à 8 Ohms. Préférez 8 Ohms, qui tire moins de courant.

Attention, cette sortie est mono : elle somme les deux canaux (gauche + droite). Rien ne se perd, mais la stéréo disparaît. Autre point à connaître : il ne faut pas relier le haut-parleur à la masse, ce sont les deux broches "SPK" qui l'alimentent, en pont.

Un mot sur la puissance annoncée : 3 Watts, c'est la valeur théorique sous 4 Ohms avec une alimentation généreuse. Sous 8 Ohms, ou avec trois piles fatiguées, vous obtiendrez nettement moins. C'est amplement suffisant pour une boîte à sons ou un cartel de musée, pas pour sonoriser une salle.

Le volume

Sans microcontrôleur, le volume se règle avec un potentiomètre de 500 Ohms à 10 kOhms, logarithmique de préférence, placé en sortie. Pour un montage stéréo, il en faut deux, ou un double. En pilotage série, le volume se règle par logiciel, de 0 à 30.

Notez que le réglage logiciel agit avant le convertisseur :

  • baisser beaucoup le volume par commande série dégrade la dynamique. Pour une écoute discrète et propre, mieux vaut laisser le volume numérique assez haut et atténuer en analogique, au potentiomètre ou sur l'ampli suivant.
  • modifier le volume par commande série durant une lecture génère des bruits électroniques.

L'égaliseur

Le DFR0299 embarque 6 égalisations : Normal, Pop, Rock, Jazz, Classic et Bass. Elles sont utiles pour rattraper un petit haut-parleur ou dégrossir un timbre sans retoucher les fichiers.

Mais elles ne s'appliquent qu'aux MP3 : sur un fichier WAV, aucun EQ n'a d'effet. C'est une limite du décodeur, pas un réglage caché : si votre projet a besoin d'égalisation, encodez vos sons en MP3.

Les 6 égaliseurs superposés, mesurés sur la sortie Line

J'ai mesuré l'action réelle de chacune d'elles, courbes à l'appui, dans le dossier consacré aux égaliseurs du DF Player.

La carte et les fichiers

C'est ici que se joue 90 % des problèmes rencontrés avec ce lecteur. Le DFPlayer est sensible : respectez ces indications à la lettre, à la majuscule et à l'espace près.

Le support

Carte MicroSD ou clé USB, toujours formatée avant chaque nouvel ajout ou modification de son contenu, en "FAT16" ou "FAT32". Nommez votre support "SD", sans espace ni caractère spécial.

Le fabricant annonce une capacité maximale de 32 Go. J'ai tout de même essayé une MicroSD de 64 Go : elle a parfaitement fonctionné. C'est donc possible, mais c'est hors spécifications, sans garantie que le prochain module ou le prochain firmware se comporte pareil. Pour un projet que vous installez chez un client ou dans un musée, restez dans les clous.

Évitez les cartes bas de gamme : une mauvaise carte peut générer un bourdonnement, empêcher la lecture, voire faire chauffer le lecteur. Une petite carte de marque, lente et modeste, vaut mieux qu'une grosse carte sans nom.

Les formats

MP3 de préférence, ou WAV en 16 bits / 48 kHz maximum. Au-delà, le son devient "robotique" ou saturé. Pour les MP3, visez une bonne qualité : 320 kbit/s.

Le WAV a un avantage : pas de compression, donc pas de latence de décodage ni de blanc au démarrage. Il a deux inconvénients : des fichiers bien plus lourds, et aucun égaliseur disponible. À vous de choisir selon le projet.

Le nommage

  • Nommez vos fichiers 0001, 0002, etc. (avec le .mp3 ou .wav à la fin, bien entendu)
  • Nommez-les dans un dossier de votre ordinateur, dans le bon ordre, avant de les déposer sur votre support. Ne les renommez JAMAIS une fois qu'ils y sont.

Sachez qu'en réalité, d'autres noms de fichiers fonctionnent aussi : le DFPlayer sait très bien lire un "orage-lointain.mp3". Mais comme il travaille par numéro d'ordre et non par nom, vous perdez tout repère dès que le projet grandit. Je conseille donc fortement la numérotation à quatre chiffres : c'est le seul moyen de savoir, six mois plus tard, quel bouton lance quel son.

Les dossiers numérotés

Le module comprend plusieurs organisations de la carte, et c'est elle qui détermine la commande à utiliser :

  • À la racine : les fichiers sont appelés par leur numéro d'ordre de copie. Le plus simple, le plus piégeux.
  • Dossiers numérotés : "/01/001.mp3" à "/99/255.mp3". Deux chiffres pour le dossier, trois pour le fichier. C'est la structure à privilégier dès qu'on a plusieurs familles de sons, car on appelle précisément le fichier 4 du dossier 15, sans dépendre de l'ordre de copie. Jusqu'à 99 dossiers de 255 fichiers chacun, et c'est bien ici que s'applique la limite des 255.
  • Dossier "mp3" : "/mp3/0001.mp3" et suivants, quatre chiffres. Un dossier unique, appelé par une commande dédiée, qui accepte bien plus de fichiers que les dossiers numérotés : l'index va jusqu'à 2999, comme à la racine. C'est donc la bonne structure pour une grosse bibliothèque à plat.
  • Dossier "advert" : "/advert/0001.mp3". Le plus méconnu, et le plus malin. Un fichier de ce dossier interrompt la lecture en cours, se joue, puis rend la main au morceau interrompu, qui reprend là où il en était. Idéal pour une annonce par-dessus une ambiance, un bip de confirmation, une voix de guidage. Il ne s'appelle pas comme les autres : il faut passer par la fonction advertise(), décrite plus bas dans la partie consacrée au pilotage en série.

Une remarque de bon sens : ne mélangez pas les organisations sur une même carte tant que vous n'êtes pas à l'aise. Choisissez-en une et tenez-vous-y.

L'ordre de copie

Voici la subtilité la moins intuitive de ce lecteur : il ne lit pas les fichiers par leur nom, mais par leur ordre d'écriture sur le support. Si vous demandez le fichier 3, il ne lancera pas "0003" mais le troisième son copié sur la carte. Il faut donc insérer les fichiers les uns après les autres, du premier au dernier, sur une carte fraîchement formatée.

Et si deux fichiers ne vous servent à rien mais qu'il vous faut le "0003" en troisième position, mettez n'importe quels sons aux places 0001 et 0002.

La raison est simple : le module lit la table d'allocation FAT dans l'ordre où elle a été remplie, pas dans l'ordre alphabétique que votre système d'exploitation vous affiche joliment. C'est aussi pour cela qu'un glisser-déposer de plusieurs fichiers d'un coup donne un résultat imprévisible : le système les copie dans l'ordre qui l'arrange.

Le ménage, indispensable

Une fois les fichiers copiés, les systèmes d'exploitation ont la fâcheuse habitude d'y déposer des fichiers invisibles, que le DF Player, lui, voit très bien et compte comme des pistes.

  • Sur PC : activez l'option "Afficher les fichiers et dossiers cachés" et supprimez ceux présents sur votre support.
  • Sur Mac : ouvrez le Finder > Applications > Utilitaires > Terminal, collez la commande ci-dessous ("SD" étant le nom de votre support) et appuyez sur Entrée. Le Terminal va indiquer que ça n'a pas fonctionné, mais pourtant si.
dot_clean /Volumes/SD

Les coupables habituels s'appellent ".DS_Store" et "._0001.mp3" sur Mac, "System Volume Information" et la corbeille sur Windows. Éjectez ensuite votre support proprement, remettez-le dans le module, et testez.

Lire sur une clé USB

Avec un peu de bricolage, on peut souder une prise USB type A sur le DF Player pour lire les fichiers depuis une clé : il suffit de relier les D- et D+ de la prise à ceux du lecteur. Tout le reste fonctionne exactement pareil, avec les mêmes règles de formatage et de nommage.

GOBSVwGngQQ

Le même montage est possible en USB type C, bien plus actuel, mais celui-ci est un peu plus exigeant et réclame quelques résistances supplémentaires.

Petit bonus : quand les deux supports sont présents, le module peut basculer de l'un à l'autre. Par commande série, ou sans microcontrôleur avec le bouton B9 de l'entrée "AdKey 1" (celui de 100 kOhms, voir le tableau plus bas). Pratique pour une installation où l'exploitant change le contenu sans ouvrir le boîtier.

Le pilotage

Sans microcontrôleur : IO_1 et IO_2

Les broches "IO_1" et "IO_2" se contentent de deux boutons poussoirs vers la masse, sans résistance : appui court pour le fichier précédent ou suivant, appui long (plus d'une seconde) pour baisser ou monter le volume.

C'est le montage le plus rapide à réaliser : deux boutons, et vous avez déjà un lecteur utilisable. À noter que sur beaucoup de modules, "Vol-" et "Vol+" sont inversés par rapport à ce qu'on attend intuitivement.

Sans microcontrôleur : les entrées AdKey

C'est la fonction la plus sous-estimée du DF Player, et celle qui le rend vraiment autonome. Les entrées "AdKey 1" et "AdKey 2" ne lisent pas un simple contact : elles mesurent une tension. En plaçant un bouton poussoir en série avec une résistance de valeur précise, chaque bouton produit une tension différente, et le lecteur sait lequel a été pressé. Dix valeurs par entrée, donc jusqu'à 20 boutons sur un seul DF Player, sans une ligne de code.

Le schéma des boutons et résistances sur les entrées AdKey

Les actions possibles sur "AdKey 1" :

BoutonRésistanceAppui courtAppui long
B10 ΩLecture du fichier 1Boucle fichier 1
B23 kΩLecture du fichier 2Boucle fichier 2
B36,2 kΩLecture du fichier 3Boucle fichier 3
B49,1 kΩLecture du fichier 4Boucle fichier 4
B515 kΩFichier précédentVolume –
B624 kΩFichier suivantVolume +
B733 kΩLecture 1 fichier / Pause
B851 kΩLecture tous fichiers en boucle / Pause
B9100 kΩSélection du stockage (U-Disk / microSD / bus SPI)
B10200 kΩMode de lecture : interruptible ou non-interruptible

Et sur "AdKey 2", dix fichiers de plus :

BoutonRésistanceAppui courtAppui long
B110 ΩLecture du fichier 5Boucle fichier 5
B123 kΩLecture du fichier 6Boucle fichier 6
B136,2 kΩLecture du fichier 7Boucle fichier 7
B149,1 kΩLecture du fichier 8Boucle fichier 8
B1515 kΩLecture du fichier 9Boucle fichier 9
B1624 kΩLecture du fichier 10Boucle fichier 10
B1733 kΩLecture du fichier 11Boucle fichier 11
B1851 kΩLecture du fichier 12Boucle fichier 12
B19100 kΩLecture du fichier 13Boucle fichier 13
B20200 kΩLecture du fichier 14Boucle fichier 14

Quelques précisions pratiques sur ces tableaux :

  • Les valeurs de résistances sont celles de la série E24 ; prenez-les à 1 % si vous le pouvez, car c'est la tension exacte qui identifie le bouton. Une valeur approximative fait déclencher le bouton voisin.
  • Un seul bouton à la fois : deux appuis simultanés créent une résistance équivalente qui correspond à autre chose, ou à rien.
  • Les fichiers appelés sont ceux de la racine, par numéro d'ordre, avec les conséquences décrites plus haut.
  • L'appui long démarre au-delà d'une seconde environ.

La première ligne de chaque tableau explique deux comportements souvent découverts par hasard, puisqu'une résistance de 0 Ohm n'est rien d'autre qu'un fil :

  • À la mise sous tension du DF Player Mini, un court-circuit (sans résistance en série) sur "AdKey 1" lance tous les fichiers de la SD, en boucle
  • Après mise sous tension, un court-circuit de plus d'une seconde sur "AdKey 1" lance le fichier 0001, en boucle

Une alimentation, un haut-parleur, un bouton, et le tour est joué. C'est exactement le principe de mon module "Exposi'Son". Les clones, eux, ont souvent perdu cette possibilité, quand ils ne l'ont pas perdue tout entière.

En série (RX/TX)

C'est le mode le plus complet : le DF Player obéit à un Arduino ou un Raspberry Pi via ses broches RX et TX, avec la bibliothèque "DFRobotDFPlayerMini.h". Je conseille aujourd'hui la version 1.0.6, plus complète et mieux tenue à jour. La 1.0.3 reste toutefois plus stable avec certains clones : si votre module fait n'importe quoi avec la dernière version, redescendez, c'est souvent la solution.

Le montage sur plaque de prototypage, alimenté par l'USB

Le DFPlayer est alimenté par le 5V et le GND de l'Arduino. On relie ses TX, RX et Busy aux pattes D13, D12 et D11, sans oublier la résistance de 1 kOhm sur le RX. La liaison travaille à 9600 bauds, 8 bits de données, sans parité, un bit de stop.

Sur un Arduino Nano, on passe par "SoftwareSerial" pour garder le port matériel disponible pour le téléversement et le moniteur série. Sur une carte qui dispose de plusieurs UART matériels, utilisez-en un vrai : la liaison logicielle est plus fragile dès que le programme se charge.

Une fois câblé, tout devient accessible :

  • myDFPlayer.play(2); lance le deuxième fichier, loop(2) le joue en boucle
  • next() et previous() passent au fichier suivant ou précédent
  • pause() et start() suspendent et reprennent la lecture
  • stop() arrête la lecture
  • playFolder(15, 4); joue le fichier 4 du dossier 15 (dossiers de 1 à 99, fichiers de 1 à 255)
  • playMp3Folder(4); joue le fichier 0004 du dossier "mp3"
  • advertise(3); interrompt la lecture avec le fichier 0003 du dossier "advert", puis reprend
  • loopFolder(2); boucle sur tout un dossier
  • enableLoopAll() et disableLoopAll() bouclent ou non l'ensemble des fichiers
  • randomAll() joue tous les fichiers au hasard
  • readFileCounts() compte les sons à la racine de la carte, readCurrentFileNumber() indique celui en cours
  • volume(30); règle le niveau, 30 étant le maximum ; volumeUp() et volumeDown() agissent d'un cran
  • EQ() choisit l'un des 6 égaliseurs, sur les MP3 uniquement
  • outputDevice() bascule entre carte SD et clé USB
  • sleep() met le module en veille, reset() le redémarre
  • available() et readType() récupèrent les messages du lecteur, notamment la fin de piste

Bonne nouvelle sur le vrai DFR0299 : les messages TX/RX sont inaudibles dans le son, ce qui n'est pas le cas partout.

Un "plop" à l'allumage ? Ce bruit parasite survient lors de l'initialisation du DFPlayer par l'Arduino. Dans votre code, remplacez simplement :

myDFPlayer.begin(mySoftwareSerial)

par :

myDFPlayer.begin(mySoftwareSerial, true, false)

Le deuxième paramètre ("true") active les accusés de réception, et le troisième ("false") désactive le reset qui provoque le bruit. Simple et efficace !

Pensez aussi à ajouter un delay(3000); en première ligne de votre setup() : le DFPlayer doit être bien allumé avant que le reste du code ne s'exécute, faute de quoi le programme tentera des actions impossibles.

Le code complet, commenté ligne à ligne, est dans mon dossier "Fabriquer une boite à sons avec un Arduino et un DFPlayer".

Se faire aider par une IA

Un conseil que je donne sans réserve : faites-vous assister par une intelligence artificielle pour la partie programmation. Que vous partiez de zéro ou que vous soyez bloqué sur un message d'erreur incompréhensible, un assistant comme "Claude" ou "Claude Code" vise juste, corrige votre code, ou l'écrit entièrement à partir de votre description.

Donnez-lui le contexte : la carte utilisée, la bibliothèque et sa version, votre câblage, l'organisation de votre carte SD, et ce que doit faire l'appareil. Vous obtiendrez un programme fonctionnel en quelques minutes, et surtout des explications sur ce qu'il fait. C'est ce que j'utilise moi-même, et c'est ce qui a rendu l'électronique amateur accessible à tant de gens qui s'en croyaient incapables. Il faut savoir tirer parti des nouvelles technologies.

Une seule précaution : relisez et testez. Une IA peut inventer une fonction qui n'existe pas dans votre version de la bibliothèque. Vérifiez que ça compile, et que ça fait ce que vous vouliez.

Le protocole série en détail

Pour ceux qui veulent se passer de bibliothèque, piloter le module depuis un Raspberry Pi en Python, ou simplement comprendre ce qui circule sur le fil, voici le protocole.

Chaque commande est une trame de dix octets : un octet de début (0x7E), la version (0xFF), la longueur (0x06), la commande, l'octet d'accusé de réception (0x01 pour en demander un, 0x00 sinon), deux octets de paramètre, deux octets de somme de contrôle, et un octet de fin (0xEF). La somme de contrôle est le complément à deux de la somme des six octets centraux ; certains modules l'acceptent même absente.

Les commandes principales :

CodeActionParamètre
0x03Lire une piste par son numéro1 à 2999
0x06Régler le volume0 à 30
0x07Choisir l'égaliseur0 à 5
0x08Boucler une pistenuméro
0x09Choisir la source1 = USB, 2 = SD
0x0AMise en veille
0x0CRéinitialiser le module
0x0DReprendre la lecture
0x0EMettre en pause
0x0FLire un fichier d'un dossierdossier, fichier
0x11Boucler tous les fichiers1 = activé
0x12Lire dans le dossier "mp3"numéro
0x13Insérer une annonce ("advert")numéro
0x15Arrêter l'annonce en cours
0x16Arrêter la lecture
0x17Boucler un dossier entierdossier
0x18Lecture aléatoire
0x19Boucler la piste en cours0 = activé
0x1ACouper ou activer le DAC1 = coupé

Le module répond de son côté. Les messages les plus utiles sont 0x3D (fin de lecture d'une piste sur la carte SD, avec son numéro), 0x40 (erreur), 0x41 (accusé de réception), 0x42 (état courant), 0x43 (volume), 0x48 (nombre de fichiers) et 0x4C (piste en cours). C'est le 0x3D qui permet d'enchaîner proprement des sons sans interroger la broche "Busy".

Le tilt de début et de fin de piste

Voici un phénomène dont on parle peu, et qui m'a occupé un moment : ce petit "tilt" électronique qui se fait entendre juste avant le son et juste après, comme une petite pollution numérique. Ne le confondez pas avec le "plop" d'initialisation provoqué par l'Arduino, traité plus bas dans la partie pilotage : celui-ci est d'une autre nature.

Le voici tel qu'il s'entend, sur une suite de fichiers enchaînés. Écoutez juste avant et juste après chaque son :

Rassurez-vous, il n'est pas aussi envahissant en usage normal : pour cet enregistrement, j'ai volontairement réglé le volume du lecteur sur 1/30 afin que le tilt prenne toute la place et devienne parfaitement audible. Au volume où vous écouterez réellement vos sons, il reste discret — mais il est bien là.

Il est intrinsèque au DFPlayer : il s'entend sans Arduino et sans la moindre liaison série, sur un module parfaitement seul, et il est indépendant du volume numérique. Son intensité, elle, se joue à chaque mise sous tension : parfois inaudible, parfois nette, et elle reste ensuite rigoureusement identique pour tous les fichiers jusqu'au prochain débranchement. Un reset logiciel n'y change rien, seule une coupure franche de l'alimentation rebat les cartes.

J'ai exploré puis écarté plusieurs pistes, mesures à l'appui : le contenu et l'encodage des fichiers, les liaisons numériques avec l'Arduino, la carte qui porte le module, et surtout l'alimentation. Sur ce dernier point j'ai longtemps cru tenir la réponse, mais un interrupteur placé juste devant le lecteur, actionné une seconde après que le rail 5 V soit parfaitement établi, ne change rien du tout. Ni un soft-start, ni un filtrage, ni un régulateur dédié n'y feront quoi que ce soit.

Pour comprendre, j'ai fini par enregistrer la sortie DAC et regarder la forme d'onde de près. Voici, isolé et normalisé, le doublé que l'on entend entre deux pistes : le tilt de fin, le silence, puis le tilt de début.

Ce n'est pas un claquement isolé, mais un petit bourdonnement très bref, une trentaine de millisecondes, qui apparaît en montant puis s'éteint en descendant — alors que le son du fichier, lui, démarre et s'arrête net. Sa signature est franchement numérique, et une fois la lecture complètement arrêtée, la sortie redevient parfaitement propre.

Mon interprétation : le codec possède une horloge ou une machine d'état interne qui tourne à sa propre cadence, et dont l'activité fuit dans la sortie audio. Quand le module active puis désactive son étage de sortie, il le fait progressivement — et c'est cette montée en puissance qui rend ce parasite audible pendant un court instant, aux deux extrémités de chaque lecture. Le point de fonctionnement de cet étage se fige au moment de la mise sous tension, ce qui explique la loterie. C'est à l'intérieur d'une puce non documentée : il n'y a rien à y corriger.

La parade la plus efficace tient au réglage du niveau : laissez le volume numérique au maximum et réglez le niveau de sortie en analogique, avec un potentiomètre entre le DAC et votre ampli. L'amplitude du tilt ne bouge pas d'un iota avec le volume numérique, alors qu'elle suit fidèlement un atténuateur analogique : à niveau d'écoute égal, vous gagnez ainsi plusieurs décibels de propreté, sans ajouter le moindre composant. Accessoirement, supprimer le silence en tête et en queue de vos fichiers ne le masquera pas — il se produit avant et après la lecture, pas pendant — mais raccourcit d'autant le moment où on l'entend.

Les pannes courantes

Voici les symptômes que l'on me rapporte le plus souvent, et leur cause habituelle :

  • Le lecteur de carte ne fonctionne pas et/ou chauffe ? Débranchez tout immédiatement, puis changez d'alimentation et de carte MicroSD. Oui, parfois, une carte bas de gamme peut tout griller.
  • Un son "robotique" ou saturé ? Format de fichier inadapté : MP3, ou WAV en 16 bits / 48 kHz maximum.
  • Des "clics" ou bruits entre les fichiers ? Reconvertissez vos fichiers en MP3 320 kbit/s avec un convertisseur propre, comme "Switch" de NCH (gratuit).
  • Sons mélangés ou décalés ? Reformatez, recopiez dans l'ordre, et ne renommez jamais les fichiers une fois sur le support. Il arrive aussi qu'on attende le premier fichier et qu'on entende le dernier : décalez alors tout d'un rang.
  • Un bourdonnement ? Allumez le module, lancez un fichier au volume minimum, puis éjectez la carte à chaud. Si le buzz s'arrête, c'est elle. Sinon, changez d'alimentation, ou nettoyez les connecteurs du DF Player et de son support, qui s'encrassent plus vite qu'on ne le croit.
  • Rien ne se passe du tout ? Vérifiez que le TX de l'un va bien au RX de l'autre, et non TX sur TX. C'est l'erreur la plus fréquente, et elle ne produit aucun symptôme visible.
  • Le premier son est tronqué ? Le module met environ 1,5 à 3 secondes à démarrer. Laissez-lui ce temps avant la première commande.
  • Le Nano n'est pas reconnu par l'IDE ? Utilisez la version 1.0.3 de la bibliothèque "DFRobotDFPlayerMini.h", et essayez les boards "ATmega328P" avec ou sans "Old bootloader".
  • Le module redémarre quand le son est fort ? L'alimentation s'effondre sous l'appel de courant de l'ampli. Condensateur de 1000 µF au plus près, et alimentation plus costaude.

Vous possédez l'un de mes modules ? J'ai regroupé les manipulations pas à pas et les cas particuliers propres à chacun d'eux dans un dossier dédié à la résolution des problèmes.

Bilan

Qualités

  • Lit les cartes MicroSD (dites parfois "TF") et les clés USB
  • Lit le MP3 (8 à 320 kbit/s) et le WAV
  • Bonne qualité audio, réponse plate et niveau élevé
  • Sortie Ligne en vraie stéréo
  • Sortie amplifiée 3 W sous 4 à 8 Ohms, utilisable en même temps que la sortie Ligne
  • 6 EQ possibles sur le MP3 (plus d'infos)
  • Jusqu'à 20 boutons via les entrées "AdKey", sans microcontrôleur
  • Dossier "advert" qui interrompt et reprend la lecture
  • Sortie "Busy" pour connaître l'état de lecture
  • Communique en RX/TX grâce à "DFRobotDFPlayerMini.h"
  • Les messages TX/RX sont inaudibles
  • Encombrement minuscule et pas de 2,54 mm, compatible plaque de prototypage

Limites

  • Aucun EQ possible sur le WAV (plus d'infos)
  • Sortie Speaker en Mono, sommation des deux canaux (gauche + droite)
  • Ordre de lecture dicté par l'ordre de copie, jamais par les noms de fichiers
  • Un seul son à la fois : pas de mélange de pistes
  • Entrées et sorties en 3,3 V, adaptation nécessaire avec un Arduino en 5 V
  • 32 Go annoncés au maximum, et aucun accès au contenu de la carte sans la retirer
  • Très sensible à la qualité de la carte et de l'alimentation
  • Prix deux fois supérieur à celui des clones, et disponibilité plus rare chez les revendeurs européens
  • Tilt de début et de fin de piste

Et les clones ?

Ce player est légalement cloné par plusieurs entreprises, et les copies ne fonctionnent pas toutes pareil, voire pas du tout. Perte de la stéréo, grave effondré, entrées "AdKey" mortes, messages série audibles dans le son : j'ai comparé quatre versions, mesures à l'appui, dans le dossier "DF Player et ses clones". Je pense aussi aux "MP3-TF-16P" et autres "BY8001-16P" : fuyez-les !

Conclusion

Pour quelques euros, le DFR0299 fait tout ce qu'on lui demande : il lit proprement, il s'entend bien avec un Arduino, et il sait aussi se passer de lui. C'est aujourd'hui le seul que j'utilise dans mes créations.

Vous l'utilisez dans vos projets ? Vous avez des astuces, des suggestions ou des questions ? Contactez-moi ou commentez ci-dessous ce dossier.

♥ - Joseph SARDIN - Fondateur et Sonothécaire de BigSoundBank.com et LaSonotheque.org - Contact