Wa Koodu

Èkọ́ ESP32 41/55 - Ẹ̀rọ̀ MP3 tí ń lo káàdì Micro SD | Àkójọpọ̀ Ẹ̀kọ́ IoT ESP32 ti SunFounder

Èkọ́ ESP32 41/55 - Ẹ̀rọ̀ MP3 tí ń lo káàdì Micro SD | Àkójọpọ̀ Ẹ̀kọ́ IoT ESP32 ti SunFounder

Nínú ẹ̀kọ́ yìí, a óò ṣẹ̀dá ẹ̀rọ amóhùn-máwòrán MP3 ní lílo ẹ̀rọ aláṣẹ ESP32 àti káàdì SD kékeré. ESP32 yóò ka àwọn fáìlì ohùn tí a fipamọ́ sínú káàdì SD kékeré, yóò sì mú ohùn jáde nípasẹ̀ amúgbáwọ́ ohùn àti agbọ̀rọ̀n. Iṣẹ́ yìí ṣàkópọ̀ oríṣiríṣi ẹ̀yà, pẹ̀lú ESP32, amúgbáwọ́ ohùn, àti káàdì SD kékeré, láti jẹ́ kí o lè ṣeré orin ní ọ̀nà tí ó rọrùn.

Nínú gbogbo ìgbàtí, a óò jíròrò àwọn ìsopọ̀ tí a nílò, kóòdù, àti bí a ṣe lè yanjú àwọn ìṣòro tí ó wọ́pọ̀. Fún ìtọ́sọ́nà ojú tí ó pọ̀ sí i, rí i dájú pé o wo fídíò tí ó somọ́ (nínú fídíò ní 00:00).

Àlàyé Ẹ̀yà

Àwọn ẹ̀yà pàtàkì tí a lò nínú iṣẹ́ yìí pẹ̀lú ẹ̀rọ aláṣẹ ESP32, káàdì SD kékeré, amúgbáwọ́ ohùn, àti agbọ̀rọ̀n. ESP32 jẹ́ ẹ̀rọ aláṣẹ alágbára pẹ̀lú agbára Wi-Fi àti Bluetooth tí a kọ́ sínú rẹ̀, tí ó mú kí ó dára fún àwọn iṣẹ́ IoT. Òun ni yóò ṣe àkóso àti ìdarí ṣíṣeré ohùn.

Káàdì SD kékeré ni a lò láti fipamọ́ àwọn fáìlì ohùn ní ọ̀nà MP3. Ó sopọ̀ mọ́ ESP32, ó sì jẹ́ kí ètò náà ka àwọn fáìlì náà kí ó sì fi àwọn dátà ohùn ránṣẹ́ sí amúgbáwọ́ ohùn. Amúgbáwọ́ ohùn gba àmì ìdánilójú láti ọ̀dọ̀ ESP32, ó sì mú un pọ̀ láti darí agbọ̀rọ̀n, tí ó jẹ́ kí a gbọ́ ohùn.

Àwọn Àlàyé Ìwé Dátà

Olùṣẹ̀dáSunFounder
Nọ́mbà apáESP32
Folti Logic/IO3.3 V
Folti ìpèsè5 V
Ìwọ̀n ìjàde (fún ikanni)2 A tí ó pọ̀ jù
Ìwọ̀n gíga (fún ikanni)3 A tí ó pọ̀ jù
Ìtọ́sọ́nà ìgbohùnsáfẹ́fẹ́ PWMtítí dé 40 kHz
Àwọn ìpele ìdánilójú ìfisí0.3 x VCC (rẹ̀lẹ̀), 0.7 x VCC (ga)
Ìrẹ̀wẹ̀sì folti / RDS(on) / ìkún0.15 V
Àwọn ìwọ̀n ooru85 °C
ÀpótíWROOM-32
Àwọn àkíyèsí / àwọn oríṣiríṣiÓ bá àwọn ilé-ìkàwé ohùn oríṣiríṣi mu

  • Rí i dájú pé a ṣe àwọn káàdì SD kékeré ní ọ̀nà FAT32.
  • Lo resistor kan fún ìsopọ̀ amúgbáwọ́ ohùn láti yẹra fún ìdàrúdàpọ̀.
  • Jẹ́ kí àwọn ìsopọ̀ ìpèsè agbára dúró ṣinṣin láti yẹra fún ìdílọ́wọ́.
  • Ṣàyẹ̀wò àwọn ìsopọ̀ fún àwọn ìsopọ̀ tí kò le kí o tó dá agbára sí i.
  • Ṣàkíyèsi ìjàde ẹ̀rọ ìtẹ̀wé fún àwọn alàyé ìwádìí.
  • Lo àwọn agbọ̀rọ̀n tí kò ní agbára púpọ̀ fún didára ohùn.
  • Fún iṣẹ́ tí ó dára jù, rí i dájú pé a kò fi iṣẹ́ púpọ̀ sí ESP32 nígbà tí ó ń ṣeré ohùn.

SD_MMC ni a lò fún wíwọlé káàdì SD kékeré, àti AudioOutputI2S ni a lò fún ìjàde ohùn.

Àwọn Ìtọ́sọ́nà Ìsopọ̀

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

Láti sopọ̀ àwọn ẹ̀yà pọ̀, bẹ̀rẹ̀ nípa ìsopọ̀ ìpèsè agbára. Sopọ̀ 5 V láti ọ̀dọ̀ ESP32 sí pín VCC ti amúgbáwọ́ ohùn. Nígbà tí o bá ṣe èyí, sopọ̀ pín ilẹ̀ láti ọ̀dọ̀ ESP32 sí pín ilẹ̀ ti amúgbáwọ́ ohùn. Pín ìjàde ohùn láti ọ̀dọ̀ ESP32, tí a sábà máa ń pè ní GPIO25, yẹ kí a sopọ̀ sí pín ìfisí ti amúgbáwọ́ ohùn nípasẹ̀ resistor 10 kΩ.

Fún agbọ̀rọ̀n, sopọ̀ sí àwọn pín ìjàde ti amúgbáwọ́ ohùn. Kíyèsi pé agbọ̀rọ̀n kò ní ìtọ́sọ́nà, nítorí náà o lè sopọ̀ ní ọ̀nà èyíkéyìí. Fi káàdì SD kékeré sí inú ibi tí a yàn fún un lórí ESP32. Rí i dájú pé o ṣàyẹ̀wò gbogbo àwọn ìsopọ̀ kí o tó dá agbára sí i.

Àwọn Àpẹẹrẹ Kóòdù & Ìtọ́sọ́nà

Nínú kóòdù tí a pèsè, a bẹ̀rẹ̀ nípa fífi àwọn ilé-ìkàwé tí a nílò fún ṣíṣeré ohùn àti wíwọlé káàdì SD sí inú. Àwọn ìdámọ̀ pàtàkì ni mp3, file, àti out, tí wọ́n dúró fún olùṣẹ̀dá MP3, orísun fáìlì ohùn, àti ìjàde ohùn, ní ọ̀kọ̀ọ̀kan.

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

Níhìn-ín, a kédè àwọn ìtọ́ka fún olùṣẹ̀dá MP3 àti orísun fáìlì ohùn. Nínú iṣẹ́ setup(), a bẹ̀rẹ̀ ìbánisọ̀rọ̀ ẹ̀rọ ìtẹ̀wé àti káàdì SD.

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

Nínú àyọkà yìí, a ṣàyẹ̀wò bí a bá ti fi káàdì SD sílẹ̀ dáradára. Bí ó bá kùnà, a tẹ̀ ìròyìn àṣìṣe jáde. A wá ṣètò fáìlì MP3 àti ọ̀nà ìjàde ohùn.

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

Lúùpù yìí ṣàyẹ̀wò bí fáìlì MP3 bá ṣì ń ṣeré. Bí kò bá ṣe bẹ́ẹ̀, ó tẹ̀ ìròyìn kan jáde tí ó fi hàn pé ṣíṣeré ti parí. Kóòdù kíkún yóò gbé ní ìsàlẹ̀ àpilẹ̀kọ fún ìtọ́kasí síwájú sí i.

Ìfihàn / Ohun tí o Lè Retí

Nígbà tí gbogbo nǹkan bá ti sopọ̀ tán, tí a sì ti gbé kóòdù sílẹ̀, o yẹ kí o gbọ́ ohùn tí ń ṣeré nípasẹ̀ agbọ̀rọ̀n nígbà tí a bá fi káàdì SD sí inú. Rí i dájú pé o tún ESP32 bẹ̀rẹ̀ lẹ́yìn tí o bá fi káàdì sí inú. Bí ohùn kò bá ṣeré, ṣàyẹ̀wò àwọn ìsopọ̀, kí o sì rí i dájú pé a sọ orúkọ fáìlì ohùn náà dáradára nínú kóòdù (nínú fídíò ní 05:00).

Àwọn ìṣòro tí a sábà máa ń rí pẹ̀lú kíkọ káàdì SD kékeré ní ọ̀nà tí kò tọ́ tàbí lílo àwọn ọ̀nà fáìlì ohùn tí a kò tìlẹ̀tí. Rí i dájú pé àwọn fáìlì náà wà ní ọ̀nà MP3, tí a sì fi wọ́n sí ibi gbòǹgbò tàbí fóódà tí a yàn bí a bá nílò rẹ̀.

Àwọn Àsìkò Fídíò

  • 00:00 Ìbẹ̀rẹ̀
  • 2:19 Ìfihàn sí iṣẹ́ náà
  • 4:27 Ojú-ìwé àwọn àkọsílẹ̀
  • 5:32 Ìsopọ̀ fún amúgbáwọ́ ohùn
  • 8:00 Ṣíṣe àwọn káàdì SD kékeré fún ESP32
  • 10:16 Ilé-ìkàwé àti Kóòdù
  • 15:16 Yíyan bọ́ọ̀dù ESP32 àti ibùdó COM nínú Arduino IDE
  • 16:58 Ṣíṣeré Orin ní lílo ESP32 láti inú Káàdì SD kékeré
  • 19:14 Ìfihàn kejì ní lílo bàtìrì 18650

Aworan

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
Ede: 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);
  }
}

Fáìlìs📁

Ko si awọn faili ti o wa.