Search Code

Mafunzo ya ESP32 41/55 - Kicheza MP3 kwa kutumia kadi ya Micro SD | Kifurushi cha Kujifunza cha ESP32 IoT cha SunFounder

Mafunzo ya ESP32 41/55 - Kicheza MP3 kwa kutumia kadi ya Micro SD | Kifurushi cha Kujifunza cha ESP32 IoT cha SunFounder

Katika mafunzo haya, tutaunda kicheza MP3 kwa kutumia kidhibiti cha ESP32 na kadi ndogo ya SD. ESP32 itasoma faili za sauti zilizohifadhiwa kwenye kadi ndogo ya SD na kutoa sauti kupitia amplifier ya sauti na spika. Mradi huu unachanganya vipengele mbalimbali, vikiwemo ESP32, amplifier ya sauti, na kadi ndogo ya SD, ili kukuwezesha kucheza muziki kwa njia rahisi.

Katika mchakato wote, tutajadili uunganishaji wa waya unaohitajika, usimbaji, na jinsi ya kutatua matatizo ya kawaida. Kwa mwongozo zaidi wa kuona, hakikisha umeangalia video inayohusiana (katika video saa 00:00).

Vifaa Vimeelezwa

Vipengele vikuu vinavyotumika katika mradi huu ni pamoja na kidhibiti cha ESP32, kadi ndogo ya SD, amplifier ya sauti, na spika. ESP32 ni kidhibiti chenye nguvu kilicho na Wi-Fi na Bluetooth zilizojengewa ndani, na kufanya kiwe bora kwa miradi ya IoT. Kitashughulikia usindikaji na udhibiti wa uchezaji wa sauti.

Kadi ndogo ya SD hutumika kuhifadhi faili za sauti katika muundo wa MP3. Inaunganishwa na ESP32 na inaruhusu programu kusoma faili na kutuma data ya sauti kwa amplifier. Amplifier ya sauti inachukua ishara ya dijiti kutoka ESP32 na kuiimarisha ili kuendesha spika, kuruhusu sauti isikike.

Maelezo ya Datasheet

MtengenezajiSunFounder
Nambari ya sehemuESP32
Voltage ya Logic/IO3.3 V
Voltage ya usambazaji5 V
Mkondo wa pato (kwa kila chaneli)2 A max
Mkondo wa kilele (kwa kila chaneli)3 A max
Mwongozo wa mzunguko wa PWMhadi 40 kHz
Viwango vya kuingiza mantiki0.3 x VCC (chini), 0.7 x VCC (juu)
Kushuka kwa voltage / RDS(on) / kueneza0.15 V
Mipaka ya joto85 °C
KifurushiWROOM-32
Vidokezo / lahajaInaoana na maktaba mbalimbali za sauti

  • Hakikisha kadi ndogo ya SD imeumbizwa kama FAT32.
  • Tumia resistor kwa kuunganisha amplifier ya sauti ili kuzuia upotoshaji.
  • Weka viunganisho vya usambazaji wa nguvu vikiwa thabiti ili kuepuka usumbufu.
  • Angalia waya kwa viunganisho vilivyolegea kabla ya kuwasha mfumo.
  • Fuatilia pato la serial kwa taarifa za utatuzi.
  • Tumia spika za impedance ya chini kwa ubora bora wa sauti.
  • Kwa utendaji bora, hakikisha ESP32 haijalemewa na kazi wakati wa kucheza sauti.

SD_MMC hutumika kwa ufikiaji wa kadi ndogo ya SD, na AudioOutputI2S hutumika kwa pato la sauti.

Maagizo ya Uunganishaji wa Waya

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

Ili kuunganisha vipengele pamoja, anza kwa kuunganisha usambazaji wa nguvu. Unganisha 5 V kutoka ESP32 kwenye pini ya VCC ya amplifier ya sauti. Kisha, unganisha pini ya ardhi kutoka ESP32 kwenye pini ya ardhi ya amplifier. Pini ya pato la sauti kutoka ESP32, kwa kawaida GPIO25, inapaswa kuunganishwa kwenye pini ya kuingiza ya amplifier kupitia resistor ya 10 kΩ.

Kwa spika, unganisha kwenye pini za pato za amplifier ya sauti. Kumbuka kwamba spika haina polarity, kwa hivyo unaweza kuunganisha kwa njia yoyote. Ingiza kadi ndogo ya SD kwenye sehemu iliyotengwa kwenye ESP32. Hakikisha umeangalia mara mbili viunganisho vyote kabla ya kuwasha mfumo.

Mifano ya Msimbo na Mwongozo

Katika msimbo uliotolewa, tunaanza kwa kujumuisha maktaba muhimu za uchezaji wa sauti na ufikiaji wa kadi ya SD. Vitambulisho vikuu ni mp3, file, na out, ambavyo vinawakilisha jenereta ya MP3, chanzo cha faili ya sauti, na pato la sauti, mtawalia.

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

Hapa, tunatangaza viashiria vya jenereta ya MP3 na chanzo cha faili ya sauti. Katika kazi ya setup(), tunaanzisha mawasiliano ya serial na kadi ya SD.

void setup() {
  Serial.begin(115200);
  if (!SD_MMC.begin()) {
    Serial.println("Kuweka kadi ya SD kumeshindwa!");
  }
  file = new AudioFileSourceSD_MMC("/To Alice.mp3");
  out = new AudioOutputI2S(0, 1);
}

Katika kipande hiki, tunaangalia kama kadi ya SD imewekwa kwa mafanikio. Ikishindikana, ujumbe wa hitilafu unachapishwa. Kisha tunaweka faili ya MP3 na hali ya pato la sauti.

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

Kitanzi hiki kinaangalia kama faili ya MP3 bado inacheza. Ikikosa kucheza, kinachapisha ujumbe unaoonyesha kwamba uchezaji umekamilika. Msimbo kamili utapakiwa chini ya makala kwa marejeleo zaidi.

Maonyesho / Nini cha Kutarajia

Mara tu kila kitu kitakapounganishwa na msimbo kupakiwa, unapaswa kusikia sauti ikicheza kupitia spika wakati kadi ndogo ya SD imeingizwa. Hakikisha umewasha upya ESP32 baada ya kuingiza kadi. Ikiwa sauti haichezi, angalia waya na uhakikishe faili ya sauti imepewa jina sahihi katika msimbo (katika video saa 05:00).

Makosa ya kawaida ni pamoja na kutoifomati kadi ndogo ya SD vizuri au kutumia muundo wa faili za sauti usiotumika. Hakikisha faili ziko katika muundo wa MP3 na zimewekwa kwenye saraka kuu au folda maalum kama inavyohitajika.

Vidokezo vya Muda wa Video

  • 00:00 Mwanzo
  • 2:19 Utangulizi wa mradi
  • 4:27 Ukurasa wa hati
  • 5:32 Uunganishaji wa waya kwa amplifier ya sauti
  • 8:00 Kuumbiza kadi ndogo ya SD kwa ESP32
  • 10:16 Maktaba na Msimbo
  • 15:16 Kuchagua bodi ya ESP32 na COM port katika Arduino IDE
  • 16:58 Kucheza Wimbo kwa kutumia ESP32 kutoka kadi ndogo ya SD
  • 19:14 Maonyesho ya pili kwa kutumia betri ya 18650

Bilder

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
Språk: 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);
  }
}

Resurser och referenser

Filer📁

Inga filer tillgängliga.