Note

Bonjour, bienvenue dans la communauté des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder sur Facebook ! Plongez dans l’univers du Raspberry Pi, de l’Arduino et de l’ESP32 avec d’autres passionnés.

Pourquoi nous rejoindre ?

  • Support d’experts : Résolvez les problèmes après-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.

  • Apprendre et partager : Échangez des astuces et des tutoriels pour améliorer vos compétences.

  • Aperçus exclusifs : Bénéficiez d’un accès anticipé aux annonces de nouveaux produits et aux avant-premières.

  • Réductions spéciales : Profitez de réductions exclusives sur nos derniers produits.

  • Promotions festives et cadeaux : Participez à des concours et à des promotions festives.

👉 Prêt à explorer et à créer avec nous ? Cliquez sur [Ici] et rejoignez-nous dès aujourd’hui !

7.5 Lecteur MP3 avec carte SD

Bienvenue dans le monde passionnant de la musique avec votre ESP32 ! Ce projet vous permet de transformer votre ESP32 en un lecteur de musique personnalisé, en plus de ses capacités de microcontrôleur. Imaginez entrer dans votre pièce et entendre votre morceau préféré joué directement depuis ce petit appareil. C’est la puissance que nous vous apportons aujourd’hui.

Composants nécessaires

Pour ce projet, nous avons besoin des composants suivants.

Il est certainement pratique d’acheter un kit complet, voici le lien :

Nom

ÉLÉMENTS DANS CE KIT

LIEN

Kit de démarrage ESP32

320+

ESP32 Starter Kit

Vous pouvez également les acheter séparément aux liens ci-dessous.

INTRODUCTION DES COMPOSANTS

LIEN D’ACHAT

ESP32 carte

Acheter

Extension de caméra ESP32

ACHETER

Plaque d’essai

Acheter

Fils de connexion

Acheter

Résistance

Acheter

Module Amplificateur Audio et Haut-parleur

-

Étapes de fonctionnement

  1. Insérez votre carte SD dans l’ordinateur à l’aide d’un lecteur de cartes, puis formatez-la. Vous pouvez vous référer au tutoriel à Comment formater la carte SD ?.

  2. Copiez votre fichier MP3 préféré sur votre carte SD.

    ../../_images/mp3_music.png
  3. Insérez la carte SD dans le slot SD de la carte d’extension.

    ../../_images/insert_sd.png
  4. Construisez le circuit.

    Comme il s’agit d’un amplificateur mono, vous pouvez connecter IO25 à la broche L ou R du module amplificateur audio.

    La résistance de 10K est utilisée pour réduire le bruit haute fréquence et diminuer le volume audio. Elle forme un filtre passe-bas RC avec la capacité parasite du DAC et de l’amplificateur audio. Ce filtre diminue l’amplitude des signaux haute fréquence, réduisant ainsi efficacement le bruit haute fréquence. Ainsi, ajouter la résistance de 10K rend la musique plus douce et élimine les bruits haute fréquence indésirables.

    Si la musique de votre carte SD est déjà douce, vous pouvez retirer ou remplacer la résistance par une valeur plus petite.

    ../../_images/7.3_bluetooth_audio_player_bb.png
  5. Connectez l’ESP32 carte à l’ordinateur à l’aide du câble USB.

    ../../_images/plugin_esp32.png
  6. Modifiez le code.

    Modifiez la ligne de code file = new AudioFileSourceSD_MMC("/To Alice.mp3"); pour refléter le nom et le chemin de votre fichier.

    Note

    • Ouvrez le fichier 7.5_mp3_player_sd.ino sous le chemin esp32-starter-kit-main\c\codes\7.5_mp3_player_sd. Ou copiez ce code dans l”Arduino IDE.

    • Après avoir sélectionné la carte (ESP32 Dev Module) et le port approprié, cliquez sur le bouton Upload.

    • Toujours afficher « Unknown COMxx » ?

    • La bibliothèque ESP8266Audio est utilisée ici, référez-vous à Installation manuelle pour un tutoriel d’installation.

    Avertissement

    Si vous utilisez une carte de développement ESP32 version 3.0.0 ou supérieure, vous pouvez rencontrer des erreurs lors du processus de compilation. Ce problème est généralement dû au fait que les versions plus récentes de la carte ne prennent plus en charge la bibliothèque ESP8266Audio. Pour exécuter correctement cet exemple, il est recommandé de rétrograder la version du firmware de votre carte ESP32 à 2.0.17. Après avoir terminé cet exemple, mettez à jour vers la dernière version.

    ../../_images/version_2.0.17.png
  7. Sélectionnez le port et la carte appropriés dans l’Arduino IDE et téléchargez le code sur votre ESP32.

  8. Après avoir téléchargé le code avec succès, vous entendrez votre musique préférée.

Comment ça marche ?

  • Le code utilise plusieurs classes de la bibliothèque ESP8266Audio pour lire un fichier MP3 depuis une carte SD via I2S :

    #include "AudioFileSourceSD_MMC.h"
    #include "AudioOutputI2S.h"
    #include "AudioGeneratorMP3.h"
    #include "SD_MMC.h"
    #include "FS.h"
    
    • AudioGeneratorMP3 est une classe qui décode l’audio MP3.

    • AudioFileSourceSD_MMC est une classe qui lit les données audio depuis une carte SD.

    • AudioOutputI2S est une classe qui envoie les données audio à l’interface I2S.

  • Dans la fonction setup(), nous initialisons la carte SD, ouvrons le fichier MP3 depuis la carte SD, configurons la sortie I2S sur le DAC interne de l’ESP32, réglons la sortie en mono et démarrons le générateur MP3.

    void setup() {
        // Commencez la communication série.
        Serial.begin(115200);
        delay(1000);
    
        // Initialisez la carte SD. En cas d'échec, imprimez un message d'erreur.
        if (!SD_MMC.begin()) {
            Serial.println("Échec du montage de la carte SD !");
        }
    
        // Ouvrez le fichier MP3 depuis la carte SD. Remplacez "/To Alice.mp3" par le nom de votre fichier MP3.
        file = new AudioFileSourceSD_MMC("/To Alice.mp3");
    
        // Configurez la sortie I2S sur le DAC interne de l'ESP32.
        out = new AudioOutputI2S(0, 1);
    
        // Réglez la sortie en mono.
        out->SetOutputModeMono(true);
    
        // Initialisez le générateur MP3 avec le fichier et la sortie.
        mp3 = new AudioGeneratorMP3();
        mp3->begin(file, out);
    }
    
  • Dans la fonction loop(), nous vérifions si le générateur MP3 est en cours d’exécution. Si c’est le cas, nous continuons à le boucler ; sinon, nous l’arrêtons et imprimons « MP3 terminé » dans le moniteur série.

    void loop() {
        // Si le MP3 est en cours d'exécution, bouclez-le. Sinon, arrêtez-le.
        if (mp3->isRunning()) {
            if (!mp3->loop()) mp3->stop();
        }
        // Si le MP3 n'est pas en cours d'exécution, imprimez un message et attendez 1 seconde.
        else {
            Serial.println("MP3 done");
            delay(1000);
        }
    }