7.5 SDカード対応MP3プレーヤー

ESP32で音楽の世界へようこそ!このプロジェクトでは、あなたの指先でオーディオ処理のパワーを体験できます。ESP32は計算用の素晴らしいマイクロコントローラーだけでなく、あなた専用の音楽プレーヤーにもなります。自分の部屋に入ると、この小さなデバイスからお気に入りのトラックが流れてくるのを想像してみてください。それが、今日、私たちがあなたに提供するパワーです。

必要な部品

このプロジェクトでは、以下のコンポーネントが必要です。

一式を購入するのが確かに便利です。リンクはこちらです:

名前

このキットのアイテム

リンク

ESP32 Starter Kit

320+

ESP32 Starter Kit

以下のリンクから個別に購入することもできます。

コンポーネントの紹介

購入リンク

ESP32 WROOM 32E

BUY

ESP32カメラ拡張ボード

-

ブレッドボード

BUY

ジャンパーワイヤ

BUY

抵抗器

BUY

オーディオモジュールとスピーカー

-

操作手順

  1. カードリーダーを使ってSDカードをコンピュータに挿入し、フォーマットしてください。 SDカードをフォーマットする方法は? のチュートリアルを参照してください。

  2. お気に入りのMP3ファイルをSDカードにコピーします。

    ../../_images/mp3_music.png
  3. SDカードを拡張ボードのSDカードスロットに挿入します。

    ../../_images/insert_sd.png
  4. 回路を組み立てます。

    これはモノラルアンプなので、IO25をオーディオアンプモジュールのLまたはRピンに接続できます。

    10K抵抗は、高周波ノイズを減らし、オーディオボリュームを下げるために使用されます。これは、DACとオーディオアンプの寄生容量とのRCローパスフィルターを形成します。このフィルターは、高周波信号の振幅を減少させ、効果的に高周波ノイズを低減します。そのため、10K抵抗を加えることで、音楽を柔らかく聞こえさせ、望ましくない高周波ノイズを排除します。

    SDカードの音楽がすでに柔らかい場合、抵抗を取り外したり、より小さい値のものに交換できます。

    ../../_images/7.3_bluetooth_audio_player_bb.png
  5. USBケーブルを使ってESP32-WROOM-32Eをコンピュータに接続します。

    ../../_images/plugin_esp32.png
  6. コードを変更します。

    file = new AudioFileSourceSD_MMC("/To Alice.mp3") の行を、あなたのファイル名とパスに合わせて変更してください。

    注釈

    • esp32-starter-kit-main\c\codes\7.5_mp3_player_sd のパスの下にある 7.5_mp3_player_sd.ino ファイルを開くか、このコードを Arduino IDE にコピーします。

    • ボード(ESP32 Dev Module)と適切なポートを選択した後、 アップロード ボタンをクリックします。

    • "Unknown COMxx"が常に表示されますか?

    • ここでは ESP8266Audio ライブラリが使用されています。インストールのチュートリアルについては、 手動でのインストール を参照してください。

  7. Arduino IDEで適切なポートとボードを選択し、ESP32にコードをアップロードします。

  8. コードのアップロードに成功すると、お気に入りの音楽が再生されます。

どのように動作するのか?

  • コードは ESP8266Audio ライブラリの複数のクラスを使用して、SDカードからMP3ファイルをI2Sを通じて再生します。

    #include "AudioFileSourceSD_MMC.h"
    #include "AudioOutputI2S.h"
    #include "AudioGeneratorMP3.h"
    #include "SD_MMC.h"
    #include "FS.h"
    
    • AudioGeneratorMP3 はMP3オーディオをデコードするクラスです。

    • AudioFileSourceSD_MMC はSDカードからオーディオデータを読み取るクラスです。

    • AudioOutputI2S はオーディオデータをI2Sインターフェースに送信するクラスです。

  • setup() 関数では、SDカードを初期化し、SDカードからMP3ファイルを開き、ESP32の内蔵DACでI2S出力を設定し、出力をモノラルに設定し、MP3ジェネレータを開始します。

    void setup() {
        // Start the serial communication.
        Serial.begin(115200);
        delay(1000);
    
        // Initialize the SD card. If it fails, print an error message.
        if (!SD_MMC.begin()) {
            Serial.println("SD card mount failed!");
        }
    
        // Open the MP3 file from the SD card. Replace "/To Alice.mp3" with your own MP3 file name.
        file = new AudioFileSourceSD_MMC("/To Alice.mp3");
    
        // Set up the I2S output on ESP32's internal DAC.
        out = new AudioOutputI2S(0, 1);
    
        // Set the output to mono.
        out->SetOutputModeMono(true);
    
        // Initialize the MP3 generator with the file and output.
        mp3 = new AudioGeneratorMP3();
        mp3->begin(file, out);
    }
    
  • loop() 関数では、MP3ジェネレータが実行中であるかを確認します。実行中であれば、それを継続してループさせます。そうでない場合は、それを停止し、シリアルモニターに「MP3終了」と表示します。

    void loop() {
        // If the MP3 is running, loop it. Otherwise, stop it.
        if (mp3->isRunning()) {
            if (!mp3->loop()) mp3->stop();
        }
        // If the MP3 is not running, print a message and wait for 1 second.
        else {
            Serial.println("MP3 done");
            delay(1000);
        }
    }