Sadržaj:

Arduino biblioteka za dekodiranje MP3 -a: 4 koraka
Arduino biblioteka za dekodiranje MP3 -a: 4 koraka

Video: Arduino biblioteka za dekodiranje MP3 -a: 4 koraka

Video: Arduino biblioteka za dekodiranje MP3 -a: 4 koraka
Video: Температура за Вашим окном в кармане. Без программирования! ESP8266 + DS18B20 + WiFi IoT + NarodMON 2024, Juli
Anonim
Arduino biblioteka za dekodiranje MP3 datoteka
Arduino biblioteka za dekodiranje MP3 datoteka
Arduino biblioteka za dekodiranje MP3 datoteka
Arduino biblioteka 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 Earlephilhower -a je dostupna velika biblioteka 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.

Supplies

Kao što sam već rekao, nadam se da će ova metoda funkcionirati za bilo koji brzi mikrokontroler, ali možda neće. Stoga će za ponavljanje mojih rezultata biti potrebno:

  • ESP32 ploča
  • SD razvodna ploča
  • sd kartica
  • Džemper žice
  • matična ploča
  • mikro USB kabel (za postavljanje skice)
  • Arduino IDE

Korak 1: Postavljanje tlocrta

Postavljanje Breadboard -a
Postavljanje Breadboard -a

Postavite prekidač ESP32 i SD kartice na matičnu ploču.

Korak 2: Ožičenje SD kartice

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

Veze SD kartice (ESP32 SD prekid) su sljedeće:

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: Biblioteke 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 biblioteke. Biblioteka mikrodekodera trenutno podržava.wav i.mp3 datoteke.

Bez obzira na format, postoji nekoliko uobičajenih metoda povezanih sa svakom klasom i one su obuhvaćene donjim kodom. Ovo uključuje preuzimanje nekih metapodataka o datotekama i njihovo štampanje na serijskom monitoru.

#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 MP3 klasi 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:"); Serial.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 se koristi MP3 biblioteka. Također smanjuje uzorke podataka za faktor 16 tako da kada 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 za druga uputstva.

#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 / * Postoje 32 uzorka u audio.prepletenom (16 lijevo i 16 desno) *, ali mi ćemo iscrtati samo prvu točku podataka na svakom kanalu. * Ovo efikasno smanjuje podatke u faktoru 16 (samo za * gledanje talasnog oblika) */ Serial.print (audio.međusobno isprepleteno [0]); // lijevi kanal Serial.print (""); Serial.println (audio.interleaved [1]); // desni kanal}

Preporučuje se: