Kazalo:

Knjižnica Arduino za dekodiranje MP3: 4 koraki
Knjižnica Arduino za dekodiranje MP3: 4 koraki

Video: Knjižnica Arduino za dekodiranje MP3: 4 koraki

Video: Knjižnica Arduino za dekodiranje MP3: 4 koraki
Video: LDmicro 14: ЖК-дисплей I2C и часы реального времени DS3231 (программирование лестничной схемы ПЛК микроконтроллера с помощью LDmicro) 2024, November
Anonim
Knjižnica Arduino za dekodiranje MP3
Knjižnica Arduino za dekodiranje MP3
Knjižnica Arduino za dekodiranje MP3
Knjižnica Arduino za dekodiranje MP3

Zaradi povečane razširjenosti hitrih mikrokrmilnikov, kot sta ESP32 in ARM M serije, dekodiranja MP3 ni potrebno več izvajati s specializirano strojno opremo. Dekodiranje je zdaj mogoče izvesti v programski opremi.

Earlephilhower ponuja veliko knjižnico, ki prikazuje, kako dekodirati najrazličnejše zvočne datoteke in jih predvajati na mikrokontrolerjih ESP. Navdihnjen s tem sem prilagodil nekaj kode za ustvarjanje modularne metode branja datotek MP3 na mikrokrmilnikih.

Upam, da bo ta metoda dovolj splošna za uporabo na katerem koli dovolj hitrem mikrokrmilniku (ne le na plošči ESP32), vendar sem zaenkrat preizkusil le na ESP32.

Zaloge

Kot sem že rekel, upam, da bo ta metoda delovala za kateri koli hitri mikrokrmilnik, vendar morda ne. Zato boste za ponovitev mojih rezultatov potrebovali:

  • Plošča ESP32
  • Odklopna plošča SD
  • sD kartice
  • Mostične žice
  • deska
  • kabel mikro USB (za nalaganje skice)
  • Arduino IDE

1. korak: Polaganje ploščice

Polaganje ploščice
Polaganje ploščice

ESP32 in kartico SD postavite na mizo.

2. korak: Ožičenje kartice SD

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

Povezave s kartico SD (prekinitev ESP32 SD) so naslednje:

GND GND

3v3 VDD

23 DI (MOSI)

19 DO (MISO)

18 SCLK

5 CS

Upoštevajte, da bodo te povezave drugačne, če uporabljate drug mikrokrmilnik.

3. korak: Knjižnice programske opreme

če nimate nameščenega ESP-IDF, pojdite na njihovo spletno mesto in ga namestite.

Nato namestite knjižnico mikrodekoderjev. To lahko storite tako, da prenesete skladišče in ga postavite v mapo Arduino Libraries. Knjižnica mikrodekoderjev trenutno podpira datoteke.wav in.mp3.

Ne glede na obliko je za vsak razred povezanih nekaj skupnih metod, ki so zajete v spodnji kodi. Ti vključujejo pridobivanje metapodatkov datotek in njihovo tiskanje na serijski monitor.

#include "SD.h" // input

#include "mp3.h" // dekoder #include "pcm.h" // vsebnik surovih avdio podatkov mp3 MP3; void setup () {Serial.begin (115200); // Nastavitev serijske SD.begin (); // Nastavitev povezave SD Datoteka = SD.open ("/cc.mp3"); // Odprite datoteko MP3 MP3.begin (datoteka); // povejte razredu MP3, katero datoteko naj obdela MP3.getMetadata (); // dobimo metdadata Serial.print ("Bits per Sample:"); Serial.println (MP3.bitsPerSample); // tiskanje bitov na vzorec Serial.print ("Sample Rate:"); Serial.println (MP3. Fs); // in vzorčenje} void loop () {}

4. korak: na serijski monitor vnesite podatke MP3

Naredite MP3 podatke na serijskem monitorju
Naredite MP3 podatke na serijskem monitorju

S spodnjo kodo lahko na serijski monitor vnesete nekaj zvočnih podatkov. To bo zelo počasno, vendar vam bo pokazalo, kako uporabljati knjižnico MP3. Podatke tudi zmanjša za faktor 16, tako da so podatki, ko so narisani, podobni zvočni valovni obliki. Ta koda je vzeta iz primera SPI_MP3_Serial.ino, ki je priložen knjižnici mikrodekoderjev. Seveda boste v prihodnje želeli nekako predvajati te zvočne podatke, vendar je to tema drugačnih navodil.

#include "SD.h" // input

#include "mp3.h" // dekoder mp3 MP3; // avdio MP3 razreda pcm; // surovi zvočni podatki void setup () {Serial.begin (115200); // Nastavitev serijske SD.begin (); // Nastavitev povezave SD Datoteka = SD.open ("/cc.mp3"); // Odprite datoteko MP3 MP3.begin (datoteka); // Prenesite datoteko v razred MP3} void loop () {audio = MP3.decode (); // dekodiramo zvočne podatke v razred pcm / * v zvoku je 32 vzorcev (16 levo in 16 desno) *, vendar bomo narisali samo prvo podatkovno točko v vsakem kanalu. * To učinkovito zniža vzorce podatkov za faktor 16 (samo za * ogled valovne oblike) */ Serial.print (audio.interleaved [0]); // levi kanal Serial.print (""); Serial.println (audio.interleaved [1]); // desni kanal}

Priporočena: