Talaan ng mga Nilalaman:

Arduino Library para sa Pag-decode ng MP3: 4 Mga Hakbang
Arduino Library para sa Pag-decode ng MP3: 4 Mga Hakbang

Video: Arduino Library para sa Pag-decode ng MP3: 4 Mga Hakbang

Video: Arduino Library para sa Pag-decode ng MP3: 4 Mga Hakbang
Video: Lesson 101: Using IR Remote to control TV, AC Bulb with Relay, DC Motor and Servo Motor 2024, Disyembre
Anonim
Arduino Library para sa Pag-decode ng MP3
Arduino Library para sa Pag-decode ng MP3
Arduino Library para sa Pag-decode ng MP3
Arduino Library para sa Pag-decode ng MP3

Dahil sa nadagdagang pagkalat ng mga mabilis na microcontroller tulad ng ESP32 at ang ARM M series na MP3 decoding ay hindi na kinakailangan upang gawin ng espesyalista na hardware. Ang pag-decode ay maaari nang gawin sa software.

Mayroong isang mahusay na silid-aklatan na magagamit mula sa earlephilhower na nagpapakita kung paano mai-decode ang isang iba't ibang mga audio file at i-play ang mga ito sa mga microcontroller ng ESP. May inspirasyon sa pamamagitan nito na inangkop ko ang ilan sa mga code upang lumikha ng isang modular na pamamaraan ng pagbabasa ng mga MP3 file sa mga microcontroller.

Ang aking pag-asa ay ang pamamaraang ito ay magiging sapat na generic para magamit sa anumang sapat na mabilis na microcontroller (hindi lamang isang board ng ESP32) ngunit sa ngayon ay nasubukan ko lamang sa isang ESP32.

Mga gamit

Tulad ng sinabi ko dati, inaasahan kong gagana ang pamamaraang ito para sa anumang mabilis na microcontroller, ngunit maaaring hindi. Samakatuwid upang makopya ang aking mga resulta kakailanganin mo:

  • Isang board ng ESP32
  • SD breakout board
  • SD card
  • Jumper Wires
  • breadboard
  • micro USB cable (para sa pag-upload ng sketch)
  • Arduino IDE

Hakbang 1: Paglalagay ng Breadboard

Paglalagay ng Breadboard
Paglalagay ng Breadboard

Ilagay ang breakout ng ESP32 at SD card sa breadboard.

Hakbang 2: Mga kable sa SD Card

Kable ng SD Card
Kable ng SD Card

Ang mga koneksyon sa SD card (breakout ng ESP32 SD) ay ang mga sumusunod:

GND GND

3v3 VDD

23 DI (MOSI)

19 DO (MISO)

18 SCLK

5 CS

Mangyaring tandaan na ang mga koneksyon na ito ay magkakaiba kung gumagamit ka ng ibang microcontroller.

Hakbang 3: Ang Mga Library ng Software

kung wala kang naka-install na ESP-IDF na magtungo sa kanilang website at i-install ito.

Pagkatapos i-install ang microdecoder library. Maaari mo itong gawin sa pamamagitan ng pag-download ng repository at ilagay ito sa iyong folder ng Arduino Library. Kasalukuyang sinusuportahan ng library ng microdecoder ang.wav at.mp3 na mga file.

Anuman ang format, mayroong ilang mga karaniwang pamamaraan na nauugnay sa bawat klase at sakop sila sa code sa ibaba. Kasama rito ang pagkuha ng ilang mga file na metadata at i-print ito sa serial monitor.

# isama ang "SD.h" // input

#include "mp3.h" // decoder #include "pcm.h" // raw audio data container mp3 MP3; void setup () {Serial.begin (115200); // Setup Serial SD.begin (); // Setup SD connection File file = SD.open ("/ cc.mp3"); // Buksan ang isang MP3 File MP3.begin (file); // sabihin sa klase ng MP3 kung anong file ang iproseso ng MP3.getMetadata (); // get the metdadata Serial.print ("Bits per Sample:"); Serial.println (MP3.bitsPerSample); // print bits per sample Serial.print ("Sample Rate:"); Serial.println (MP3. Fs); // at sample rate} void loop () {}

Hakbang 4: I-plot ang Data ng MP3 sa Serial Monitor

I-plot ang Data ng MP3 sa Serial Monitor
I-plot ang Data ng MP3 sa Serial Monitor

Gamit ang code sa ibaba maaari kang magbalangkas ng ilang data ng audio sa Serial monitor. Ito ay magiging mabagal ngunit ipapakita sa iyo kung paano gamitin ang MP3 library. Nababawas din nito ang data sa pamamagitan ng isang factor na 16 upang kapag ang data ay naka-plot ay mukhang isang audio waveform. Ang code na ito ay kinuha mula sa halimbawang SPI_MP3_Serial.ino na kasama ng silid-aklatan ng microdecoder. Siyempre, sa pagsulong ay gugustuhin mong i-play ang audio data na ito kahit papaano ngunit iyon ang paksa ng ibang itinuro.

# isama ang "SD.h" // input

# isama ang "mp3.h" // decoder mp3 MP3; // MP3 Class pcm audio; // raw audio data void setup () {Serial.begin (115200); // Setup Serial SD.begin (); // Setup SD connection File file = SD.open ("/ cc.mp3"); // Buksan ang isang MP3 File MP3.begin (file); // Pass file to MP3 class} void loop () {audio = MP3.decode (); // Decode audio data into pcm class / * mayroong 32 mga sample sa audio.interleaved (16 kaliwa at 16 kanan) * ngunit lalagyan lamang namin ang unang punto ng data sa bawat channel. * Epektibong ibinabagsak nito ang data sa pamamagitan ng isang factor na 16 (para sa * pagtingin lamang ng waveform) * / Serial.print (audio.interleaved [0]); // left channel Serial.print (""); Serial.println (audio.interleaved [1]); // kanang channel}

Inirerekumendang: