ESP32 チュートリアル 41/55 - Micro SD カードを使用した MP3 プレーヤー | SunFounder の ESP32 IoT 学習キット
このチュートリアルでは、ESP32マイコンとマイクロSDカードを使用してMP3プレーヤーを作成します。ESP32はマイクロSDカードに保存された音声ファイルを読み取り、オーディオアンプとスピーカーを通じて音を出力します。このプロジェクトは、ESP32、オーディオアンプ、マイクロSDカードなどのさまざまなコンポーネントを組み合わせて、音楽を簡単に再生できるようにします。
プロセス全体を通じて、必要な配線やコーディング、一般的な問題のトラブルシューティング方法について話し合います。視覚的なガイダンスが必要な場合は、関連するビデオ(ビデオは :00 にあります)をぜひご覧ください。
ハードウェアの解説
このプロジェクトで使用される主なコンポーネントには、ESP32マイクロコントローラー、マイクロSDカード、オーディオアンプ、スピーカーが含まれます。ESP32は、内蔵Wi-FiとBluetooth機能を備えた強力なマイクロコントローラーであり、IoTプロジェクトに最適です。音声再生の処理と制御を担当します。
micro SDカードは、MP3形式の音声ファイルを保存するために使用されます。これはESP32に接続され、プログラムはファイルを読み取り、アンプに音声データを送信することができます。音声アンプはESP32からのデジタル信号を受け取り、それを増幅してスピーカーを駆動し、音を聞くことができるようにします。
データシートの詳細
| メーカー | サンファウンダー |
|---|---|
| 部品番号 | ESP32 |
| 論理/入出力電圧 | 3.3 V |
| 供給電圧 | 5 V |
| 出力電流(チャネルごと) | 2 A最大 |
| ピーク電流(チャンネルごと) | 3 A最大 |
| PWM周波数ガイダンス | 最大40 kHzまで |
| 入力論理しきい値 | 0.3 x VCC (低), 0.7 x VCC (高) |
| 電圧降下 / RDS(on)/ 飽和 | 0.15 V |
| 熱的限界 | 85 °C |
| パッケージ | WROOM-32 |
| ノート / バリアント | さまざまなオーディオライブラリに対応 |
- microSDカードがFAT32としてフォーマットされていることを確認してください。
- オーディオアンプを接続するために抵抗器を使用して歪みを防ぎます。
- 電源接続を安定させ、切断を避けてください。
- システムに電源を入れる前に、配線に緩い接続がないか確認してください。
- デバッグ情報のためにシリアル出力を監視してください。
- 低インピーダンススピーカーを使用すると、音質が向上します。
- 最高のパフォーマンスを得るために、音声を再生中にESP32がタスクで過負荷にならないようにしてください。
SD_MMCマイクロSDアクセスに使用され、AudioOutputI2S音声出力に使用されます。
配線指示


コンポーネントを配線するには、まず電源を接続します。ESP32の5VをオーディオアンプのVCCピンに接続します。次に、ESP32のグラウンドピンをアンプのグラウンドピンに接続します。ESP32からのオーディオ出力ピンは、通常GPIO25アンプの入力ピンには10 kΩの抵抗を介して接続する必要があります。
スピーカーはオーディオアンプの出力ピンに接続してください。スピーカーには極性がないため、どちら向きでも接続できます。マイクロSDカードをESP32の指定されたスロットに挿入してください。システムの電源を入れる前に、すべての接続を再確認してください。
コード例とウォークスルー
提供されたコードでは、オーディオ再生とSDカードアクセスに必要なライブラリーをインクルードすることから始めます。主要な識別子はmp3,file, とoutMP3ジェネレーター、音声ファイルのソース、および音声出力をそれぞれ表します。
AudioGeneratorMP3 *mp3;
AudioFileSourceSD_MMC *file;
AudioOutputI2S *out;ここでは、MP3ジェネレーターとオーディオファイルソースのポインタを宣言します。setup()関数では、シリアル通信とSDカードを初期化します。
void setup() {
Serial.begin(115200);
if (!SD_MMC.begin()) {
Serial.println("SD card mount failed!");
}
file = new AudioFileSourceSD_MMC("/To Alice.mp3");
out = new AudioOutputI2S(0, 1);
}この抜粋では、SDカードが正常にマウントされているかを確認します。失敗した場合は、エラーメッセージが表示されます。その後、MP3ファイルとオーディオ出力モードを設定します。
void loop() {
if (mp3->isRunning()) {
if (!mp3->loop()) mp3->stop();
} else {
Serial.println("MP3 done");
delay(1000);
}
}このループは、MP3ファイルがまだ再生中かどうかを確認します。再生が続いていない場合、再生が完了したことを示すメッセージを表示します。完全なコードは、記事の下に読み込まれて、さらに参照できるようになります。
デモ / 期待されること
すべてが配線され、コードがアップロードされると、マイクロSDカードを挿入したときにスピーカーから音声が再生されるはずです。カードを挿入した後はESP32をリセットしてください。音声が再生されない場合は、配線を確認し、コード内で音声ファイルの名前が正しく設定されていることを確認してください(動画の05:00に)。
一般的な落とし穴には、マイクロSDカードを正しくフォーマットしないことや、サポートされていない音声ファイル形式を使用することが含まれます。常にファイルがMP3形式で、必要に応じてルートディレクトリまたは指定されたフォルダーに配置されていることを確認してください。
ビデオのタイムスタンプ
- 00:00 スタート
- 2:19 プロジェクトの紹介
- 4:27 ドキュメントページ
- 5:32 オーディオアンプの配線
- ESP32用のmicroSDカードを8:00にフォーマットしています
- 10:16 図書館とコード
- 15:16 Arduino IDEでESP32ボードとCOMポートを選択する
- 16:58 ESP32を使用してMicro SDカードから曲を再生中
- 19:14 18650バッテリーを使用した第2回デモ
#include "AudioFileSourceSD_MMC.h"
#include "AudioOutputI2S.h"
#include "AudioGeneratorMP3.h"
#include "SD_MMC.h"
#include "FS.h"
// MP3ジェネレーター、ファイルソース、および出力のポインタを宣言します。
AudioGeneratorMP3 *mp3;
AudioFileSourceSD_MMC *file;
AudioOutputI2S *out;
void setup() {
// シリアル通信を開始します。
Serial.begin(115200);
delay(1000);
// SDカードを初期化します。失敗した場合は、エラーメッセージを表示します。
if (!SD_MMC.begin()) {
Serial.println("SD card mount failed!");
}
// SDカードからMP3ファイルを開いてください。 "/To Alice.mp3" を自分のMP3ファイル名に置き換えてください。
file = new AudioFileSourceSD_MMC("/To Alice.mp3");
// ESP32の内部DACでI2S出力を設定します。
out = new AudioOutputI2S(0, 1);
// 出力をモノラルに設定します。
out->SetOutputModeMono(true);
// ファイルと出力でMP3ジェネレーターを初期化します。
mp3 = new AudioGeneratorMP3();
mp3->begin(file, out);
}
void loop() {
// MP3が再生中の場合は、ループします。それ以外の場合は、停止します。
if (mp3->isRunning()) {
if (!mp3->loop()) mp3->stop();
}
// MP3が再生されていない場合は、メッセージを表示し、1秒間待機してください。
else {
Serial.println("MP3 done");
delay(1000);
}
}
Common Course Links
Common Course Files
リソースと参考文献
-
ドキュメンテーションESP32 チュートリアル 41/55 - SunFounder ドキュメントページ メモリーカードから音楽を再生するためのdocs.sunfounder.com
ファイル📁
ファイルは利用できません。