Obsah:

Knižnica Arduino pre dekódovanie MP3: 4 kroky
Knižnica Arduino pre dekódovanie MP3: 4 kroky

Video: Knižnica Arduino pre dekódovanie MP3: 4 kroky

Video: Knižnica Arduino pre dekódovanie MP3: 4 kroky
Video: Control 32 Servo over Wi-Fi using ESP32 and PCA9685 via desktop or mobile phone V5 2024, Júl
Anonim
Knižnica Arduino pre dekódovanie MP3
Knižnica Arduino pre dekódovanie MP3
Knižnica Arduino pre dekódovanie MP3
Knižnica Arduino pre dekódovanie MP3

Vzhľadom na zvýšený výskyt rýchlych mikrokontrolérov, ako sú ESP32 a ARM M série, dekódovanie MP3 už nemusí vykonávať špecializovaný hardvér. Dekódovanie je teraz možné vykonávať softvérovo.

Z Earlephilhower je k dispozícii skvelá knižnica, ktorá ukazuje, ako dekódovať najrozmanitejšie zvukové súbory a prehrávať ich na mikrokontroléroch ESP. Inšpirovaný týmto som upravil časť kódu tak, aby vytvoril modulárny spôsob čítania súborov MP3 na mikrokontroléroch.

Dúfam, že táto metóda bude dostatočne všeobecná na použitie na akomkoľvek dostatočne rýchlom mikrokontroléri (nielen na doske ESP32), ale zatiaľ som testoval iba na ESP32.

Zásoby

Ako som už povedal, dúfam, že táto metóda bude fungovať pre akýkoľvek rýchly mikrokontrolér, ale nemusí. Preto na replikáciu mojich výsledkov budete potrebovať:

  • Doska ESP32
  • Breakout doska SD
  • SD karta
  • Prepojovacie vodiče
  • breadboard
  • kábel micro USB (na nahrávanie náčrtu)
  • Arduino IDE

Krok 1: Položenie Breadboardu

Položenie Breadboardu
Položenie Breadboardu

Umiestnite oddeľovací kábel ESP32 a SD karty na dosku.

Krok 2: Zapojenie karty SD

Zapojenie karty SD
Zapojenie karty SD

Pripojenia karty SD (ESP32 SD breakout) sú nasledujúce:

GND GND

3v3 VDD

23 DI (MOSI)

19 DO (MISO)

18 SCLK

5 CS

Upozorňujeme, že tieto pripojenia sa budú líšiť, ak používate iný mikrokontrolér.

Krok 3: Softvérové knižnice

ak nemáte nainštalovaný ESP-IDF, prejdite na ich webovú stránku a nainštalujte si ho.

Potom nainštalujte knižnicu mikrodekodérov. Môžete to urobiť stiahnutím úložiska a umiestnením do priečinka Knižnice Arduino. Knižnica mikrodekodérov v súčasnosti podporuje súbory.wav a.mp3.

Bez ohľadu na formát je s každou triedou spojených niekoľko bežných metód, ktoré sú popísané v nižšie uvedenom kóde. Patrí sem získanie niektorých metadát súborov a ich tlač na sériový monitor.

#include "SD.h" // vstup

#include "mp3.h" // dekodér #include "pcm.h" // kontajner na surové zvukové údaje mp3 MP3; void setup () {Serial.begin (115200); // Nastavenie sériového SD.begin (); // Nastaviť pripojenie SD Súbor súboru = SD.open ("/cc.mp3"); // Otvorte súbor MP3 MP3.begin (súbor); // povedz triede MP3, aký súbor má spracovať MP3.getMetadata (); // získajte metdadáta Serial.print ("Bity na vzorku:"); Serial.println (MP3.bitsPerSample); // tlač bitov na vzorku Serial.print ("Sample Rate:"); Serial.println (MP3. Fs); // a vzorkovacia frekvencia} void loop () {}

Krok 4: Nakreslite údaje MP3 na sériový monitor

Vykreslite údaje MP3 na sériový monitor
Vykreslite údaje MP3 na sériový monitor

Pomocou nižšie uvedeného kódu môžete vykresliť niektoré zvukové údaje na sériový monitor. Bude to veľmi pomalé, ale ukáže vám, ako používať knižnicu MP3. Tiež 16 -násobne prevzorkuje údaje, takže keď sú údaje vykreslené, vyzerá to ako zvukový priebeh. Tento kód je prevzatý z príkladu SPI_MP3_Serial.ino, ktorý sa dodáva s knižnicou mikrodekodérov. Vpred, samozrejme, budete chcieť tieto zvukové údaje nejako prehrať, ale to je téma iného pokynu.

#include "SD.h" // vstup

#include "mp3.h" // dekodér mp3 MP3; // Trieda MP3 pcm audio; // nastavenie neplatných zvukových dát () {Serial.begin (115200); // Nastavenie sériového SD.begin (); // Nastaviť pripojenie SD Súbor súboru = SD.open ("/cc.mp3"); // Otvorte súbor MP3 MP3.begin (súbor); // Odovzdanie súboru do triedy MP3} void loop () {audio = MP3.decode (); // Dekódovanie zvukových údajov do triedy pcm / * v zvuku je 32 vzoriek. Prekladané (16 vľavo a 16 vpravo) *, ale v každom kanáli vykreslíme iba prvý údajový bod. * Toto efektívne downampluje údaje faktorom 16 (len pre * zobrazenie priebehu) */ Serial.print (audio.interleaved [0]); // ľavý kanál Serial.print (""); Serial.println (audio.interleaved [1]); // pravý kanál}

Odporúča: