Inhoudsopgave:

Arduino-bibliotheek voor MP3-decodering: 4 stappen
Arduino-bibliotheek voor MP3-decodering: 4 stappen

Video: Arduino-bibliotheek voor MP3-decodering: 4 stappen

Video: Arduino-bibliotheek voor MP3-decodering: 4 stappen
Video: MP3 using DFplayer and Arduino | Soundpod part 2 [DIY] 2024, November
Anonim
Arduino-bibliotheek voor MP3-decodering
Arduino-bibliotheek voor MP3-decodering
Arduino-bibliotheek voor MP3-decodering
Arduino-bibliotheek voor MP3-decodering

Door de toegenomen prevalentie van snelle microcontrollers zoals de ESP32 en de ARM M-serie is het decoderen van MP3 niet langer vereist door gespecialiseerde hardware. De decodering kan nu in software worden gedaan.

Er is een geweldige bibliotheek beschikbaar van earlephilhower die laat zien hoe een breed scala aan audiobestanden kan worden gedecodeerd en afgespeeld op ESP-microcontrollers. Hierdoor geïnspireerd heb ik een deel van de code aangepast om een modulaire methode te creëren voor het lezen van MP3-bestanden op microcontrollers.

Ik hoop dat deze methode generiek genoeg zal zijn voor gebruik op elke microcontroller die snel genoeg is (niet alleen een ESP32-bord), maar vanaf nu heb ik alleen getest op een ESP32.

Benodigdheden

Zoals ik al eerder zei, hoop ik dat deze methode zal werken voor elke snelle microcontroller, maar misschien niet. Daarom heb je nodig om mijn resultaten te repliceren:

  • Een ESP32-bord
  • SD breakout-bord
  • SD-kaart
  • Doorverbindingsdraden
  • broodplankje
  • micro-USB-kabel (voor het uploaden van schets)
  • Arduino IDE

Stap 1: Het breadboard neerleggen

Het breadboard neerleggen
Het breadboard neerleggen

Plaats ESP32 en SD-kaart breakout op het breadboard.

Stap 2: Bedrading van de SD-kaart

De SD-kaart bedraden
De SD-kaart bedraden

De SD-kaartaansluitingen (ESP32 SD breakout) zijn als volgt:

GND GND

3v3 VDD

23 DI (MOSI)

19 DOEN (MISO)

18 SCLK

5 CS

Houd er rekening mee dat deze verbindingen anders zijn als u een andere microcontroller gebruikt.

Stap 3: De softwarebibliotheken

als je de ESP-IDF niet hebt geïnstalleerd, ga dan naar hun website en installeer het.

Installeer vervolgens de microdecoder-bibliotheek. U kunt dit doen door de repository te downloaden en in uw Arduino Libraries-map te plaatsen. De microdecoder-bibliotheek ondersteunt momenteel.wav- en.mp3-bestanden.

Ongeacht het formaat zijn er een paar veelvoorkomende methoden die aan elke klasse zijn gekoppeld en deze worden behandeld in de onderstaande code. Deze omvatten het ophalen van enkele metagegevens van de bestanden en het afdrukken naar de seriële monitor.

#include "SD.h" // invoer

#include "mp3.h" // decoder #include "pcm.h" // raw audio data container mp3 MP3; void setup() { Serial.begin(115200); // Seriële SD instellen.begin(); // SD-verbinding instellen Bestandsbestand = SD.open ("/cc.mp3"); // Open een MP3-bestand MP3.begin(bestand); // vertel de MP3-klasse welk bestand MP3.getMetadata(); // haal de metdadata Serial.print("Bits per Sample: "); Serial.println(MP3.bitsPerSample); // print bits per sample Serial.print("Sample Rate: "); Seriële.println(MP3. Fs); // en sample rate } void loop () { }

Stap 4: Plot MP3-gegevens op de seriële monitor

Plot MP3-gegevens op de seriële monitor
Plot MP3-gegevens op de seriële monitor

Met de onderstaande code kunt u enkele audiogegevens plotten op de seriële monitor. Dit gaat erg langzaam, maar laat je zien hoe je de MP3-bibliotheek gebruikt. Het verkleint ook de gegevens met een factor 16, zodat wanneer de gegevens worden geplot, het eruitziet als een audiogolfvorm. Deze code is afkomstig uit het voorbeeld SPI_MP3_Serial.ino dat bij de microdecoder-bibliotheek wordt geleverd. Natuurlijk wil je in de toekomst deze audiogegevens op de een of andere manier afspelen, maar dat is het onderwerp van een andere instructable.

#include "SD.h" // invoer

#include "mp3.h" // decoder mp3 MP3; // MP3-klasse pcm-audio; // onbewerkte audiogegevens void setup () {Serial.begin (115200); // Seriële SD instellen.begin(); // SD-verbinding instellen Bestandsbestand = SD.open ("/cc.mp3"); // Open een MP3-bestand MP3.begin(bestand); // Geef bestand door aan MP3-klasse} void loop () { audio = MP3.decode (); // Decodeer audiogegevens in pcm-klasse /* er zijn 32 samples in audio.interleaved (16 links en 16 rechts) * maar we gaan alleen het eerste gegevenspunt in elk kanaal plotten. * Dit reduceert de data effectief met een factor 16 (om * alleen de golfvorm te bekijken) */ Serial.print(audio.interleaved[0]); // linkerkanaal Serial.print (" "); Serial.println(audio.interleaved[1]); // rechter kanaal}

Aanbevolen: