Search Code

ESP32 Tutorial 41/55 - MP3-speler met behulp van Micro SD-kaart | SunFounder's ESP32 IoT-leerkit

ESP32 Tutorial 41/55 - MP3-speler met behulp van Micro SD-kaart | SunFounder's ESP32 IoT-leerkit

In deze tutorial maken we een MP3-speler met behulp van de ESP32-microcontroller en een micro-SD-kaart. De ESP32 leest audiobestanden die op de micro-SD-kaart zijn opgeslagen en geeft het geluid weer via een audioversterker en luidspreker. Dit project combineert verschillende componenten, waaronder de ESP32, een audioversterker en een micro-SD-kaart, zodat je op een eenvoudige manier muziek kunt afspelen.

Gedurende het proces bespreken we de benodigde bedrading, het coderen en het oplossen van veelvoorkomende problemen. Voor meer visuele begeleiding kun je zeker de bijbehorende video bekijken (in video op 00:00).

Hardware uitgelegd

De belangrijkste componenten die in dit project worden gebruikt, zijn de ESP32-microcontroller, een micro-SD-kaart, een audioversterker en een luidspreker. De ESP32 is een krachtige microcontroller met ingebouwde Wi-Fi- en Bluetooth-mogelijkheden, waardoor hij ideaal is voor IoT-projecten. Hij zorgt voor de verwerking en aansturing van de audioweergave.

De micro-SD-kaart wordt gebruikt om audiobestanden in MP3-formaat op te slaan. Deze wordt verbonden met de ESP32 en stelt het programma in staat om de bestanden te lezen en audiogegevens naar de versterker te sturen. De audioversterker neemt het digitale signaal van de ESP32 en versterkt dit om de luidspreker aan te sturen, zodat het geluid hoorbaar wordt.

Datasheetdetails

FabrikantSunFounder
OnderdeelnummerESP32
Logica/IO-spanning3,3 V
Voedingsspanning5 V
Uitgangsstroom (per kanaal)2 A max
Piekstroom (per kanaal)3 A max
PWM-frequentierichtlijntot 40 kHz
Ingangslogische drempels0,3 x VCC (laag), 0,7 x VCC (hoog)
Spanningsval / RDS(on) / verzadiging0,15 V
Thermische limieten85 °C
BehuizingWROOM-32
Opmerkingen / variantenCompatibel met verschillende audiobibliotheken

  • Zorg ervoor dat de micro-SD-kaart is geformatteerd als FAT32.
  • Gebruik een weerstand voor het aansluiten van de audioversterker om vervorming te voorkomen.
  • Houd de voedingsaansluitingen stabiel om onderbrekingen te voorkomen.
  • Controleer de bedrading op losse verbindingen voordat u het systeem inschakelt.
  • Bewaak de seriële uitvoer voor foutopsporingsinformatie.
  • Gebruik luidsprekers met lage impedantie voor een betere geluidskwaliteit.
  • Zorg voor de beste prestaties dat de ESP32 niet overbelast wordt met taken tijdens het afspelen van audio.

SD_MMC wordt gebruikt voor toegang tot de micro-SD-kaart, en AudioOutputI2S wordt gebruikt voor audio-uitvoer.

Bedradingsinstructies

ESP32-40-micro-sd-card-1
esp32-41-play-music-wriing

Om de componenten met elkaar te verbinden, begint u met het aansluiten van de voeding. Sluit de 5 V van de ESP32 aan op de VCC-pin van de audioversterker. Verbind vervolgens de aardingspin van de ESP32 met de aardingspin van de versterker. De audio-uitgangspin van de ESP32, meestal GPIO25, moet via een weerstand van 10 kΩ worden verbonden met de ingangspin van de versterker.

Voor de luidspreker sluit u deze aan op de uitgangspinnen van de audioversterker. Merk op dat de luidspreker geen polariteit heeft, dus u kunt deze op beide manieren aansluiten. Plaats de micro-SD-kaart in de daarvoor bestemde sleuf op de ESP32. Controleer alle verbindingen zorgvuldig voordat u het systeem inschakelt.

Codevoorbeelden en uitleg

In de meegeleverde code beginnen we met het opnemen van de benodigde bibliotheken voor audioweergave en SD-kaarttoegang. De belangrijkste identificatoren zijn mp3, file en out, die respectievelijk de MP3-generator, de audiobestandsbron en de audio-uitvoer vertegenwoordigen.

AudioGeneratorMP3 *mp3;
AudioFileSourceSD_MMC *file;
AudioOutputI2S *out;

Hier declareren we pointers voor de MP3-generator en de audiobestandsbron. In de setup()-functie initialiseren we de seriële communicatie en de SD-kaart.

void setup() {
  Serial.begin(115200);
  if (!SD_MMC.begin()) {
    Serial.println("SD-kaart koppelen mislukt!");
  }
  file = new AudioFileSourceSD_MMC("/To Alice.mp3");
  out = new AudioOutputI2S(0, 1);
}

In dit fragment controleren we of de SD-kaart succesvol is gekoppeld. Als dit mislukt, wordt een foutmelding afgedrukt. Vervolgens stellen we het MP3-bestand en de audio-uitvoermodus in.

void loop() {
  if (mp3->isRunning()) {
    if (!mp3->loop()) mp3->stop();
  } else {
    Serial.println("MP3 klaar");
    delay(1000);
  }
}

Deze lus controleert of het MP3-bestand nog steeds wordt afgespeeld. Als dit niet het geval is, wordt een bericht afgedrukt dat de weergave is voltooid. De volledige code wordt onder het artikel geladen voor verdere referentie.

Demonstratie / Wat te verwachten

Zodra alles is bedraad en de code is geüpload, zou u de audio via de luidspreker moeten horen afspelen wanneer de micro-SD-kaart is geplaatst. Zorg ervoor dat u de ESP32 reset na het plaatsen van de kaart. Als de audio niet wordt afgespeeld, controleer dan de bedrading en zorg ervoor dat het audiobestand correct is benoemd in de code (in video op 05:00).

Veelvoorkomende valkuilen zijn het niet correct formatteren van de micro-SD-kaart of het gebruik van niet-ondersteunde audiobestandsformaten. Zorg er altijd voor dat de bestanden in MP3-formaat zijn en in de hoofdmap of de opgegeven map staan indien nodig.

Videotijdstempels

  • 00:00 Start
  • 2:19 Introductie van het project
  • 4:27 Documentatiepagina
  • 5:32 Bedrading voor audioversterker
  • 8:00 Formatteren van microSD-kaart voor ESP32
  • 10:16 Bibliotheek en code
  • 15:16 ESP32-bord en COM-poort selecteren in Arduino IDE
  • 16:58 Nummer afspelen met ESP32 vanaf micro-SD-kaart
  • 19:14 Tweede demo met 18650-batterij

Afbeeldingen

speaker_pic
speaker_pic
audio_module
audio_module
ESP32-40-micro-sd-card-1
ESP32-40-micro-sd-card-1
esp32-41-play-music-wriing
esp32-41-play-music-wriing
842-ESP32 Tutorial 41/55- Arduino code for playing music from microSD card
Taal: C++
#include "AudioFileSourceSD_MMC.h"
#include "AudioOutputI2S.h"
#include "AudioGeneratorMP3.h"
#include "SD_MMC.h"
#include "FS.h"

// Declare pointers for the MP3 generator, file source, and output.
AudioGeneratorMP3 *mp3;
AudioFileSourceSD_MMC *file;
AudioOutputI2S *out;

void setup() {
  // Start the serial communication.
  Serial.begin(115200);
  delay(1000);

  // Initialize the SD card. If it fails, print an error message.
  if (!SD_MMC.begin()) {
    Serial.println("SD card mount failed!");
  }

  // Open the MP3 file from the SD card. Replace "/To Alice.mp3" with your own MP3 file name.
  file = new AudioFileSourceSD_MMC("/To Alice.mp3");
  
  // Set up the I2S output on ESP32's internal DAC.
  out = new AudioOutputI2S(0, 1);
  
  // Set the output to mono.
  out->SetOutputModeMono(true);

  // Initialize the MP3 generator with the file and output.
  mp3 = new AudioGeneratorMP3();
  mp3->begin(file, out);
}

void loop() {
  // If the MP3 is running, loop it. Otherwise, stop it.
  if (mp3->isRunning()) {
    if (!mp3->loop()) mp3->stop();
  } 
  // If the MP3 is not running, print a message and wait for 1 second.
  else {
    Serial.println("MP3 done");
    delay(1000);
  }
}

Hulpmiddelen en referenties

Bestanden📁

Geen bestanden beschikbaar.