Daftar Isi:

Perpustakaan Arduino untuk Decoding MP3: 4 Langkah
Perpustakaan Arduino untuk Decoding MP3: 4 Langkah

Video: Perpustakaan Arduino untuk Decoding MP3: 4 Langkah

Video: Perpustakaan Arduino untuk Decoding MP3: 4 Langkah
Video: MP3 module dengan Arduino, isi dan play suara MP3 module dengan arduino 2024, Juli
Anonim
Perpustakaan Arduino untuk Decoding MP3
Perpustakaan Arduino untuk Decoding MP3
Perpustakaan Arduino untuk Decoding MP3
Perpustakaan Arduino untuk Decoding MP3

Karena meningkatnya prevalensi mikrokontroler cepat seperti ESP32 dan decoding MP3 seri ARM M tidak lagi diperlukan oleh perangkat keras khusus. Decoding sekarang dapat dilakukan dalam perangkat lunak.

Ada perpustakaan hebat yang tersedia dari earlephilhower yang menunjukkan cara mendekode berbagai macam file audio dan memutarnya di mikrokontroler ESP. Terinspirasi oleh ini saya mengadaptasi beberapa kode untuk membuat metode modular membaca file MP3 pada mikrokontroler.

Harapan saya adalah bahwa metode ini akan cukup umum untuk digunakan pada mikrokontroler yang cukup cepat (bukan hanya papan ESP32) tetapi sampai sekarang saya hanya menguji pada ESP32.

Perlengkapan

Seperti yang saya katakan sebelumnya, saya berharap metode ini akan bekerja untuk semua mikrokontroler cepat, tetapi mungkin tidak. Oleh karena itu untuk mereplikasi hasil saya, Anda perlu:

  • Papan ESP32
  • Papan pelarian SD
  • kartu SD
  • Kabel Jumper
  • papan tempat memotong roti
  • kabel micro USB (untuk mengunggah sketsa)
  • Arduino IDE

Langkah 1: Meletakkan Papan Tempat memotong roti

Meletakkan Papan Tempat memotong roti
Meletakkan Papan Tempat memotong roti

Tempatkan pelarian ESP32 dan kartu SD di papan tempat memotong roti.

Langkah 2: Menghubungkan Kartu SD

Menghubungkan Kartu SD
Menghubungkan Kartu SD

Koneksi kartu SD (ESP32 SD breakout) adalah sebagai berikut:

GND GND

3v3 VDD

23 DI (MOSI)

19 LAKUKAN (MISO)

18 SCLK

5 CS

Harap dicatat bahwa koneksi ini akan berbeda jika Anda menggunakan mikrokontroler yang berbeda.

Langkah 3: Perpustakaan Perangkat Lunak

jika Anda belum menginstal ESP-IDF, kunjungi situs web mereka dan instal.

Kemudian instal perpustakaan mikrodekoder. Anda dapat melakukan ini dengan mengunduh repositori dan menempatkannya di folder Perpustakaan Arduino Anda. Pustaka microdecoder saat ini mendukung file.wav dan.mp3.

Terlepas dari formatnya, ada beberapa metode umum yang terkait dengan setiap kelas dan mereka tercakup dalam kode di bawah ini. Ini termasuk mendapatkan beberapa metadata file dan mencetaknya ke monitor serial.

#sertakan "SD.h" // masukan

#include "mp3.h" // decoder #include "pcm.h" // wadah data audio mentah mp3 MP3; void setup() { Serial.begin(115200); // Setup Serial SD.begin(); // Siapkan koneksi SD File file = SD.open("/cc.mp3"); // Buka File MP3 MP3.begin(file); // beri tahu kelas MP3 file apa yang akan diproses MP3.getMetadata(); // dapatkan metdadata Serial.print("Bit per Sampel: "); Serial.println(MP3.bitsPerSample); // print bit per sample Serial.print("Sample Rate: "); Serial.println(MP3. Fs); // dan laju sampel } void loop() { }

Langkah 4: Plot Data MP3 di Serial Monitor

Plot Data MP3 di Serial Monitor
Plot Data MP3 di Serial Monitor

Dengan kode di bawah ini Anda dapat memplot beberapa data audio pada monitor Serial. Ini akan sangat lambat tetapi akan menunjukkan kepada Anda bagaimana menggunakan perpustakaan MP3. Itu juga menurunkan sampel data dengan faktor 16 sehingga ketika data diplot itu terlihat seperti bentuk gelombang audio. Kode ini diambil dari contoh SPI_MP3_Serial.ino yang disertakan dengan library microdecoder. Tentu saja, ke depan Anda akan ingin memutar data audio ini, tetapi itulah topik instruksi yang berbeda.

#sertakan "SD.h" // masukan

#sertakan "mp3.h" // dekoder mp3 MP3; // audio pcm kelas mp3; // data audio mentah void setup() { Serial.begin(115200); // Setup Serial SD.begin(); // Siapkan koneksi SD File file = SD.open("/cc.mp3"); // Buka File MP3 MP3.begin(file); // Kirim file ke kelas MP3 } void loop() { audio = MP3.decode(); // Decode data audio ke kelas pcm /* ada 32 sampel di audio.interleaved (16 kiri dan 16 kanan) * tetapi kita hanya akan memplot titik data pertama di setiap saluran. * Ini secara efektif menurunkan 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 }

Direkomendasikan: