İçindekiler:

MP3 Kod Çözme için Arduino Kütüphanesi: 4 Adım
MP3 Kod Çözme için Arduino Kütüphanesi: 4 Adım

Video: MP3 Kod Çözme için Arduino Kütüphanesi: 4 Adım

Video: MP3 Kod Çözme için Arduino Kütüphanesi: 4 Adım
Video: Arduino Dersleri 8 : Arduino Kütüphane Ekleme (Library Ekleme) 2024, Kasım
Anonim
MP3 Kod Çözme için Arduino Kitaplığı
MP3 Kod Çözme için Arduino Kitaplığı
MP3 Kod Çözme için Arduino Kitaplığı
MP3 Kod Çözme için Arduino Kitaplığı

ESP32 ve ARM M serisi MP3 kod çözme gibi hızlı mikro denetleyicilerin artan yaygınlığı nedeniyle artık uzman donanım tarafından yapılması gerekmez. Kod çözme artık yazılımda yapılabilir.

Earlephilhower'da çok çeşitli ses dosyalarının kodunun nasıl çözüleceğini ve ESP mikro denetleyicilerinde nasıl oynatılacağını gösteren harika bir kitaplık var. Bundan esinlenerek, mikrodenetleyicilerde MP3 dosyalarını okumak için modüler bir yöntem oluşturmak için kodun bir kısmını uyarladım.

Umudum, bu yöntemin yeterince hızlı herhangi bir mikrodenetleyicide (sadece bir ESP32 kartı değil) kullanım için yeterince genel olacağıdır, ancak şu anda yalnızca bir ESP32 üzerinde test ettim.

Gereçler

Daha önce de söylediğim gibi, umarım bu yöntem herhangi bir hızlı mikrodenetleyici için işe yarar, ancak olmayabilir. Bu nedenle, sonuçlarımı çoğaltmak için ihtiyacınız olacak:

  • Bir ESP32 kartı
  • SD koparma panosu
  • hafıza kartı
  • Jumper Telleri
  • ekmek tahtası
  • mikro USB kablosu (kroki yüklemek için)
  • Arduino IDE'si

Adım 1: Breadboard'u Yerleştirme

Breadboard'u Yerleştirme
Breadboard'u Yerleştirme

ESP32 ve SD kart çıkışını devre tahtasına yerleştirin.

Adım 2: SD Kartı Kablolama

SD Kartı Kablolama
SD Kartı Kablolama

SD kart bağlantıları (ESP32 SD koparma) aşağıdaki gibidir:

GND GND

3v3 VDD

23 DI (MOSI)

19 DO (MISO)

18 SCLK

5 CS

Farklı bir mikrodenetleyici kullanıyorsanız bu bağlantıların farklı olacağını lütfen unutmayın.

3. Adım: Yazılım Kitaplıkları

ESP-IDF kurulu değilse, web sitelerine gidin ve kurun.

Ardından mikro kod çözücü kitaplığını kurun. Bunu, depoyu indirerek ve Arduino Kitaplıkları klasörünüze yerleştirerek yapabilirsiniz. Mikrodekoder kitaplığı şu anda.wav ve.mp3 dosyalarını desteklemektedir.

Biçimden bağımsız olarak, her sınıfla ilişkili birkaç ortak yöntem vardır ve bunlar aşağıdaki kodda ele alınmıştır. Bunlar, bazı dosya meta verilerinin alınmasını ve seri monitöre yazdırılmasını içerir.

#include "SD.h" // giriş

#include "mp3.h" // kod çözücü #include "pcm.h" // ham ses veri kabı mp3 MP3; geçersiz kurulum() { Serial.begin(115200); // Seri SD'yi Kur.begin(); // SD bağlantısını kur Dosya dosyası = SD.open("/cc.mp3"); // Bir MP3 Dosyası Açın MP3.begin(dosya); // MP3 sınıfına MP3.getMetadata(); // metadata'yı al Serial.print("Numune Başına Bit: "); Serial.println(MP3.bitsPerSample); // örnek başına bit yazdırın Serial.print("Örnek Hızı: "); Serial.println(MP3. Fs); // ve örnekleme oranı } void loop() { }

Adım 4: MP3 Verilerini Seri Monitörde Çizin

MP3 Verilerini Seri Monitörde Çizin
MP3 Verilerini Seri Monitörde Çizin

Aşağıdaki kod ile Seri monitörde bazı ses verilerini çizebilirsiniz. Bu çok yavaş olacak ama size MP3 kitaplığını nasıl kullanacağınızı gösterecek. Ayrıca, verileri 16 faktörü ile altörnekler, böylece veriler çizildiğinde bir ses dalga formu gibi görünür. Bu kod, mikrodekoder kitaplığıyla birlikte gelen SPI_MP3_Serial.ino örneğinden alınmıştır. Tabii ki, ilerlemek için bu ses verilerini bir şekilde çalmak isteyeceksiniz, ancak bu farklı bir talimatın konusu.

#include "SD.h" // giriş

#include "mp3.h" // kod çözücü mp3 MP3; // MP3 Sınıfı pcm ses; // ham ses verileri geçersiz kurulum() { Serial.begin(115200); // Seri SD'yi Kur.begin(); // SD bağlantısını kur Dosya dosyası = SD.open("/cc.mp3"); // Bir MP3 Dosyası Açın MP3.begin(dosya); // Dosyayı MP3 sınıfına iletin } void loop() { audio = MP3.decode(); // Ses verisini pcm sınıfına deşifre edin /* audio.interleaved içinde 32 örnek var (16 sol ve 16 sağ) * ama biz her kanalda sadece ilk veri noktasını çizeceğiz. * Bu, verileri etkili bir şekilde 16 faktörü ile düşürür (* yalnızca dalga biçimini görüntülemek için) */ Serial.print(audio.interleaved[0]); // sol kanal Serial.print(" "); Serial.println(audio.interleaved[1]); // sağ kanal }

Önerilen: