仕様とハード
今回から、TFT_eSPIを使う と ESP32-audioI2S-masterを使う を使ってmediaPlayerを作って行きます。
仕様
仕様というか、どの様な機能を持たせるかです。
- SDカードに保存された音楽ファイル(mp3, wav, aac 等)を再生する。
- Webラジオ(ネットラジオ)を聴ける
- 音はAMPを用いてスピーカ出力
- ユーザーインターフェイスはタッチ機能の付いたLCDで簡易GUIとする。
- 時計モジュールを用いたタイマー機能(時間が来たら演奏の開始または中止)
- ついでに部屋の温度湿度も表示する。
モジュールと回路
- CPU
- ESP32S3
- PSRAMの付いたESP32。
- PSRAMが有るとESP32-audioI2S-masterで多くのフォマットの音楽ファイルが再生可能。
- 基本的なESP32S3の使い方は GPIOポート一覧(ESP32S3) を参照。
- ESP32S3
- I2Sモジュール
- PCM5102
- ESP32-audioI2S-masterの出力先になるI2Sモジュール
- PCM5102 I2Sに詳細が有ります。幾つかパッドをショートさせて使用しています。
- PCM5102
- アンプ
- PAM8403(GF1002)
- I2Sの出力を増幅してスピーカにつなぐモジュール。
- PAM8403を使うに詳細が有ります。
- PAM8403(GF1002)
- LCD
- ILI9341,2.8 “, 240×320 LCD
- タッチセンサを持ったLCD。これで画面の表示とGUIを行う
- 詳細はILI9341,2.8 “, 240×320 LCDを参照
- ILI9341,2.8 “, 240×320 LCD
- SDカード
- ILI9341,2.8 “, 240×320 LCDの付属品
- 音楽ファイル等を保存。
- ILI9341,2.8 “, 240×320 LCDの付属品
- RTCモジュール
- DS3231
- I2CインタフェースのRTCモジュール。タイマー等で使用。
- 詳細はDS3231 RTC (for Arduino)を参照
- DS3231
- 温湿度測定モジュール
- DHT20
- I2Cインタフェースの温湿度測定モジュール
- 詳細はDHT20(温湿度測定器)を使う(for Arduino)を参照
- DHT20
- その他
- スピーカ(左右)
- ミニジャック(イヤフォン用)
- スイッチ
- 抵抗
- LED
作成した回路は以下の通り。

ESP32S3とLCDの接続
最初ESP32S3とLCDをVSPI(GPIO35から39)を使って接続していたのですが、Arduino IDEでPSRAMをオンにすると正しく動作しません。原因を調べて行くとPSRAMをオンにするとPSRAM用インターフェイスにVSPIが使われる事が分かりました。そこでLCDとのインターフェイスをHSPIに変えた所、正常動作する様になりました。また念の為にVSPI関係のGPIOピン(35,36,37,39)の使用を避けています。
ESP32S3とSDカードの接続
PSRAMとの接続にVSPI、LCDとの接続にHSPIを使用しているので、SDカードとSPI接続が出来ません。Fontや曲データの保存にSDカードは必須です。そこでESP32S3が持っているもう一つのインタフェースSD_MMCをSDカードとの接続に使っています。SD_MMCの説明はここに有ります。ー>SD カード
アンプPAM8403(GF1002)
電源オンオフ時のポップアップ音でよく話題になるアンプです。今回はポップオン対策にESP32S3のGPIOを使ってPAM8403のMute端子を制御しています。(ここで説明PAM8403を使う)。 これにより電源オン時のポップオンは全く無くなりました。でも、オフ時には若干残っています。

スイッチ付きのミニジャック
PCM5102にミニジャックが有りここにイヤフォンを繋げばイヤフォンで聴けるのですが、イヤフォンにつないだらスピーカーがオフになる様にしたかったので新たにスイッチ付きのミニジャックを追加しています。

実際の配線
下図で、左が今回製作した製品。右はLCDを外したもの。LCDの下に全てのモジュールが収まる様に配線しています。

次回は
次回はArduino IDEのセットアップと簡単なスケッチを用いて各モジュールの動作を確認します。