Innehållsförteckning:
- Tillbehör
- Steg 1: Lägg ut brödbrädan
- Steg 2: Anslut SD -kortet
- Steg 3: Programvarubiblioteken
- Steg 4: Plotta MP3 -data på seriemonitorn
Video: Arduino -bibliotek för MP3 -avkodning: 4 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:38
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
Placera ESP32- och SD -kortutbrottet på brödbrädan.
Steg 2: Anslut 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
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:
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
Väggfäste för iPad som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: 4 steg (med bilder)
Väggfäste för iPad Som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: På senare tid har jag ägnat ganska mycket tid åt att automatisera saker i och runt mitt hus. Jag använder Domoticz som min hemautomationsapplikation, se www.domoticz.com för mer information. I min sökning efter en instrumentpanelapplikation som visar all Domoticz -information tillsammans
BOLSITA PARA MP3 Y PARLANTES / LITTLE BAG FÖR MP3 -SPELARE OCH HÖGTALARE: 5 steg
BOLSITA PARA MP3 Y PARLANTES / LITTLE BAG FOR MP3 PLAYER AND SPEAKERS: Soy nuevo en esto de los instructables, pero este bolsito era lo que queria hacer para escuchar musica en la ducha o para colgarlo al frente de la bicicleta. Y ya que estoy pensando en hacer tutoriales en video for my vlog: www.mercenario.org. Pennor
Övertyga dig själv om att bara använda en 12V-till-AC-omriktare för LED-ljussträngar istället för att koppla om dem för 12V: 3 steg
Övertyga dig själv om att bara använda en 12V-till-AC-linjeomvandlare för LED-ljussträngar istället för att koppla om dem för 12V: Min plan var enkel. Jag ville klippa upp en väggdriven LED-ljussträng i bitar och sedan dra om den för att gå av 12 volt. Alternativet var att använda en kraftomvandlare, men vi vet alla att de är fruktansvärt ineffektiva, eller hur? Höger? Eller är de det?
1.5A linjär regulator för konstant ström för lysdioder för: 6 steg
1.5A linjär regulator för konstant ström för lysdioder för: Så det finns massor av instruktioner som täcker användning av LED -lampor med hög ljusstyrka. Många av dem använder den kommersiellt tillgängliga Buckpuck från Luxdrive. Många av dem använder också linjära regleringskretsar som toppar vid 350 mA eftersom de är mycket ineffektiva