Sadržaj:

Arduino knjižnica za dekodiranje MP3 -a: 4 koraka
Arduino knjižnica za dekodiranje MP3 -a: 4 koraka

Video: Arduino knjižnica za dekodiranje MP3 -a: 4 koraka

Video: Arduino knjižnica za dekodiranje MP3 -a: 4 koraka
Video: Atmega Fusebit Doctor 2024, Srpanj
Anonim
Arduino knjižnica za dekodiranje MP3 datoteka
Arduino knjižnica za dekodiranje MP3 datoteka
Arduino knjižnica za dekodiranje MP3 datoteka
Arduino knjižnica za dekodiranje MP3 datoteka

Zbog povećane prevalencije brzih mikrokontrolera, poput ESP32 i ARM M serije MP3 dekodiranje više nije potrebno obavljati specijalizirani hardver. Dekodiranje se sada može izvršiti u softveru.

Od Earlephilhowera dostupna je sjajna knjižnica koja pokazuje kako dekodirati veliki broj audio datoteka i reproducirati ih na ESP mikrokontrolerima. Nadahnut ovim, prilagodio sam dio koda za stvaranje modularne metode čitanja MP3 datoteka na mikrokontrolerima.

Nadam se da će ova metoda biti dovoljno generička za upotrebu na bilo kojem dovoljno brzom mikrokontroleru (ne samo na ESP32 ploči), ali do sada sam testirao samo na ESP32.

Pribor

Kao što sam već rekao, nadam se da će ova metoda funkcionirati za bilo koji brzi mikrokontroler, ali možda neće. Stoga, da biste ponovili moje rezultate, trebat će vam:

  • Ploča ESP32
  • SD razvodna ploča
  • SD kartica
  • Žice za kratkospojnike
  • matična ploča
  • mikro USB kabel (za učitavanje skice)
  • Arduino IDE

Korak 1: Postavljanje tlocrta

Postavljanje Breadboard -a
Postavljanje Breadboard -a

Postavite ESP32 i SD karticu na matičnu ploču.

Korak 2: Ožičenje SD kartice

Ožičenje SD kartice
Ožičenje SD kartice

Priključci SD kartice (ESP32 SD prekid) su sljedeći:

GND GND

3v3 VDD

23 DI (MOSI)

19 DO (MISO)

18 SCLK

5 CS

Imajte na umu da će se ove veze razlikovati ako koristite drugi mikrokontroler.

Korak 3: Knjižnice softvera

ako nemate instaliran ESP-IDF, prijeđite na njihovu web stranicu i instalirajte ga.

Zatim instalirajte biblioteku mikrodekodera. To možete učiniti preuzimanjem spremišta i stavljanjem u mapu Arduino knjižnice. Knjižnica mikrodekodera trenutno podržava.wav i.mp3 datoteke.

Bez obzira na format, postoji nekoliko uobičajenih metoda povezanih sa svakom klasom, a obuhvaćene su donjim kodom. To uključuje dobivanje nekih metapodataka o datotekama i njihovo ispisivanje na serijski monitor.

#include "SD.h" // ulaz

#include "mp3.h" // dekoder #include "pcm.h" // spremnik sirovih audio podataka mp3 MP3; void setup () {Serial.begin (115200); // Postavljanje serijskog SD.begin (); // Postavljanje SD veze Datoteka Datoteka = SD.open ("/cc.mp3"); // Otvorite MP3 datoteku MP3.begin (datoteka); // recimo razredu MP3 koju datoteku treba obraditi MP3.getMetadata (); // dobivamo metdadata Serial.print ("Bitovi po uzorku:"); Serial.println (MP3.bitsPerSample); // ispisuje bitove po uzorku Serial.print ("Sample Rate:"); Serijski.println (MP3. Fs); // i brzina uzorkovanja} void loop () {}

Korak 4: Iscrtajte MP3 podatke na serijskom monitoru

Iscrtajte MP3 podatke na serijskom monitoru
Iscrtajte MP3 podatke na serijskom monitoru

Pomoću donjeg koda možete iscrtati neke audio podatke na serijskom monitoru. Ovo će biti vrlo sporo, ali će vam pokazati kako koristiti MP3 biblioteku. Također smanjuje uzorke podataka za faktor 16 tako da kad se podaci iscrtaju izgledaju kao audio valni oblik. Ovaj kôd je preuzet iz primjera SPI_MP3_Serial.ino koji dolazi s bibliotekom mikrodekodera. Naravno, ako krenete naprijed, htjet ćete nekako reproducirati ove audio podatke, ali to je tema koja se može podučiti.

#include "SD.h" // ulaz

#include "mp3.h" // dekoder mp3 MP3; // MP3 klasa pcm audio; // neobrađeni audio podaci void setup () {Serial.begin (115200); // Postavljanje serijskog SD.begin (); // Postavljanje SD veze Datoteka Datoteka = SD.open ("/cc.mp3"); // Otvorite MP3 datoteku MP3.begin (datoteka); // Proslijedi datoteku u MP3 klasu} void loop () {audio = MP3.decode (); // Dekodiranje audio podataka u pcm klasu / * u audio zapisu ima 32 uzorka (16 lijevo i 16 desno) *, ali mi ćemo iscrtati samo prvu podatkovnu točku u svakom kanalu. * Ovo učinkovito smanjuje podatke 16 puta (samo za * gledanje valnog oblika) */ Serial.print (audio.interleaved [0]); // lijevi kanal Serial.print (""); Serial.println (audio.prepleteno [1]); // desni kanal}

Preporučeni: