Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Për shkak të përhapjes së shtuar të mikrokontrolluesve të shpejtë si ESP32 dhe serisë ARM M, deshifrimi i MP3 nuk kërkohet më të bëhet nga pajisjet speciale. Dekodimi tani mund të bëhet në softuer.
Ekziston një bibliotekë e shkëlqyeshme në dispozicion nga earlephilhower që tregon se si të deshifroni një larmi të madhe skedarësh audio dhe t'i luani ato në mikrokontrolluesit ESP. Frymëzuar nga kjo, unë përshtata disa nga kodi për të krijuar një metodë modulare të leximit të skedarëve MP3 në mikrokontrolluesit.
Shpresa ime është që kjo metodë të jetë mjaft gjenerike për t’u përdorur në çdo mikrokontrollues mjaft të shpejtë (jo vetëm në një bord ESP32), por tani e tutje unë kam testuar vetëm në një ESP32.
Furnizimet
Siç thashë më parë, shpresoj se kjo metodë do të funksionojë për çdo mikrokontrollues të shpejtë, por mund të mos funksionojë. Prandaj, për të përsëritur rezultatet e mia do t'ju duhet:
- Një bord ESP32
- Bordi i ndarjes SD
- kartë SD
- Telat Jumper
- dërrasë buke
- kabllo mikro USB (për ngarkimin e skicës)
- Arduino IDE
Hapi 1: Shtrimi i tabelës së bukës
Vendosni ndarjen ESP32 dhe kartën SD në tryezën e bukës.
Hapi 2: Instalimi i kartës SD
Lidhjet e kartës SD (ndarja ESP32 SD) janë si më poshtë:
GND GND
3v3 VDD
23 DI (MOSI)
19 Bëj (MISO)
18 SCLK
5 CS
Ju lutemi vini re se këto lidhje do të jenë të ndryshme nëse përdorni një mikrokontrollues tjetër.
Hapi 3: Bibliotekat e Softuerëve
nëse nuk e keni ESP-IDF të instaluar në faqen e tyre të internetit dhe instalojeni.
Pastaj instaloni bibliotekën e mikrodekoderit. Ju mund ta bëni këtë duke shkarkuar depon dhe duke e vendosur atë në dosjen tuaj të Bibliotekave Arduino. Biblioteka e mikrodecoder -it aktualisht mbështet skedarët.wav dhe.mp3.
Pavarësisht nga formati, ka disa metoda të zakonshme që lidhen me secilën klasë dhe ato janë të mbuluara në kodin më poshtë. Këto përfshijnë marrjen e disa meta të dhënave të skedarëve dhe printimin e tyre në monitorin serik.
#përfshi "SD.h" // hyrja
#përfshi "mp3.h" // deshifrues #përfshi "pcm.h" // enë të papërpunuara të të dhënave audio MP3 MP3; void setup () {Serial.begin (115200); // Setup Serial SD.begin (); // Konfiguro lidhjen SD Skedari i skedarit = SD.open ("/cc.mp3"); // Hap një skedar MP3 MP3.fill (skedar); // tregoni klasës MP3 se çfarë skedari të përpunojë MP3.getMetadata (); // merrni metadadata Serial.print ("Bit për Mostër:"); Serial.println (MP3.bitsPerSample); // bitët e printuar për mostër Serial.print ("Vlerësimi i mostrës:"); Serial.println (MP3. Fs); // dhe norma e mostrës} lak void () {}
Hapi 4: Komplotoni të dhëna MP3 në Monitorin Serial
Me kodin më poshtë mund të vizatoni disa të dhëna audio në monitorin Serial. Kjo do të jetë shumë e ngadaltë, por do t'ju tregojë se si të përdorni bibliotekën MP3. Ai gjithashtu zbret shembujt e të dhënave me një faktor 16 në mënyrë që kur të dhënat të vizatohen të duket si një formë valore audio. Ky kod është marrë nga shembulli SPI_MP3_Serial.ino që vjen me bibliotekën e mikrodekoderit. Sigurisht, duke ecur përpara ju do të dëshironi t'i luani disi këto të dhëna audio, por kjo është tema e një udhëzimi tjetër.
#përfshi "SD.h" // hyrje
#përfshi "mp3.h" // deshifrues mp3 MP3; // Klasa MP3 pcm audio; // të dhëna të papërpunuara audio void setup () {Serial.begin (115200); // Setup Serial SD.begin (); // Konfiguro lidhjen SD Skedari i skedarit = SD.open ("/cc.mp3"); // Hapni një skedar MP3 MP3.fill (skedar); // Kalojeni skedarin në klasën MP3} loop void () {audio = MP3.decode (); // Dekodoni të dhënat audio në klasën pcm / * ka 32 mostra në audio. Të ndërlidhura (16 majtas dhe 16 djathtas) * por ne do të vizatojmë vetëm pikën e parë të të dhënave në secilin kanal. * Kjo zvogëlon në mënyrë efektive të dhënat me një faktor 16 (për * shikimin vetëm të formës së valës) */ Serial.print (audio.interleaved [0]); // kanali i majtë Serial.print (""); Serial.println (audio.interleaved [1]); // kanali i djathtë}