Isi kandungan:

Perpustakaan Arduino untuk Penyahkodan MP3: 4 Langkah
Perpustakaan Arduino untuk Penyahkodan MP3: 4 Langkah

Video: Perpustakaan Arduino untuk Penyahkodan MP3: 4 Langkah

Video: Perpustakaan Arduino untuk Penyahkodan MP3: 4 Langkah
Video: Arduino Tutorial 29 - Reading IR remote key press with ESP32| SunFounder's ESP32 IoT Learnig kit 2024, November
Anonim
Perpustakaan Arduino untuk Penyahkodan MP3
Perpustakaan Arduino untuk Penyahkodan MP3
Perpustakaan Arduino untuk Penyahkodan MP3
Perpustakaan Arduino untuk Penyahkodan MP3

Oleh kerana peningkatan prevalensi mikrokontroler cepat seperti penyahkodan ESP32 dan ARM M siri MP3 tidak lagi diperlukan untuk dilakukan oleh perkakasan pakar. Penyahkodan kini boleh dilakukan dalam perisian.

Terdapat perpustakaan hebat dari earlephilhower yang menunjukkan cara menyahkod pelbagai fail audio dan memainkannya di mikrokontroler ESP. Diilhamkan oleh ini saya menyesuaikan beberapa kod untuk membuat kaedah modular membaca fail MP3 pada mikrokontroler.

Harapan saya adalah kaedah ini cukup generik untuk digunakan pada mikrokontroler yang cukup pantas (bukan hanya papan ESP32) tetapi pada masa ini saya hanya menguji pada ESP32.

Bekalan

Seperti yang saya katakan sebelumnya, saya harap kaedah ini dapat digunakan untuk pengawal mikro yang pantas, tetapi mungkin tidak. Oleh itu, untuk mereplikasi keputusan saya, anda memerlukan:

  • Papan ESP32
  • Papan pelarian SD
  • Kad SD
  • Wayar Pelompat
  • papan roti
  • kabel USB mikro (untuk memuat naik lakaran)
  • Arduino IDE

Langkah 1: Menyusun Papan Roti

Menyusun Papan Roti
Menyusun Papan Roti

Letakkan pelindung kad ESP32 dan SD di papan roti.

Langkah 2: Pendawaian Kad SD

Pendawaian Kad SD
Pendawaian Kad SD

Sambungan kad SD (pelarian ESP32 SD) adalah seperti berikut:

GND GND

3v3 VDD

23 DI (MOSI)

19 DO (MISO)

18 SCLK

5 CS

Harap maklum bahawa sambungan ini akan berbeza jika anda menggunakan mikrokontroler yang berbeza.

Langkah 3: Perpustakaan Perisian

jika anda tidak memasang ESP-IDF ke laman web mereka dan memasangnya.

Kemudian pasang pustaka mikrodecoder. Anda boleh melakukannya dengan memuat turun repositori dan meletakkannya di folder Perpustakaan Arduino anda. Perpustakaan microdecoder pada masa ini menyokong fail.wav dan.mp3.

Terlepas dari formatnya, terdapat beberapa kaedah umum yang berkaitan dengan setiap kelas dan ia diliputi dalam kod di bawah. Ini termasuk mendapatkan beberapa metadata fail dan mencetaknya ke monitor bersiri.

masukan # SD.h //

#include "mp3.h" // decoder #include "pcm.h" // bekas data audio mentah mp3 MP3; persediaan tidak sah () {Serial.begin (115200); // Siapkan Serial SD.begin (); // Siapkan sambungan SD Fail fail = SD.open ("/ cc.mp3"); // Buka MP3 Fail MP3.begin (fail); // beritahu kelas MP3 fail apa yang hendak diproses MP3.getMetadata (); // dapatkan metdadata Serial.print ("Bits per Sampel:"); Serial.println (MP3.bitsPerSample); // bit cetak setiap sampel Serial.print ("Kadar Sampel:"); Serial.println (MP3. Fs); // dan kadar sampel} gelung kosong () {}

Langkah 4: Petak Data MP3 pada Serial Monitor

Petak Data MP3 pada Serial Monitor
Petak Data MP3 pada Serial Monitor

Dengan kod di bawah ini, anda dapat memplot beberapa data audio pada monitor Serial. Ini akan menjadi sangat perlahan tetapi akan menunjukkan kepada anda cara menggunakan perpustakaan MP3. Ini juga mengecilkan data dengan faktor 16 sehingga ketika data diplot terlihat seperti bentuk gelombang audio. Kod ini diambil dari contoh SPI_MP3_Serial.ino yang disertakan dengan pustaka mikrodecoder. Sudah tentu, melangkah ke hadapan anda mahu memainkan data audio ini entah bagaimana tetapi topik yang boleh dipelajari berbeza.

masukan # SD.h //

#include "mp3.h" // penyahkod mp3 MP3; // Audio MP3 kelas pcm; // persediaan audio mentah tidak sah () {Serial.begin (115200); // Siapkan Serial SD.begin (); // Siapkan sambungan SD Fail fail = SD.open ("/ cc.mp3"); // Buka Fail MP3 MP3.begin (fail); // Lulus fail ke kelas MP3} gelung kosong () {audio = MP3.decode (); // Menyahkod data audio ke dalam kelas pcm / * terdapat 32 sampel dalam audio. Disisipkan (16 kiri dan 16 kanan) * tetapi kami hanya akan merancang titik data pertama di setiap saluran. * Ini dengan berkesan merendahkan data dengan faktor 16 (untuk * hanya melihat bentuk gelombang) * / Serial.print (audio.interleaved [0]); // saluran kiri Serial.print (""); Serial.println (audio.interleaved [1]); // saluran kanan}

Disyorkan: