セレクター兼ネットワークプレーヤーの作製
- 2025/03/30 19:42
- カテゴリー:オーディオ
自前のコンポ作製の第二弾として「パワーアンプ」はちょっと材料に問題があって後回しとなり「セレクター」とした
セレクター仕様
選択するメディアを考えて,
- GoogleTV(外部入力:AUX or EXT)
- FMラジオ
- Bluetooth
ってところか・・・少し考えて「ネットワークプレーヤー」の良いかもと材料が手持ちにあり閃いた
「ラズパイ」+「DAC」なので「Volumio」が良さそう
となるとラジオやBluetoothもVolumioで可能かな思っていたら,ラジオはネットで配信している局だけなので通常聴くFMーEHIMEなどローカル局は無いし,Bluetoothは有料版で対応となっていてこれが高額だったので,
- Volumio
- FMラジオ
- Bluetooth
として,手持ちの3回路以上のロータリースイッチが3接点しかないため「GoogleTV」は外部ジャック化で入力があると「外部入力」となるように決定
名称は「セレクター兼ネットワークプレーヤー」か「ネットワークプレーヤー兼セレクター」なのか?「メディアプレーヤー」とか「ミュージックプレーヤー」かもしれないなぁ
Volumio
「Raspberry Pi Zero W」と「PCM5102 DAC Decoder」をI2Sで接続(こちらが判り易い)
PCM5102 Raspberry
VCC 5V
GND GND
BCK GPIO18(PCM_CLK)
DIN GPIO21(PCM_DOUT)
LCK GPIO19(PCM_FS)
ラズパイ用Volumio(OS含む)をDLして32MBのμSDカードにセットアップ
PCM5102は「Generic I2S DAC」のDAC設定で利用可能となる(「HifiBerry DAC」では出力されなかった)
FMラジオ
前に購入してテスト受信していたコンパクトな「RDA5807M」をラズパイで使用できないか確認
環境が整っているラズパイ3で先駆者様のFMラジオを聴くのソフトウェアを利用して動作確認
PCM5102との整合性確認のため実機にI2Cによる接続回路を組み動作チェック
Volumio OSではpython環境など無いので動作させるためのセットアップが必要
最初に操作できるように「http://volumio.local/DEV/」にアクセスしてsshをenableにする
ホスト名: volumio.local
ユーザ: volumio
パスワード: volumio
以下,端末にて操作(必要ないセットアップもあり)
$ sudo raspi-config
sudo: raspi-config: command not found
※)raspi-config はなし
I2Cは有効化されている
$ sudo apt update
updateを実施しないと何もinstall不可
$ sudo apt -y install python3-smbus
$ sudo apt -y install RPi.GPIO
$ apt -y install vim
日本語化
$ sudo apt -y install task-japanese locales-all
$ sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
$ exit (一度抜ける)
ラジオを聴く
$ python3 radio_on.py
Bluetooth
Amazonで購入したブルートゥースデコーダーボードを使用
ロータリースイッチによるハードウェア切替なので接続するのみとなる
消費電量を確認するとほとんどないようだ
電源
ラズパイZEROとPCM5102は5V入力,RDA5807Mは3.3Vでラズパイの3.3Vを利用
消費電力は実働で確認したところ通信+音出し時でも最大でも200mAと超えないようで約1W以下となる(ラズパイZEROが公称5V150mAなので問題なさそう)
供給電圧の5Vを降圧DCDCで作り,コイルと平滑コンデンサ(10000μF)を追加してみた
基本的に常時となるため電源ボタンは簡単に操作できなくても良く,むしろできないように後ろにスライドスイッチとして付ける
LEDインジケータと選局ボタン
ラズパイは電源投入してもOS起動時間があるため操作可能を示すLEDによるインジケータを前面に付けOS起動後点灯させる
FMラジオの選局は少ないので後ろにボタンを設けて変えられる程度にすることにした
ケース用のボタンがないので,手抜きだがタクトスイッチで作った
ディスプレイ
当初,予定ではなかったディスプレイを突然だがステータス表示などのためにも付けることにした
選択したのは使わなくて余っている「AQM1602Y」でI2C接続のために加工する必要がある(こちら)
で,ケースに合うように加工してみたのだが,ラズパイでは直接I2Cで繋いで使えないことが判る
ラズパイのI2Cのプルアップ抵抗が小さくで「AQM1602Y」の仕様に合わないらしい
使うためには間にI2Cのバッファーを入れないと駄目らしく,ちゃんと説明書にも書いてあった
ここで諦める訳にもいかず,代わりにOLEDを使用することにした
OLEDはコンパクトな横長タイプでなくケースに付けやすい四角タイプの方をチョイス
ラズパイの温度表示で使ったことがあり同じ操作で動作する(こちら)
ディスプレイにはセレクト(Volumio,Radio,Bluetooth)の表示と,選局名表示を行う
これによりLEDインジケータは電源投入表示用に変更
資料
(メイン基板構成)
誤)3.3V
正)5V
(ケース内構成)
(ソフトウェア)
ロータリースイッチの切り替え監視と,FMラジオの制御を行う
netPlayer.py(SJIS,TAB4),動作には「rda5807m.py」が必要
現在python3のGPIO変化のcallbackが使えないためループ+sleepでボタン判定など行っている
GPIO.add_event_detect(16, GPIO.FALLING, callback=event_callback, bouncetime=300)
RuntimeError: Failed to add edge detection
(メモ書き)
(外観)
(正面)
(裏面)