Cuprins:

Biblioteca Arduino pentru decodare MP3: 4 pași
Biblioteca Arduino pentru decodare MP3: 4 pași

Video: Biblioteca Arduino pentru decodare MP3: 4 pași

Video: Biblioteca Arduino pentru decodare MP3: 4 pași
Video: learn Arduino programming in 20 seconds!! (Arduino projects) 2024, Noiembrie
Anonim
Biblioteca Arduino pentru decodare MP3
Biblioteca Arduino pentru decodare MP3
Biblioteca Arduino pentru decodare MP3
Biblioteca Arduino pentru decodare MP3

Datorită prevalenței crescute a microcontrolerelor rapide, cum ar fi ESP32 și seria ARM M, decodarea MP3 nu mai este necesară pentru a fi făcută de hardware specializat. Decodarea se poate face acum în software.

Există o bibliotecă excelentă disponibilă de la earlephilhower care arată cum să decodezi o mare varietate de fișiere audio și să le joci pe microcontrolere ESP. Inspirat de acest lucru, am adaptat o parte din cod pentru a crea o metodă modulară de citire a fișierelor MP3 pe microcontrolere.

Speranța mea este că această metodă va fi suficient de generică pentru a fi utilizată pe orice microcontroler suficient de rapid (nu doar pe o placă ESP32), dar de acum am testat doar pe un ESP32.

Provizii

După cum am spus mai înainte, sper că această metodă va funcționa pentru orice microcontroler rapid, dar poate că nu. Prin urmare, pentru a reproduce rezultatele mele, veți avea nevoie de:

  • O placa ESP32
  • Placă SD Breakout
  • card SD
  • Sârme jumper
  • panou de masă
  • cablu micro USB (pentru încărcarea schiței)
  • IDE Arduino

Pasul 1: așezarea panoului de calcul

Așezarea tablei
Așezarea tablei

Așezați ESP32 și cardul SD breakout pe panou.

Pasul 2: Cablarea cardului SD

Cablarea cardului SD
Cablarea cardului SD

Conexiunile cardului SD (ESP32 SD breakout) sunt următoarele:

GND GND

3v3 VDD

23 DI (MOSI)

19 DO (MISO)

18 SCLK

5 CS

Vă rugăm să rețineți că aceste conexiuni vor fi diferite dacă utilizați un microcontroler diferit.

Pasul 3: Bibliotecile software

dacă nu aveți ESP-IDF instalat pe site-ul lor și instalați-l.

Apoi instalați biblioteca microdecoder. Puteți face acest lucru descărcând depozitul și plasându-l în folderul Arduino Libraries. Biblioteca de microdecodare acceptă în prezent fișiere.wav și.mp3.

Indiferent de format, există câteva metode comune asociate fiecărei clase și sunt acoperite în codul de mai jos. Acestea includ obținerea unor metadate de fișiere și imprimarea lor pe monitorul serial.

#includeți „SD.h” // intrare

#include "mp3.h" // decoder #include "pcm.h" // container de date audio brute mp3 MP3; void setup () {Serial.begin (115200); // Configurare Serial SD.begin (); // Configurare conexiune SD Fișier fișier = SD.open ("/ cc.mp3"); // Deschideți un fișier MP3 MP3.begin (fișier); // spuneți clasei MP3 ce fișier să proceseze MP3.getMetadata (); // obțineți metdadatele Serial.print ("Bits per Sample:"); Serial.println (MP3.bitsPerSample); // imprimați biți pe eșantion Serial.print ("Sample Rate:"); Serial.println (MP3. Fs); // și rata de eșantionare} void loop () {}

Pasul 4: Plasați date MP3 pe monitorul serial

Plasați date MP3 pe monitorul serial
Plasați date MP3 pe monitorul serial

Cu codul de mai jos puteți parcela câteva date audio pe monitorul serial. Acest lucru va fi foarte lent, dar vă va arăta cum să utilizați biblioteca MP3. De asemenea, reduce eșantionarea datelor cu un factor de 16, astfel încât atunci când datele sunt reprezentate grafic să arate ca o formă de undă audio. Acest cod este preluat din exemplul SPI_MP3_Serial.ino care vine cu biblioteca de microdecoder. Desigur, înainte, veți dori să redați cumva aceste date audio, dar acesta este subiectul unui alt instructable.

#includeți „SD.h” // intrare

#include "mp3.h" // decodor mp3 MP3; // MP3 Class pcm audio; // configurare nulă a datelor audio brute () {Serial.begin (115200); // Configurare Serial SD.begin (); // Configurare conexiune SD Fișier fișier = SD.open ("/ cc.mp3"); // Deschideți un fișier MP3 MP3.begin (fișier); // Treceți fișierul la clasa MP3} void loop () {audio = MP3.decode (); // Decodează datele audio în clasa pcm / * există 32 de eșantioane în audio.interleaved (16 stânga și 16 dreapta) *, dar vom urmări doar primul punct de date din fiecare canal. * Aceasta reduce în mod eficient datele cu un factor de 16 (pentru * vizualizarea numai a formei de undă) * / Serial.print (audio.interleaved [0]); // canal stâng Serial.print (""); Serial.println (audio.interleaved [1]); // canal dreapta}

Recomandat: