INHOUDSOPGAWE:

Arduino -biblioteek vir MP3 -dekodering: 4 stappe
Arduino -biblioteek vir MP3 -dekodering: 4 stappe

Video: Arduino -biblioteek vir MP3 -dekodering: 4 stappe

Video: Arduino -biblioteek vir MP3 -dekodering: 4 stappe
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, November
Anonim
Arduino -biblioteek vir MP3 -dekodering
Arduino -biblioteek vir MP3 -dekodering
Arduino -biblioteek vir MP3 -dekodering
Arduino -biblioteek vir MP3 -dekodering

As gevolg van die toenemende voorkoms van vinnige mikrobeheerders soos die ESP32 en die ARM M -reeks, hoef MP3 nie meer deur spesialis -hardeware gedoen te word nie. Die dekodering kan nou in sagteware gedoen word.

Daar is 'n wonderlike biblioteek beskikbaar by earlephilhower wat wys hoe u 'n wye verskeidenheid klanklêers kan dekodeer en op ESP -mikrobeheerders kan speel. Geïnspireer hierdeur het ek 'n deel van die kode aangepas om 'n modulêre metode te skep om MP3 -lêers op mikrobeheerders te lees.

Ek hoop dat hierdie metode algemeen genoeg sal wees vir gebruik op enige vinnig genoeg mikrobeheerder (nie net 'n ESP32 -bord nie), maar ek het tot dusver slegs op 'n ESP32 getoets.

Voorrade

Soos ek vroeër gesê het, hoop ek dat hierdie metode vir enige vinnige mikrobeheerder sal werk, maar dit mag nie. Om my resultate te herhaal, benodig u:

  • 'N ESP32 -bord
  • SD -uitbreekbord
  • SD kaart
  • Jumper Wires
  • broodbord
  • mikro -USB -kabel (om skets op te laai)
  • Arduino IDE

Stap 1: Plaas die broodbord

Lê die broodbord uit
Lê die broodbord uit

Plaas die ESP32 en die SD -kaart op die broodbord.

Stap 2: Sluit die SD -kaart aan

Bedrading van die SD -kaart
Bedrading van die SD -kaart

Die SD -kaartverbindings (ESP32 SD -uitbreek) is soos volg:

GND GND

3v3 VDD

23 DI (MOSI)

19 DOEN (MISO)

18 SCLK

5 CS

Let daarop dat hierdie verbindings anders sal wees as u 'n ander mikrobeheerder gebruik.

Stap 3: Die sagtewarebiblioteke

As u nie die ESP-IDF geïnstalleer het nie, gaan dan na hul webwerf en installeer dit.

Installeer dan die mikrodekodeerder -biblioteek. U kan dit doen deur die bewaarplek af te laai en in u gids Arduino Libraries te plaas. Die mikrodekodeerder -biblioteek ondersteun tans.wav- en.mp3 -lêers.

Ongeag die formaat, is daar 'n paar algemene metodes wat met elke klas verband hou, en dit word gedek in die onderstaande kode. Dit sluit in om 'n paar lêermetadata te kry en dit na die seriële monitor te druk.

#sluit "SD.h" // insette in

#include "mp3.h" // decoder #include "pcm.h" // raw audio data container mp3 MP3; ongeldige opstelling () {Serial.begin (115200); // Stel Serial SD.begin () op; // Stel SD -verbinding lêer lêer op = SD.open ("/cc.mp3"); // Maak 'n MP3 -lêer oop MP3.begin (lêer); // vertel die MP3 -klas watter lêer MP3.getMetadata () moet verwerk; // kry die metadata Serial.print ("Bits per monster:"); Serial.println (MP3.bitsPerSample); // druk bisse per monster Serial.print ("Monster Rate:"); Serial.println (MP3. Fs); // en monster rate} leemte lus () {}

Stap 4: Plaas MP3 -data op die seriële monitor

Plaas MP3 -data op die seriële monitor
Plaas MP3 -data op die seriële monitor

Met die onderstaande kode kan u 'n paar klankdata op die seriële monitor teken. Dit sal baie stadig wees, maar sal u wys hoe u die MP3 -biblioteek kan gebruik. Dit verminder ook die data met 'n faktor van 16, sodat wanneer die data uitgestippel word, dit soos 'n klankgolfvorm lyk. Hierdie kode is geneem uit die voorbeeld SPI_MP3_Serial.ino wat by die mikodekoder -biblioteek kom. Natuurlik, as u vorentoe beweeg, sal u hierdie klankdata op een of ander manier wil speel, maar dit is die onderwerp van 'n ander instruksie.

#sluit "SD.h" // insette in

#sluit "mp3.h" // dekodeerder mp3 MP3 in; // MP3 -klas pcm klank; // opstelling van rou klankdata leemte () {Serial.begin (115200); // Stel Serial SD.begin () op; // Stel SD -verbinding lêer lêer op = SD.open ("/cc.mp3"); // Maak 'n MP3 -lêer oop MP3.begin (lêer); // Gee lêer na MP3 -klas} leemte -lus () {audio = MP3.decode (); // Dekodeer klankdata in pcm -klas / * daar is 32 monsters in audio.interleaved (16 links en 16 regs) *, maar ons gaan slegs die eerste datapunt in elke kanaal teken. * Dit verminder die data effektief met 'n faktor van 16 (vir * slegs die golfvorm) */ Serial.print (audio.interleaved [0]); // linker kanaal Serial.print (""); Serial.println (audio.interleaved [1]); // regte kanaal}

Aanbeveel: