Satura rādītājs:

Arduino bibliotēka MP3 dekodēšanai: 4 soļi
Arduino bibliotēka MP3 dekodēšanai: 4 soļi

Video: Arduino bibliotēka MP3 dekodēšanai: 4 soļi

Video: Arduino bibliotēka MP3 dekodēšanai: 4 soļi
Video: Использование Melexis MLX90614 Инфракрасный термометр с Arduino 2024, Novembris
Anonim
Arduino bibliotēka MP3 dekodēšanai
Arduino bibliotēka MP3 dekodēšanai
Arduino bibliotēka MP3 dekodēšanai
Arduino bibliotēka MP3 dekodēšanai

Tā kā ir palielinājusies tādu ātru mikrokontrolleru kā ESP32 un ARM M sērijas MP3 dekodēšanas izplatība, vairs nav jāveic specializēta aparatūra. Atšifrēšanu tagad var veikt programmatūrā.

No firmas earlephilhower ir pieejama lieliska bibliotēka, kas parāda, kā atšifrēt dažādus audio failus un atskaņot tos ar ESP mikrokontrolleri. Iedvesmojoties no tā, es pielāgoju daļu koda, lai izveidotu modulāru metodi MP3 failu lasīšanai mikrokontrolleros.

Es ceru, ka šī metode būs pietiekami vispārīga, lai to izmantotu jebkurā pietiekami ātrā mikrokontrollerī (ne tikai ESP32 plāksnē), bet līdz šim esmu pārbaudījis tikai ar ESP32.

Piegādes

Kā jau teicu iepriekš, es ceru, ka šī metode derēs jebkuram ātram mikrokontrolleram, bet var arī nebūt. Tāpēc, lai atkārtotu manus rezultātus, jums būs nepieciešams:

  • ESP32 tāfele
  • SD sadalīšanas panelis
  • SD karte
  • Jumper vadi
  • maizes dēlis
  • mikro USB kabelis (skices augšupielādēšanai)
  • Arduino IDE

1. darbība: maizes dēļa izkārtojums

Maizes dēļa izkārtojums
Maizes dēļa izkārtojums

Novietojiet ESP32 un SD kartes sadalījumu uz maizes dēļa.

2. darbība: SD kartes savienošana ar vadu

SD kartes savienošana
SD kartes savienošana

SD karšu savienojumi (ESP32 SD pārtraukums) ir šādi:

GND GND

3v3 VDD

23 DI (MOSI)

19 DARĪT (MISO)

18 SCLK

5 CS

Lūdzu, ņemiet vērā, ka šie savienojumi būs atšķirīgi, ja izmantosit citu mikrokontrolleru.

3. darbība: programmatūras bibliotēkas

ja jums nav instalēts ESP-IDF, dodieties uz viņu vietni un instalējiet to.

Pēc tam instalējiet mikrodecodera bibliotēku. To var izdarīt, lejupielādējot krātuvi un ievietojot to savā Arduino bibliotēku mapē. Mikrodekodētāja bibliotēka pašlaik atbalsta.wav un.mp3 failus.

Neatkarīgi no formāta ar katru klasi ir saistītas dažas izplatītas metodes, un tās ir aprakstītas zemāk esošajā kodā. Tie ietver dažu failu metadatu iegūšanu un drukāšanu seriālajā monitorā.

#include "SD.h" // ievade

#iekļaut "mp3.h" // dekodētāju #iekļaut "pcm.h" // neapstrādātu audio datu konteineru mp3 MP3; void setup () {Serial.begin (115200); // Sērijas SD iestatīšana.begin (); // SD savienojuma iestatīšana Faila fails = SD.open ("/cc.mp3"); // Atvērt MP3 failu MP3.begin (fails); // pateikt MP3 klasei, kādu failu apstrādāt MP3.getMetadata (); // iegūt metadatus Serial.print ("Biti par paraugu:"); Serial.println (MP3.bitsPerSample); // drukāt bitus uz parauga Serial.print ("Sample Rate:"); Serial.println (MP3. Fs); // un izlases likme} void loop () {}

4. darbība: uzzīmējiet MP3 datus sērijas monitorā

Uzzīmējiet MP3 datus sērijas monitorā
Uzzīmējiet MP3 datus sērijas monitorā

Izmantojot zemāk esošo kodu, varat attēlot dažus audio datus sērijas monitorā. Tas būs ļoti lēns, bet parādīs, kā izmantot MP3 bibliotēku. Tas arī samazina datu paraugus par koeficientu 16, lai, uzzīmējot datus, tie izskatītos kā audio viļņu forma. Šis kods ir ņemts no piemēra SPI_MP3_Serial.ino, kas ir pievienots mikrodecodera bibliotēkai. Protams, virzoties uz priekšu, jūs vēlēsities kaut kā atskaņot šos audio datus, taču tā ir cita pamācība.

#include "SD.h" // ievade

#iekļaut "mp3.h" // dekodētājs mp3 MP3; // MP3 klase pcm audio; // neapstrādātu audio datu void setup () {Serial.begin (115200); // Sērijas SD iestatīšana.begin (); // SD savienojuma iestatīšana Faila fails = SD.open ("/cc.mp3"); // Atvērt MP3 failu MP3.begin (fails); // Pārsūtīt failu MP3 klasei} void loop () {audio = MP3.decode (); // Atšifrējiet audio datus pcm klasē / * audio ir 32 paraugi. Interleaved (16 pa kreisi un 16 pa labi) *, bet mēs plānojam attēlot tikai pirmo datu punktu katrā kanālā. * Tas efektīvi samazina datu paraugus par koeficientu 16 (tikai * viļņu formas skatīšanai) */ Serial.print (audio.interleaved [0]); // kreisais kanāls Serial.print (""); Serial.println (audio.interleaved [1]); // labais kanāls}

Ieteicams: