● 実験テーマ172
「ESP32S3+SDカード+液晶+MP3デコーダIC_MP3_Player製作記録_その4」
(今後ソフト拡張するのに何時までもブレッドボードでの作業はしたくないのでこの辺でユニバーサル基板にて基板化することにしました)
■ 2026.6.28
・ESP32S3_VS1011基板+QVCA液晶(SD含む)・操作SW基板の2枚構成にした。
■ 2026.7.27
・各基板の加工+前面・背面アクリルパネルの加工+仮組立てまで済んだ。

■ 2026.7.29
<動作チェック>
・これまでテスト用に使っていたSDカード内の小容量(400Kbyte程度)のmp3ファイルの
液晶へのリスト表示+再生は問題ないが、通常の音楽mp3ファイル(3Mbyte程度)を収録
したSDカードで試すと、液晶へのリスト表示をしなく黒バックの状態になる。
症状の詳細は以下。
① P_ONからの初期タイトルメッセージ出力はOK
② サインテスト OK
③ SDカードマウント OK
④ この次のFile file = root.openNextFile();からのリスト表示しない。NG
■ 2026.8.5
・SDの転送速度は今は40MHz(SD.begin(SD_CS, SPI2, 40000000)にしてる。
これはSDカードの規格(SPIモード)における「理論上の最大速度(限界値)」に近い数値です。
これとmp3ファイル容量の大小による読出し構造の変化でタイミングが際どくなっているかも。
4MHzに落として後で試してみる。
■ 2026.8.6
<続動作チェック:以下スケッチ修正>
① イニシャルタイトル表示変更(イージーミスをついでに修正:"Touch MP3 Player Test"-> "ESP32 MP3 Player
Test")
② SD転送速度ダウン
・40M(40000000)-> 4M(4000000)-> ng
・40M(40000000)-> 1M(1000000)-> ng
・上修正コンパイルok
・速度を落としても駄目
----------------------------------------------------------------------------------
・色々試してみたが、以前作成した2GBのSDカードに通常の音楽ファイル(3~6MB程度)を256曲程収録したものがあったので
試したところリスト表示も再生も問題なくできた。
この状態で転送スピードを40Mに上げてみまたが問題なく動いた。

イヤフォンで聞いても全くノイズ無くクリア。
また再生中に音量ボタンを操作してもノイズ無くスムースに音量変化する。
・尚1GBのSDカードではダメだった。
2GB以上必要のようだ。
この件、Copilotに聞いてみた。以下の回答だった。
<Copilot回答>
・1GBのカードでダメで2GBのカード(256曲入り)で成功したという結果から、
原因は「ファイルサイズ」そのものではなく、
「SDカードの物理的な規格(構造)」または「ファイルシステム(FAT/FAT32)のクラスサイズの違い」にあったと考えられます。
この挙動に関する技術的な背景と、今後のアドバイスをまとめました。
・なぜ1GBはダメで、2GBは上手くいったのか?
① SDカードの規格(SD vs SDHC)の壁
・実は、SDカードの歴史において 「2GB以下(特に1GB以下)」 と 「2GB超(SDHC規格以降)」 では、
カード内部のコントローラーの仕組みや、データの読み出しブロック単位(セクタ構造)が大きく異なります。
ESP32の SD ライブラリは、内部でFATFS(ファイルシステムライブラリ)を動かしていますが、
古い1GB以下のカード(特にクラスタサイズが特殊なもの)は大容量ファイルをスキャンする際にセクタの計算ズレを起こし、
ハングアップすることがあります。
② フォーマット(アロケーションユニットサイズ)の相性
・1GBのカードに3MBなどの大きなファイルを詰め込むと、
FAT(ファイル割当表)のリンクが複雑になり、ライブラリが次のデータを追いかける処理で破綻(フリーズ)してしまうことがあります。
2GB以上のカードでは、この管理領域が最初から最適化されているため、256曲あってもスマートに処理できたのです。
■ 2026.8.7
・今後の予定として曲数を増やすことと、スクロール表示を予定してます。
<最終回路図>
・こちらからどうそ→
QVGA液晶_操作SW基板
ESP32S3_VS1011基板
<最終スケッチとフォントデータ>
・こちらからどうぞ→
ESP32S3_MP3_PLAYER_TEST_1.ino (初期メッセージを修正しましたがファイル名は変えてません)
ASCII12dot.h