Indholdsfortegnelse:

Arduino -bibliotek til MP3 -afkodning: 4 trin
Arduino -bibliotek til MP3 -afkodning: 4 trin

Video: Arduino -bibliotek til MP3 -afkodning: 4 trin

Video: Arduino -bibliotek til MP3 -afkodning: 4 trin
Video: Digital Counter with 7-Segment Display 2024, Juli
Anonim
Arduino -bibliotek til MP3 -afkodning
Arduino -bibliotek til MP3 -afkodning
Arduino -bibliotek til MP3 -afkodning
Arduino -bibliotek til MP3 -afkodning

På grund af den øgede forekomst af hurtige mikrokontrollere såsom ESP32 og ARM M -serien MP3 -afkodning er ikke længere påkrævet af specialhardware. Afkodningen kan nu udføres i software.

Der er et fantastisk bibliotek tilgængeligt fra earlephilhower, der viser, hvordan man kan afkode en lang række lydfiler og afspille dem på ESP -mikrokontroller. Inspireret af dette tilpassede jeg noget af koden til at oprette en modulær metode til læsning af MP3 -filer på mikrokontrollere.

Mit håb er, at denne metode vil være generisk nok til brug på enhver hurtig nok mikrokontroller (ikke kun et ESP32 -kort), men fra nu af har jeg kun testet på en ESP32.

Forbrugsvarer

Som jeg sagde før, håber jeg, at denne metode vil fungere for enhver hurtig mikrokontroller, men det er muligvis ikke. Derfor skal du: for at replikere mine resultater:

  • Et ESP32 -kort
  • SD breakout board
  • SD kort
  • Jumper Wires
  • brødbræt
  • mikro -USB -kabel (til upload af skitse)
  • Arduino IDE

Trin 1: Udlægning af brødbrættet

Udlægning af brødbrættet
Udlægning af brødbrættet

Placer ESP32 og SD -kortbrud på brødbrættet.

Trin 2: Tilslutning af SD -kortet

Tilslutning af SD -kort
Tilslutning af SD -kort

SD -kortforbindelserne (ESP32 SD -breakout) er som følger:

GND GND

3v3 VDD

23 DI (MOSI)

19 GØR (MISO)

18 SCLK

5 CS

Bemærk, at disse forbindelser vil være forskellige, hvis du bruger en anden mikrokontroller.

Trin 3: Softwarebibliotekerne

hvis du ikke har ESP-IDF installeret, skal du gå til deres websted og installere det.

Installer derefter microdecoder -biblioteket. Du kan gøre dette ved at downloade depotet og placere det i din Arduino Libraries -mappe. Mikrodekoderbiblioteket understøtter i øjeblikket.wav- og.mp3 -filer.

Uanset formatet er der et par almindelige metoder forbundet med hver klasse, og de er dækket af nedenstående kode. Disse inkluderer at få nogle filers metadata og udskrive dem til den serielle skærm.

#include "SD.h" // input

#include "mp3.h" // decoder #include "pcm.h" // raw audio data container mp3 MP3; ugyldig opsætning () {Serial.begin (115200); // Setup Serial SD.begin (); // Opsætning af SD -forbindelse Filfil = SD.open ("/cc.mp3"); // Åbn en MP3 -fil MP3.begin (fil); // fortæl MP3 -klassen, hvilken fil der skal behandles MP3.getMetadata (); // få metdadata Serial.print ("Bits pr. Sample:"); Serial.println (MP3.bitsPerSample); // udskriv bits pr. prøve Serial.print ("Sample Rate:"); Serial.println (MP3. Fs); // og sample rate} void loop () {}

Trin 4: Plot MP3 -data på den serielle skærm

Plot MP3 -data på den serielle skærm
Plot MP3 -data på den serielle skærm

Med koden herunder kan du plotte nogle lyddata på den serielle skærm. Dette vil være meget langsomt, men vil vise dig, hvordan du bruger MP3 -biblioteket. Det nedprøver også dataene med en faktor 16, så når dataene er afbildet, ligner de en lydbølgeform. Denne kode er taget fra eksemplet SPI_MP3_Serial.ino, der følger med mikrodecoder -biblioteket. Selvfølgelig vil du fremover gerne afspille disse lyddata på en eller anden måde, men det er emnet for en anden instruerbar.

#include "SD.h" // input

#inkludere "mp3.h" // dekoder mp3 MP3; // MP3 -klasse pcm -lyd; // opsætning af rå lyddata tomrum () {Serial.begin (115200); // Setup Serial SD.begin (); // Opsætning af SD -forbindelse Filfil = SD.open ("/cc.mp3"); // Åbn en MP3 -fil MP3.begin (fil); // Send fil til MP3 -klasse} void loop () {audio = MP3.decode (); // Afkod lyddata til pcm -klasse / * der er 32 prøver i audio.interleaved (16 til venstre og 16 til højre) *, men vi vil kun plotte det første datapunkt i hver kanal. * Dette nedprøver effektivt dataene med en faktor 16 (til * kun at se bølgeformen) */ Serial.print (audio.interleaved [0]); // venstre kanal Serial.print (""); Serial.println (audio.interleaved [1]); // højre kanal}

Anbefalede: