Webラジオ3号機を作っている。こないだ、アルバムアートワークを大きく表示する版を作って、もうそろそろ完成版にしようかな?と思っていた。
ところが、Google Geminiに別件で色々訊いていたら、ESP32-audioI2SにVUメーターを表示するための機能が備わっていることが判明した。
この機能については、ESP32-audioI2SのGitHubを見ても特に何も書いてないので、知らない人は多いと思う。もちろん、おじさんは全く知らなかった。
使い方は簡単で、audio.getVUlevel()を呼ぶと直近の音量の平均値?が符号なし16ビットの値として返ってくる。上位8ビットがL側の音量、下位8ビットがR側の音量がセットされている。
以下のようなプログラムでloop()の中でVU_meter()を呼んで100msごとにaudio.getVUlevel()で音量を取得して表示させる。
今回は、昔のカセットデッキ(今どきの若者は知らないか・・)なんかに付いていたLED VUメーター風に16段階に表示させてみた。
なお、audio.getVUlevel()で返ってくる値は最大で180くらいだったので、そのくらいで最大表示となるようにした。
こんな感じ
大きなアルバムアートと、ブンブン動くVUメーターのおかげで、表示がにぎやかになって画面を見ているだけで楽しくなってくる。とても良い感じなのである。
ticker表示モードにすると、文字も横スクロールして、更に にぎやかに。
これで、今度こそ機能的には打ち止めにして、次は組み上げて完成版にしたい。
今回のスケッチは以下に置いておきますのでご自由にどうぞ
(ただし、動作・品質・その他一切の責任は負いませんので、あしからず)
「とても良い感じになってきたニャ」
---------------------------------------------------------------------------
<補足>
Arduino IDEでコンパイル時の注意点は以前の記事と同様に、ツールメニューから
・USB CDC On BootをEnabledに設定
(これをしないとシリアルモニタが動かない)
・Flash ROMサイズを8MBに
・パーテーションを8Mで、3M APP/1.5MB SPIFFSに
・PSRAM:OPI PSRAM に設定
PSRAM無しではこのプログラムは動作しない。
・ボードライブラリは3.3.7を使用
・ESP32-audioI2S-master ライブラリは3.0.13を使用
このプログラムでは3.0.13が安定動作
インストールが必要なライブラリ
・ESP32-audioI2S-master (ver3.0.13を強く推奨、3.4.0以降は動作しない)
・WiFiManager(2.0.17を使用している)
・LovyanGFX(1.2.21を使用している)
回路図はこちら
LCDのRSTラインに0.1uF程度のコンデンサを付けないとLCDが起動しないので注意
(内部のPull up抵抗とセットでRSTの立ち上がりを遅らせてリセット)
ブレッドボードでこんな感じ
主な部品
・PCM5102Aモジュール(ジャンパー設定はこちらを参照)
・3.5インチLCD (320x480)(ST7796)(Ali-Expressあたりで売っている)
(TENSTAR ROBO LCD等で検索)
・Push SW付きロータリエンコーダー (Ali-Expressで安く売ってるのでOK)
注1)エンコーダー のセンターSWを押すと、Ch、Vol切り替え。
センターSW長押しで、Tickerモード ↔ 全体表示モード切替え
注2)WiFi設定はセンターSWを押しながら電源オンでWiFi設定モードが立ち上がるので、
スマホ等からアクセスして設定してください。こちらを参考に。
その他
ここにアクセスすると、世界中のWebラジオステーション情報が手に入る。
お好みのステーションを探して組み込んで欲しい。









