Innehållsförteckning:

Arduino -bibliotek för MP3 -avkodning: 4 steg
Arduino -bibliotek för MP3 -avkodning: 4 steg

Video: Arduino -bibliotek för MP3 -avkodning: 4 steg

Video: Arduino -bibliotek för MP3 -avkodning: 4 steg
Video: ChatGPT with Arduino Nano #arduino #chatgpt #technology #openAI #electronic 2024, November
Anonim
Arduino -bibliotek för MP3 -avkodning
Arduino -bibliotek för MP3 -avkodning
Arduino -bibliotek för MP3 -avkodning
Arduino -bibliotek för MP3 -avkodning

På grund av den ökade förekomsten av snabba mikrokontroller som ESP32 och ARM M -serien MP3 -avkodning behöver inte längre utföras av specialiserad hårdvara. Avkodningen kan nu göras i programvara.

Det finns ett bra bibliotek tillgängligt från earlephilhower som visar hur man avkodar en mängd olika ljudfiler och spelar dem på ESP -mikrokontroller. Inspirerad av detta anpassade jag en del av koden för att skapa en modulär metod för att läsa MP3 -filer på mikrokontroller.

Min förhoppning är att denna metod kommer att vara generisk nog för användning på alla tillräckligt snabba mikrokontroller (inte bara ett ESP32 -kort) men från och med nu har jag bara testat på en ESP32.

Tillbehör

Som jag sa tidigare hoppas jag att denna metod kommer att fungera för alla snabba mikrokontroller, men det kanske inte gör det. Därför behöver du för att replikera mina resultat:

  • Ett ESP32 -kort
  • SD breakout board
  • SD-kort
  • Jumper Wires
  • bakbord
  • mikro -USB -kabel (för uppladdning av skiss)
  • Arduino IDE

Steg 1: Lägg ut brödbrädan

Lägga ut brödbrädan
Lägga ut brödbrädan

Placera ESP32- och SD -kortutbrottet på brödbrädan.

Steg 2: Anslut SD -kortet

Anslutning av SD -kortet
Anslutning av SD -kortet

SD -kortanslutningarna (ESP32 SD -breakout) är följande:

GND GND

3v3 VDD

23 DI (MOSI)

19 DO (MISO)

18 SCLK

5 CS

Observera att dessa anslutningar kommer att vara annorlunda om du använder en annan mikrokontroller.

Steg 3: Programvarubiblioteken

om du inte har ESP-IDF installerat gå till deras webbplats och installera det.

Installera sedan microdecoder -biblioteket. Du kan göra detta genom att ladda ner förvaret och placera det i din Arduino Libraries -mapp. Mikrodekoderbiblioteket stöder för närvarande.wav- och.mp3 -filer.

Oavsett format finns det några vanliga metoder för varje klass och de omfattas av koden nedan. Dessa inkluderar att få några filer metadata och skriva ut dem på den seriella bildskärmen.

#inkludera "SD.h" // input

#include "mp3.h" // decoder #include "pcm.h" // raw audio data container mp3 MP3; void setup () {Serial.begin (115200); // Setup Serial SD.begin (); // Installera SD -anslutning Filfil = SD.open ("/cc.mp3"); // Öppna en MP3 -fil MP3.begin (fil); // berätta för MP3 -klassen vilken fil som ska bearbetas MP3.getMetadata (); // få metdadata Serial.print ("Bits per Sample:"); Serial.println (MP3.bitsPerSample); // skriva ut bitar per prov Serial.print ("Sample Rate:"); Serial.println (MP3. Fs); // och samplingsfrekvens} void loop () {}

Steg 4: Plotta MP3 -data på seriemonitorn

Plotta MP3 -data på seriell bildskärm
Plotta MP3 -data på seriell bildskärm

Med koden nedan kan du plotta upp vissa ljuddata på seriemonitorn. Detta kommer att vara mycket långsamt men kommer att visa dig hur du använder MP3 -biblioteket. Det minskar också data med en faktor 16 så att när data plottas ser det ut som en ljudvågform. Denna kod är hämtad från exemplet SPI_MP3_Serial.ino som medföljer mikrodecoder -biblioteket. Naturligtvis, framåt kommer du att vilja spela denna ljuddata på något sätt men det är ämnet för en annan instruerbar.

#inkludera "SD.h" // input

#inkludera "mp3.h" // avkodare mp3 MP3; // MP3 -klass pcm -ljud; // raw audio data void setup () {Serial.begin (115200); // Setup Serial SD.begin (); // Installera SD -anslutning Filfil = SD.open ("/cc.mp3"); // Öppna en MP3 -fil MP3.begin (fil); // Skicka fil till MP3 -klass} void loop () {audio = MP3.decode (); // Avkoda ljuddata till pcm -klass / * det finns 32 samplingar i audio.interleaved (16 vänster och 16 höger) * men vi ska bara plotta den första datapunkten i varje kanal. * Detta minskar effektivt data med en faktor 16 (för * endast visning av vågformen) */ Serial.print (audio.interleaved [0]); // vänster kanal Serial.print (""); Serial.println (audio.interleaved [1]); // höger kanal}

Rekommenderad: