Sisällysluettelo:

Arduinon kirjasto MP3 -dekoodaukseen: 4 vaihetta
Arduinon kirjasto MP3 -dekoodaukseen: 4 vaihetta

Video: Arduinon kirjasto MP3 -dekoodaukseen: 4 vaihetta

Video: Arduinon kirjasto MP3 -dekoodaukseen: 4 vaihetta
Video: Веб-программирование – информатика для руководителей бизнеса 2016 2024, Heinäkuu
Anonim
Arduinon kirjasto MP3 -dekoodaukseen
Arduinon kirjasto MP3 -dekoodaukseen
Arduinon kirjasto MP3 -dekoodaukseen
Arduinon kirjasto MP3 -dekoodaukseen

Koska nopeat mikro -ohjaimet, kuten ESP32 ja ARM M -sarjan MP3 -dekoodaus, ovat yleistyneet, erikoislaitteiston ei tarvitse enää suorittaa niitä. Dekoodaus voidaan nyt suorittaa ohjelmistolla.

Earlephilhowerilta on saatavana loistava kirjasto, joka näyttää kuinka purkaa monenlaisia äänitiedostoja ja toistaa niitä ESP -mikrokontrollereilla. Tämän innoittamana olen mukauttanut osan koodista luodakseni modulaarisen menetelmän MP3 -tiedostojen lukemiseksi mikrokontrollereilla.

Toivon, että tämä menetelmä on riittävän yleinen käytettäväksi millä tahansa riittävän nopealla mikrokontrollerilla (ei pelkästään ESP32 -kortilla), mutta toistaiseksi olen testannut vain ESP32: lla.

Tarvikkeet

Kuten aiemmin sanoin, toivon, että tämä menetelmä toimii kaikilla nopeilla mikrokontrollereilla, mutta se ei ehkä toimi. Siksi tulosten kopioimiseksi tarvitset:

  • ESP32 -levy
  • SD -murtokortti
  • Sd-kortti
  • Hyppyjohdot
  • leipälauta
  • mikro -USB -kaapeli (luonnoksen lataamiseen)
  • Arduino IDE

Vaihe 1: Leipälevyn asettaminen

Leipälevyn asettaminen
Leipälevyn asettaminen

Aseta ESP32 ja SD -korttilevy leipälevylle.

Vaihe 2: SD -kortin kytkentä

SD -kortin kytkentä
SD -kortin kytkentä

SD -kortin liitännät (ESP32 SD -katkaisu) ovat seuraavat:

GND GND

3v3 VDD

23 DI (MOSI)

19 TEE (MISO)

18 SCLK

5 CS

Huomaa, että nämä liitännät ovat erilaisia, jos käytät toista mikro -ohjainta.

Vaihe 3: Ohjelmistokirjastot

Jos sinulla ei ole ESP-IDF: ää asennettuna, siirry heidän verkkosivustolleen ja asenna se.

Asenna sitten mikrodekooderikirjasto. Voit tehdä tämän lataamalla arkiston ja sijoittamalla sen Arduino Libraries -kansioon. Mikrodekooderikirjasto tukee tällä hetkellä.wav- ja.mp3 -tiedostoja.

Muodosta riippumatta kuhunkin luokkaan liittyy muutama yleinen menetelmä, ja ne käsitellään alla olevassa koodissa. Näitä ovat joidenkin tiedostojen metatietojen hakeminen ja tulostaminen sarjamonitorille.

#include "SD.h" // input

#Sisällytä "mp3.h" // dekooderi #Sisällytä "pcm.h" // raaka äänitiedosto MP3 MP3; void setup () {Serial.begin (115200); // Serial SD: n asennus.begin (); // Asenna SD -yhteys Tiedostotiedosto = SD.open ("/cc.mp3"); // Avaa MP3 -tiedosto MP3.begin (tiedosto); // kerro MP3 -luokalle, mitä tiedostoa käsitellään MP3.getMetadata (); // hae metatiedot Serial.print ("Bits per Sample:"); Serial.println (MP3.bitsPerSample); // tulostusbittiä näytettä kohti Serial.print ("Sample Rate:"); Serial.println (MP3. Fs); // ja näytteenottotaajuus} void loop () {}

Vaihe 4: Piirrä MP3 -tiedot sarjamonitoriin

Piirrä MP3 -tiedot sarjamonitoriin
Piirrä MP3 -tiedot sarjamonitoriin

Alla olevan koodin avulla voit piirtää joitain äänitietoja sarjamonitorille. Tämä on hyvin hidasta, mutta näyttää, kuinka MP3 -kirjastoa käytetään. Se myös alentaa datan kertoimella 16 niin, että kun data piirretään, se näyttää audioaaltomuodolta. Tämä koodi on otettu esimerkistä SPI_MP3_Serial.ino, joka toimitetaan mikrodekooderikirjaston mukana. Tietysti eteenpäin siirryttäessä haluat toistaa tätä äänidataa jotenkin, mutta se on eri ohjeen aihe.

#include "SD.h" // input

#include "mp3.h" // dekooderi mp3 MP3; // MP3 -luokka pcm -ääni; // raa'an äänidatan void setup () {Serial.begin (115200); // Serial SD: n asennus.begin (); // Asenna SD -yhteys Tiedostotiedosto = SD.open ("/cc.mp3"); // Avaa MP3 -tiedosto MP3.begin (tiedosto); // Siirrä tiedosto MP3 -luokkaan} void loop () {audio = MP3.decode (); // Dekoodaa äänitiedot pcm -luokkaan / * äänessä on 32 näytettä. Lomitettu (16 vasenta ja 16 oikeaa) *, mutta aiomme piirtää vain kunkin kanavan ensimmäisen datapisteen. * Tämä alentaa tiedot tehokkaasti 16 kertaa (* vain aaltomuodon katseluun) */ Sarjajälki (audio.interleaved [0]); // vasen kanava Serial.print (""); Serial.println (audio.interleaved [1]); // oikea kanava}

Suositeltava: