Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
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
Aseta ESP32 ja SD -korttilevy leipälevylle.
Vaihe 2: 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
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}