Principe
Le mini lecteur MP3 DFPlayer pour Arduino est un module MP3 de petit prix offrant une sortie simplifiée directement au haut-parleur.Le module peut être utilisé de manière autonome avec une batterie, un haut-parleur et des boutons-poussoirs, ou être utilisé en combinaison avec un Arduino ou tout autre appareil doté d'une transmission série RX / TX.
Spécifications
Taux d'échantillonnage pris en charge (kHz): 8/11,025/12/16/22.05/24/32/44.1/48 kHzSortie DAC 24 bits, prise en charge de la plage dynamique 90 dB.
Supporte les systèmes de fichiers FAT16, FAT32, 32G octet maximum.
Une variété de modes de contrôle, mode de contrôle E/S, mode série, mode de contrôle du bouton AD.
La musique peut être suspendue.
Données audio triées par dossier, prend en charge jusqu'à 100 dossiers; chaque dossier peut contenir jusqu'à 255 chansons
Volume réglable sur 30 niveaux, EQ réglable sur 6 niveaux
Brochage

Pin | Description | Note | Pin | Description | Note |
---|---|---|---|---|---|
Vcc | Tension d'entrée | DC 3,2 à 5V, typique 4,2V | BUSY | Status de lecture | 0 Lecture/1 Non lecture |
Rx | UART réception | USB- | USB- DM | ||
Tx | UART émission | USB+ | USB+ DP | ||
DAC_R | Signal casque audio droit | ADKEY_2 | AD Port2 | Déclenche le premier segment | |
DAC_L | Signal casque audio gauche | ADKEY_1 | AD Port1 | Déclenche le 5ème segment | |
SPK_1 | Speaker, Haut parleur + | Puissance inférieure à 3W | IO2 | port trigger 2 | Appui court pour lire le suivant (appui long pour augmenter le volume) |
GND | Masse | GND | Masse | ||
SPK_2 | Speaker, Haut parleur + | Puissance inférieure à 3W | IO1 | port trigger 1 | Appui court pour lire le précédent (appui long pour diminuer le volume) |

Remarque: appuyez brièvement sur le bouton avant / suivant, et appuyez longuement sur le bouton vol-, vol +
Protocole
En mode travailMode série
Prise en charge du mode de communication série asynchroneNorme de communication: 9600 bps
Bits de données : 8
Bit de stop: 1
Parité: aucune
Contrôle de flux: aucun
Chaque commande commence par un octet d'entête (toujours 0x7E), suivi d'un numéro de version (toujours 0xFF), puis de la taille de la commande (toujours 0x06).
Vient ensuite la commande elle-même (un octet), suivi d'un octet permettant d'activer ou non le retour d'informations et de deux octets de paramètres pour la commande en cours.
Pour finir, une commande se termine toujours par l'octet 0xEF
Description du format
Octet | Désignation | Commentaires | Exemple |
---|---|---|---|
0x7E | Début $S | Commande de démarrage | 0x7E |
VER | Version | Information de version toujours 0xFF | 0xFF |
LEN | Nombre d'octets | Nombre d'octets à partir d'ici jusqu'à PARA2 inclus | 0x06 |
CMD | Commande | Indique l'opération spécifique | 0x09 |
FEEDBACK | Retour de commande | Si besoin de retour, 1: retour, 0 pas de retour | 0x00 |
PARA1 | Paramètre 1 | Requête octet haut | 0x00 |
PARA2 | Paramètre 2 | Requête octet bas | 0x04 |
CHECKSUM | Checksum | Octet de vérification Pas obligatoire | 0xFE 0xEE |
0xEF | Fin $S | Commande de fin | 0xEF |
CHECKSUM=0x10000-(0xFF+0x06+0x09+0x00+0x00+0x04)=0xfeee soit DH=0xFE et DL=xEE
Commandes
CMD | Fonction | Paramètre (16bits) | |
---|---|---|---|
DATA H | DATA L | ||
0x01 | Suivant | 0x00 | 0x00 |
0x02 | Précédent | 0x00 | 0x00 |
0x03 | Piste précise | 0 à 2999 | |
0x04 | Augmente volume + | 0x00 | 0x00 |
0x05 | Baisse volume - | 0x00 | 0x00 |
0x06 | Spécifiez le volume. (0 à 30) 0: Muet, 30: Maximum (valeur initiale) | 0x00 | 0 à 0x1E |
0x07 | Spécifie égaliseur (00: valeur initiale) | 0x00 | 00: normal 01: Pop 02: Rock 03: Jazz 04: Classique 05: Basse |
0x08 | spécifie le mode de lecture Non/Répéter répertoire/Répéter musique/Aléatoire | 0x00 | 0/1/2/3 |
0x09 | Spécifie la source de lecture | 0x00 | 0: Aucun 1: clef USB 2: carte SD (SDCARD) 4: PC (AUX) 8: Mémoire flash |
0x0A | Entre en veille - faible consommation | 0x00 | 0x00 |
0x0B | Fonctionnement normal | 0x00 | 0x00 |
0x0C | Reset module | 0x00 | 0x00 |
0x0D | playback | 0x00 | 0x00 |
0x0E | Pause | 0x00 | 0x00 |
0x0F | Spécifiez le dossier et le numéro de piste et lancez la lecture. (Dossier: 01 - 99, piste: 01 - 255) | Numéro de dossier | Numéro de piste |
0x10 | Étendre la localisation du son. (Stéréo Enhancer) (00: valeur initiale désactivée) (montant de l'effet 0 à 31) 0: petit, | 00: effet OFF 01 :effet ON | Gain de 0 à 31 |
0x11 | Boucle pour toute la musique | 0x00 | 00 (arrêter la mise en boucle) 01 (commencer la mise en boucle) |
0x12 | Spécifier une chanson dans un dossier nommé MP3 | Numéro de piste octet haut | Numéro de piste octet bas |
0x13 | Insère un fichier de chanson nommé ADVERT comme une autre piste en cours de lecture | Numéro de piste octet haut | Numéro de piste octet bas |
0x14 | Spécifiez un fichier pour la lecture en boucle de pistes (jusqu'à 15 dossiers pris en charge et jusqu'à 3000 pistes prises en charge) |
4bits dossier + 4bits haut piste | 8 bits piste bas |
0x15 | Arrêtez la lecture des morceaux insérés et reprenez la lecture du morceau qui vous intéresse. | 0x00 | 0x00 |
0x16 | Arrête de jouer de la musique | 0x00 | 0x00 |
0x17 | Répéter la lecture des fichiers du dossier spécifié. | 0x00 | Numéro de dossier |
0x18 | Mélangez et lisez tous les fichiers de l'appareil. | 0x00 | 0x00 |
0x19 | Répéter (une seule piste) | 0x00 | 0x00 |
0x1A | ON/OFF de la sortie DAC | 0x00 | 0:ON 1:OFF |
0x28 | Mélangez les fichiers dans le dossier spécifié. | 0x00 | Numéro de dossier |
0x2A | Lisez tous les fichiers du dossier spécifié. | 0x00 | Numéro de dossier |
0x3A | (Notification) Périphérique inséré. - L'envoi de cette commande ne fonctionne pas - | 01: mémoire USB 02: carte SD 04 :PC (AUX) | |
0x3B | (Notification) Périphérique inséré. - L'envoi de cette commande ne fonctionne pas - | 01: mémoire USB 02: carte SD 04 :PC (AUX) | |
0x3C | (Notification) Lecture de fichiers de la clé USB. - L'envoi de cette commande ne fonctionne pas - | 01: mémoire USB 02: carte SD 04 :PC (AUX) | |
0x3C | Reste | ||
0x3D | Reste | ||
0x3E | Reste | ||
0x3F | Interroge le type du périphérique actuellement sélectionné (Notification) Type de périphérique sélectionné et initialisé. | 0x00 | 0: Aucun 1: clef USB 2: carte SD (SDCARD) 4: PC (AUX) 8: Mémoire flash |
0x40 | (Notification) Une erreur est survenue. 01: le système est dans l'état BUSY. 02: Erreur de sélection de périphérique en mode veille. 03: Erreur de réception en série. 04: erreur de somme de contrôle 05: au-delà de la plage de spécification de fichier 06: Le fichier spécifié est introuvable 07: erreur de commande | 0x00 | Numéro d'erreur |
0x41 | Réception acceptée de la commande (notification) normalement. Sélectionné par "l'indicateur de retour" de la chaîne de commande. | 0x00 | 0x00 |
0x42 | Interroger l'état actuel de l'opération. | 0: Aucun 1: clef USB 2: carte SD (SDCARD) 4: PC (AUX) 8: Mémoire flash |
00: arrêt 01: jouer 02: en pause |
0x43 | Interroger le volume actuel | 0x00 | Volume de 0x00 à 0x1E |
0x44 | Interroger le réglage actuel de l'égaliseur. | 0x00 | Valeur de l'égaliseur |
0x45 | Interroger le mode de lecture actuel 00: lecture normale. (Lecture indépendante) 01: Répétez la lecture dans le dossier. 02: Répétez la lecture d'une chanson. 03: Lecture aléatoire des pistes de l'appareil. 04: Lecture aléatoire des pistes du dossier. 05: Lire toutes les pistes du dossier. |
0x00 | Mode de lecture |
0x46 | Interroger la version du logiciel. | Numéro de version | Numéro de version |
0x47 | Interrogez le nombre total de fichiers dans la mémoire USB | nombre de fichiers octet haut | nombre de fichiers octet bas |
0x48 | Interrogez le nombre total de fichiers sur la carte SD. | nombre de fichiers octet haut | nombre de fichiers octet bas |
0x49 | Interrogez le nombre total de fichiers dans la mémoire flash. | nombre de fichiers octet haut | nombre de fichiers octet bas |
0x4A | - Réservé - | ||
0x4B | Interroger la position actuelle du fichier de la clé USB | 4bits dossier + 4bits haut piste | 8 bits piste bas |
0x4C | Interroger la position actuelle du fichier de la carte SD | 4bits dossier + 4bits haut piste | 8 bits piste bas |
0x4D | Interroger la position actuelle du fichier de la mémoire flash | 4bits dossier + 4bits haut piste | 8 bits piste bas |
0x4E | Interroge le nombre total de pistes dans le dossier spécifié. (Répondre) Nombre de pistes. |
0x00 | 0x00 |
0x4F | Interrogez le nombre de dossiers du périphérique. | 0x00 | 0x00 |
Utilisation
Initialisation
Procédure d'opération de port série
Précautions pour l’utilisation du port série nécessitant un délai.- 1. Après avoir allumé la puce, il faut d’abord environ 1 à 1,5 seconde pour l’opération d’initialisation.
Le module attendra automatiquement la lecture de l'appareil. Ordre (clé USB -> carte SD -> mémoire flash)
Si l'appareil n'est pas en ligne, il passe automatiquement à l'appareil suivant.
Les données relatives à l’initialisation sont transmises à la fin de l’initialisation.
Les utilisateurs peuvent ignorer ces données. - 2. Après avoir spécifié le périphérique à lire, un délai de 200 ms est nécessaire, après quoi une commande liée à la spécification de piste, etc. est transmise.
- 3. La puce ayant un système de fichiers, la vitesse de réponse est inférieure à 50 ms pour moins de 1 000 fichiers dans des conditions normales.
Sur 3 000 fichiers ou plus, la vitesse de commutation du système de fichiers ralentit légèrement et la vitesse de réponse varie entre 100 ms et 1 seconde. - 4. Puisqu'il s'agit d'un traitement périodique pour le traitement du port série à l'intérieur de la puce, lors de la transmission de commandes consécutives,
il est nécessaire de retarder l'intervalle de 20 ms. Sinon, l'instruction précédente est écrasée et ne peut pas être exécutée.
Les données d'initialisation du module, y compris les périphériques en ligne, telles que l'envoi 7E FF 06 3F 00 00 01 xx xx EF, DL = 0x01 décrivent uniquement le disque USB en ligne lors de la mise sous tension.
D'autres données figurent dans le tableau ci-dessous:
USB en ligne | 7E FF 06 3F 00 00 01 xx xx EF |
SD Card en ligne | 7E FF 06 3F 00 00 02 xx xx EF |
PC en ligne | 7E FF 06 3F 00 00 04 xx xx EF |
FLASH en ligne | 7E FF 06 3F 00 00 08 xx xx EF |
USB & SD Card en ligne | 7E FF 06 3F 00 00 03 xx xx EF |
Données renvoyées du fichier en cours de lecture
USB finish playback 1st track | 7E FF 06 3C 00 00 01 xx xx EF |
USB finish playback 2nd track | 7E FF 06 3C 00 00 02 xx xx EF |
SD card finish playback 1st track | 7E FF 06 3D 00 00 01 xx xx EF |
SD card finish playback 2nd track | 7E FF 06 3D 00 00 02 xx xx EF |
Flash finish playback 1st track | 7E FF 06 3E 00 00 01 xx xx EF |
Flash finish playback 2nd track | 7E FF 06 3E 00 00 02 xx xx EF |
La gestion des fichiers
L'index correspond au numéro du fichier dans la liste de tous les fichiers sur la carte SD (sous dossiers inclus), triés par date de création physique (le moment où vous copier / coller le fichier ou que vous le créer directement sur la carte).Le premier fichier que vous copié sur la carte SD est le numéro 1, le second est le numéro 2, etc.
Pour la partie MP3 (Commande 0x12):
Le(s) fichier(s) dans le dossier MP3 DOIT être nommé par un identifiant numérique à quatre chiffres.Pour les numéros de fichiers inférieurs à 1000, un, deux ou trois 0 doit être ajouté pour obtenir quatre chiffres.
Exemple : 0000.mp3, 0001.mp3, 0002.mp3, 0015.mp3, 0025.mp3, 0100.mp3, 0125.mp3, 1000.mp3, 9999.mp3.
N.B. Le numéro de fichier va de 0000 à 9999. Il n'est pas possible d'avoir plus de 10000 fichiers par dossier avec cette fonction, et c'est déjà pas mal
PS: vous pouvez ajouter du texte APRÈS le nombre. Exemple : 0042_smooth_criminal.mp3
C'est la solution la plus simple à mettre en œuvre. Il suffit de créer un dossier MP3 (ou mp3, peut importe) à la racine de la carte SD et de renommer chaque fichier avec un nombre à quatre chiffres en début de nom.
Pas d'index de fichier à gérer, pas de mauvaise surprise avec la convention de nommage, ça marche.
Exemples
Choisir microSD card 7E FF 06 09 00 00 02 EF Spécifiez le nom du dossier 01 et le nom de fichier 001xxx.mp3 7E FF 06 0F 00 01 01 EF Spécifiez le nom du dossier 11 et le nom de fichier 100xxx.mp3 7E FF 06 0F 00 0B 64 EF Spécifiez le nom du dossier 99 et le nom de fichier 001xxx.mp3 7E FF 06 0F 00 63 01 EF Lire le fichier 0001 (nom de le fichier) dans le dossier MP3 7E FF 06 12 00 00 01 FE E8 EF Lire le fichier 0002 (nom de le fichier) dans le dossier MP3 7E FF 06 12 00 00 02 FE E7 EF Lire le fichier 0255 (nom de le fichier) dans le dossier MP3 7E FF 06 12 00 00 FF FD EA EF Lire le fichier 1999 (nom de le fichier) dans le dossier MP3 7E FF 06 12 00 07 CF FE 13 EF Lire le fichier 3000 (nom de le fichier) dans le dossier MP3 7E FF 06 12 00 0B B8 FE 26 EF Lire le fichier 0255 (nom de le fichier) dans le dossier 0001 7E FF 06 14 00 10 FF FD D8 EF 0x1 0FF 4bits+12bits Lire le fichier 1999 (nom de le fichier) dans le dossier 0001 7E FF 06 14 00 17 CF FE 01 EF 0x1 4CF 4bits+12bits Lire le fichier 0001 (nom de le fichier) dans le dossier 0012 7E FF 06 14 00 C0 01 FE 26 EF 0xC 001 4bits+12bits Lire le fichier 0255 (nom de le fichier) dans le dossier 0012 7E FF 06 14 00 C0 FF FD 28 EF 0xC 0FF 4bits+12bits Lire le fichier 1999 (nom de le fichier) dans le dossier 0012 7E FF 06 14 00 C7 CF FD 51 EF 0xC 7CF 4bits+12bits Début de la boucle 7E FF 06 11 00 00 01 EF Stop de la boucle 7E FF 06 11 00 00 00 EFLe minimum :
void send_mp3(byte command, byte data_h, byte data_l, unsigned long cmd_delay) { Serial.write((byte)0x7E); Serial.write((byte)0xFF); Serial.write((byte) 0x06); Serial.write(command); Serial.write((byte) 0x00); Serial.write((byte) data_h); Serial.write((byte) data_l); Serial.write((byte) 0xEF); delay(cmd_delay); //200ms } void setup() { send_mp3(0x0C, 0, 0, 1500); //Reset module send_mp3(0x09, 0, 2, 200); //0x02 SDCARD send_mp3(0x06, 0, 15, 20); //Volume à 15 send_mp3(0x03, 0, 1, 20); //Lit le premier fichier 0x00 01 } void loop() { }