週間スケジュールを設定できるDSPラジオ(RDA5807)を製作したが、聴きたい番組が放送されていない時間帯(特に野球シーズン)がある。その時間帯にはインターネットラジオ(PCM5102やUDA1334を利用)を聴くことにしている。ただ、手近な所に2台並べて置く必要があり、切り替えも面倒である。
そこで、DSPラジオとインターネットラジオを合体し、両方スケジュール可能なDSP&INETラジオを製作しようと考えている。
コントロールするMCU(プロセッサ)とスピーカーが一台で済むというメリットもある。
プロトタイプを製作したところで、課題が2つ見つかった。
- WiFiが至近にあるとDSPラジオに電波障害(感度低下)が生じる。
- スピーカー出力を切り替える手段が必要である。
課題1.について説明する。
DSPラジオがある放送局を受信開始した時点で、MCUからWiFiにアクセス(例えば接続やインターネットラジオ受信)すると、WiFiの電波(強い)により受信していた放送局に受信障害が生じ、その状態が記憶されてしまい、DSPラジオの電源をOFFするまで受信障害が続くのである。
RDA5807のデータシートのブロック図には”Limiter”と”PGA”の記載があり、感度調整の機能がある。しかし、ソフトウェアから制御する方法は不明である。
そのため、対処として、「WiFiの接続を完了してから、DSPラジオの受信を開始する」と「DSPラジオの受信時はインターネットラジオ受信を停止する」という2つの事を行った。
ただし、「(インターネットラジオからDSPラジオに切り替える時に)インターネットラジオ受信を停止する」簡単な方法が見つけられず、「WiFiを一旦切断して、再接続する」という強硬手段になっている。
課題の2であるが、最初、DSPラジオとインターネットラジオの出力を並列にスピーカーに接続するという乱暴な実験(PCM5102は出力側にカップリングコンデンサがないタイプなのでマネしないで)を行ってみた。音は出るが、音量が極端に小さくなるという失敗の結果に終わった。
出力を(物理的な)スイッチで切り替える方法ではなく、プログラムから行いたかったので、アナログスイッチを探した。見つけたのがADG884である。ON抵抗が低く(0.3Ω位)、400mA程度の電流が流せるので、今回の用途にピッタリである。このチップはAliexpressから入手可能である。
ただ、注文時には気がつかなかったのであるが、ピンの間隔が0.5mmのSSOP10というタイプで、変換基板(これもAliexpressから追加購入)が必要な上、ハンダ付けが非常に困難である。
ADG884の利用例はネット上に見つからなかった(データシートは見つかった)。以下は試行錯誤の結果である。
ADG884は電源電圧が3.3Vで動作する。アナログスイッチが2回路(S1,S2)あり、ステレオであれば、チップが1個で済む。デバイスに関して、A系(S1A、S2A)とB系(S1B、S2B)のRチャネル、Lチャネルを同時に切替えることができる。IN1、IN2の端子は3V入力で制御できるので、MCU(XIAO ESP32S3)のGPIO44を並列に直結している。
既定(IN1、IN2をHIGH)では、A系(DSPラジオ)がON、B系(インターネットラジオ)がOFFで、IN1、IN2をLOWにするとA系がOFF、B系がONとなるように制御している。
以下に回路図を示す。

以下は実験的に製作したセットの写真である。RDA5807の基板(以前、製作)とPCM5102+XIAO ESP32S3の基板(サンハヤトのブレッドボードを模した基板を利用)をジャンパー線で配線している。SSOP10の変換基板上の小さなチップがADG884である。使用感として、音量・音質への影響は殆ど感じられなかった(合格!)。

動作確認を行った時のスケッチ(プロト)はGithubにある。操作はWeb経由で行う。DSPラジオとインターネットラジオの切り替え、スケジュール設定など基本的な操作は可能である。