Sisukord:

Arduino raamatukogu MP3 dekodeerimiseks: 4 sammu
Arduino raamatukogu MP3 dekodeerimiseks: 4 sammu

Video: Arduino raamatukogu MP3 dekodeerimiseks: 4 sammu

Video: Arduino raamatukogu MP3 dekodeerimiseks: 4 sammu
Video: Talkie.h library functioning 2024, Juuli
Anonim
Arduino raamatukogu MP3 dekodeerimiseks
Arduino raamatukogu MP3 dekodeerimiseks
Arduino raamatukogu MP3 dekodeerimiseks
Arduino raamatukogu MP3 dekodeerimiseks

Kiirete mikrokontrollerite, nagu ESP32 ja ARM M seeria MP3 dekodeerimise suurenenud levimuse tõttu ei pea enam spetsiaalset riistvara tegema. Dekodeerimist saab nüüd teha tarkvaras.

Earlephilhowerilt on saadaval suurepärane raamatukogu, mis näitab, kuidas mitmesuguseid helifaile dekodeerida ja neid ESP -mikrokontrolleritel esitada. Sellest inspireerituna kohandasin osa koodist, et luua modulaarne meetod MP3 -failide lugemiseks mikrokontrolleritel.

Loodan, et see meetod on piisavalt üldine kasutamiseks piisavalt kiirel mikrokontrolleril (mitte ainult ESP32 plaadil), kuid praeguseks olen katsetanud ainult ESP32 -ga.

Tarvikud

Nagu ma juba ütlesin, loodan, et see meetod töötab iga kiire mikrokontrolleri puhul, kuid ei pruugi. Seetõttu vajate minu tulemuste kordamiseks:

  • ESP32 plaat
  • SD purunemisplaat
  • SD -kaart
  • Jumper juhtmed
  • leivalaud
  • mikro -USB -kaabel (visandi üleslaadimiseks)
  • Arduino IDE

1. samm: leivalaua paigutamine

Leivalaua paigutamine
Leivalaua paigutamine

Asetage ESP32 ja SD -kaardi katkestused leivaplaadile.

Samm: SD -kaardi ühendamine

SD -kaardi juhtmestik
SD -kaardi juhtmestik

SD -kaardi ühendused (ESP32 SD -katkestus) on järgmised:

GND GND

3v3 VDD

23 DI (MOSI)

19 TEE (MISO)

18 SCLK

5 CS

Pange tähele, et need ühendused on erinevad, kui kasutate erinevat mikrokontrollerit.

3. samm: tarkvararaamatukogud

kui teil pole ESP-IDF-i installitud, minge nende veebisaidile ja installige see.

Seejärel installige mikrodecoder raamatukogu. Seda saate teha, laadides hoidla alla ja paigutades selle kausta Arduino Libraries. Mikrodekoodriteek toetab praegu.wav- ja.mp3 -faile.

Sõltumata vormingust on iga klassiga seotud mõned tavalised meetodid ja neid käsitletakse allolevas koodis. Nende hulka kuulub failide metaandmete hankimine ja jadamonitorile printimine.

#include "SD.h" // sisend

#include "mp3.h" // dekodeerija #include "pcm.h" // toores audioandmete konteiner mp3 MP3; void setup () {Serial.begin (115200); // Seeria seadistamine SD.begin (); // SD -ühenduse seadistamine Failifail = SD.open ("/cc.mp3"); // Ava MP3 fail MP3.begin (fail); // ütle MP3 klassile, millist faili töödelda MP3.getMetadata (); // hankige metaandmed Serial.print ("Bits per Sample:"); Serial.println (MP3.bitsPerSample); // trükibitte proovi kohta Serial.print ("Sample Rate:"); Serial.println (MP3. Fs); // ja proovivõtu sagedus} void loop () {}

Samm 4: Joonistage MP3 -andmed jadamonitorile

Joonistage jadamonitorile MP3 andmed
Joonistage jadamonitorile MP3 andmed

Alloleva koodiga saate joonistada jada monitorile mõningaid heliandmeid. See on väga aeglane, kuid näitab teile, kuidas MP3 -kogu kasutada. Samuti vähendab see andmete arvu 16 korda, nii et andmete joonistamisel näeks see välja nagu heli lainekuju. See kood on võetud näitest SPI_MP3_Serial.ino, mis on kaasas mikrodecoder raamatukoguga. Loomulikult tahate edasi liikudes neid heliandmeid kuidagi esitada, kuid see on teistsuguse juhendi teema.

#include "SD.h" // sisend

#include "mp3.h" // dekooder mp3 MP3; // MP3 klass pcm audio; // toores audioandmete tühistamine setup () {Serial.begin (115200); // Seeria seadistamine SD.begin (); // SD -ühenduse seadistamine Failifail = SD.open ("/cc.mp3"); // Ava MP3 fail MP3.begin (fail); // Faili edastamine MP3 klassi} void loop () {audio = MP3.decode (); // dekodeerida heliandmed pcm -klassi / * helis on 32 näidist. Interleaved (16 vasakul ja 16 paremal) *, kuid me joonistame ainult iga kanali esimese andmepunkti. * See võtab andmed tõhusalt alla 16 korda (ainult * lainekuju vaatamiseks) */ Serial.print (audio.interleaved [0]); // vasak kanal Serial.print (""); Serial.println (audio.interleaved [1]); // parem kanal}

Soovitan: