お父にゃんの電子工作 -34ページ目

お父にゃんの電子工作

暇なおじさんが、電子工作(主にラジオ製作)をして勝手な感想を書く

前回、カラーLCDがちゃんと動くのを確認できたので、カラーLCDを使ってWebラジオの2号機を作っていきたい。

 

暫定回路図はこちら↓  LCDはSPI接続。Seeed ESP32S3の端子を使い切ってしまった。

 

今回の主な部品

Seeed Studio XIAO ESP32S3

アンプモジュール AE-PAM8012

I2S DACモジュール PCM5102A

2インチ カラーLCD(ドライバIC ST7789V)

 

アンプIC(D級)はおじさんの部品箱から出てきたもので、だいぶ前に購入したもの。

D級なのでAMラジオではノイズが多くて使えなかったが、Webラジオでは使えるぢぁろう。

最大ゲインは18dB(約8倍)で増幅率としては高くはない。

 

ブレッドボードに部品を配置して配線したら、Arduino IDEで初号機のスケッチをベースにLCD表示に変更していく。

 

何度か試行錯誤して、動くようになった

 

LCD部分拡大

 

 

部屋がある程度明るい場合は、いい感じで表示してくれる。ただ、暗い部屋だと黒の部分もバックライトの光がわずかに漏れてしまう。 

やはりコントラストはOLEDには及ばないのである。

そういう意味でオーディオ機器としてはモノクロOLEDの方が高級感が有るような気がする。

まぁ、おじさんの場合は、いつも雑な作りなので高級感も何もないのだが・・・

 

 

あと、初号機の時から気になっていたのだが、局によっては、ステーション名を返さなかったり、ものすごく単純な名前しか返さない。

 

これだと何処の局だか・・・

 

また、こちらの局等はステーション名を返さない。

KVUU My 99.9 Colorado Springs Colorado

http://stream.revma.ihrhls.com/zc361

 

なので、表示を見ただけでは、どの局に繋がっているのか分からない場合が多い。

そこで、プログラムのステーションデータは、ステーション名と、URLの両方を設定し、LCDのステーション名表示は設定値を表示するようにした。

typedef struct
{
  String name;   // Band description
  String url;        // Minimum frequency of the band
} Stations;
 
Stations stations[] = {
  // my favorite Stations
  {"181.FM - Power 181 (Top 40) Virginia", "http://www.181.fm/stream/pls/181-power.pls"},
  {"181.FM - UK top 40  New York",   "http://www.181.fm/stream/pls/181-uktop40.pls"},
  {"181.FM - Rock 40 (Rock & Roll)",   "http://www.181.fm/stream/pls/181-rock40.pls"},
  {"Antenne Bayern - Top 40  Germany",   "http://mp3channels.webradio.antenne.de/top-40"},
  {"100hitz - Top 40",   "http://pureplay.cdnstream1.com/6025_128.mp3?"},
  {"Top Hits   US" ,"https://api.onlyhit.us/tophits"},
  {"Jazz Radio Classic Jazz    France",    "http://jazz-wr01.ice.infomaniak.ch/jazz-wr01-128.mp3"},
  {"181.FM - Fusion Jazz",    "http://www.181.fm/stream/pls/181-fusionjazz.pls"},
  {"181.FM - Classical Jazz",    "http://listen.181fm.com/181-classicaljazz_128k.mp3"},
  {"Radio Art - Jazz Piano",    "https://live.radioart.com/fJazz_piano.mp3"},
  {"Jazz Radio Piano Jazz  FR",    "http://jzr-piano.ice.infomaniak.ch/jzr-piano.mp3"},

 

ダイヤルを回すと、ch番号とステーション名の両方の表示が更新されるので、選局時に迷うことが無く、とても使いやすくなった。

 

チャンネル切り替え中は、ステーション名は白で表示。

ダイヤルを回すと、Ch.番号とステーション名が同時に瞬時に切り替わる。

 

ダイヤルを止めてしばらくすると、そのステーションに接続を開始する。ステーションに接続するとステーション名は緑色に。

 

日本のラジオ局ならステーション名を漢字混じりで表示できる

おお、なんかいい感じ。

Webラジオとしての完成度が少し上がった気がする。

 

今回のスケッチは、以下に置いておきますので、興味のある方はどうぞ。

 

SeeedESP32S3_WebRadio_V0_81

 

なお、コンパイル時の注意点は以前の記事と同様に、ツールメニューから

・USB CDC On BootをEnabledに設定 

 (これをしないとシリアルモニタが動かない

・Flash ROMサイズを8MBに

・パーテーションを8Mで、3M APP/1.5MB SPIFFSに

・PSRAM:OPI PSRAM に設定

 (ESP32-audioI2SライブラリはPSRAMをバッファ領域に積極的に使うみたい。

  さらにPSRAM設定が無いと再生できないコーデックが有る


ボードライブラリは3.0.7を使用

 3.1.X だと、I2Sが動作せず音が鳴らない

 3.2.0と3.3.0では動作した。

 安定版の3.0.7のほうが お勧めかも

・ESP32-audioI2Sライブラリは3.3.0以前のものを使用

 3.4.x以降は仕様変更によりこのソフトでは動作しない

 3.0.13が安定版でオススメ

 

「おお、にゃんか良い感じニャ」