PAM8403 Mini-AMPを組む

前回作成したPAM8403アンプですが電源オフ時ポップノイズが取りきれない場合があるということでその後いろいろ使用して検討したところ当方で採用したプッシュスイッチに問題がありそうだいうことになりました。
(気にするなと思うと余計気になりますね)

今回新たにスイッチを購入して前回の半分の大きさの基板にminiサイズとして組んでみました。

pam-mini11

スイッチはマルツで購入。ついでにミニジャックも(40円)
sw01
小型の基板用トグルスイッチ
容量はDC20V0.4Aですが今回のPAM基板では問題ないでしょう

お値段が120円と今回の部品の中で一番高価となってしまいました。

pam-mini12
PAM基板は前回の要領でパターンをカットリード線を設けておきます

基板は秋月のDタイプ(47x36mm)があったので使用(30円)

マイクロBコネクタ基板は便利ですね(28円)
Amazonで購入できます
https://www.amazon.co.jp/gp/product/B0183KF7TM/ref=oh_aui_detailpage_o04_s00?ie=UTF8&psc=1

pam-mini13
抵抗はジャンク基板から取ったチップ抵抗を使用
通常の1/4W抵抗でも縦にしたり横にしたりすれば少々配線は混み合いますがPAM基板の下に収まると思います。

pam-mini14
台はSDカードケースがピッタリです
2.5mmの穴を開けて3mmボルトをねじ込んでスペーサーを入れてやるとうまく固定できます

やっぱりPAMアンプはこのサイズが似合いますね

さてできたので繋ぎ込んでスイッチを入れてみます。
今度はきれいにパワーオフ時もポップ音が消えています。

回路
回路内の電解コンデンサは無くても正常にshutdown動作するようになったので省略しています。
ミュート回路のコンデンサを小型化するため定数を変更しました。
pam-mini15

チェック
PAM基板を外してミュート出力端子(画像白リード側)にテスターで電圧を測るとスイッチオン数秒で0〜5Vに変化します。
シャットダウン端子(画像赤リード側)はスイッチオン5V、オフで0Vに変化します。
あとはPAM基板の端子に合わせて入出力、及び電源を配線してあれば音が出ます。

シャットダウン動作は電源スイッチオフ時Q1のベース電圧をコントロールしてスピーカー端子に電圧の変動が現れる前にシャットダウン端子をローにしてシャットダウンを有効にします。
このためにはパワースイッチの2つの接点がほぼ同時にオフになる必要がありますが前回使用したプッシュスイッチは遊びが大きいためおそらくはシャットダウン側がごく僅かに遅れてオフになるためポップノイズが取りきれなかった場合があったものと思います。

入力をオープンにして電源をオンするとミュート解除した瞬間にプッと僅かな音がしますがこれは仕様と思います。

pam-mini16
今の季節はやはりこれでしょうか

牛丼1杯分いやコーヒー1杯分のPAM-AMPで聞く枯葉も粋なものです。

MoOde Audio ES9023P+UAC3552Aを切り替える(セレクター)

I2S接続のES9023Pを搭載していましたが切り替えが面倒でついUSB-DACを使う機会が多かったのですが当サイトのMoOde Audio(Pi1B)もやっと仕様が固まってきたので残っていた課題に取り組んでみました。

電源ユニットはUSB-HDD,CD/DVDプレーヤーが増えたため専用電源の意味がなくなったため新たにジャンクのATX電源を投入してベース基板も作り直しました。

ATX電源

atx
W80 H120 D100の小型のATX電源 5V 9A
ファンは抵抗で印加電圧を落としてぎりぎり起動するくらいのそよ風仕様です
ファンの音はほとんど気にならない程度まで落としました
通常稼働時は1Aも消費しないので発熱も無く特に問題ないと思います
電圧は禁断の5.3Vに設定
これでもUSB側からの供給だけではCDドライブは正常に読み取りできません
P5コネクタ経由からも供給して初めて読み取りできるようになります

なお後述するように12V電圧が必要になったのでUSBの1ポートだけ空き端子を利用して+12Vを供給しました(通常は絶対にしてはいけないですね。反省しています)
当サイトでは常時稼動しているのでほかに誤って接続するリスクも少ないのでまあよしとしておきます(自己責任でね)
base01
1段目のベース基板
マイクロB端子で電源を入力、隣がリセットスイッチ
出力ジャックは1段目に設けました
今回はGPIOの17〜26番ピンをコネクタで接続しています

base02
2段目のベース基板
こっちにもマイクロB端子がありますがあ試験的に取り付けたものでDAC専用に電源を供給できますがあまり使うことは無さそうです
ES9023P-DACとUAC3552A-DACの出力は一旦この基板の入力ジャックに入ります
2個のLED 右のオレンジはMoOde Player 左グリーンはradiko player切替時点灯

base03
行き場のなくなった3個目のリレーはロングのピンヘッダでまた上に乗っかりました

base04
現在接続しているものは
USB-HDD(1TB)
CD/DVDプレーヤー
wifiドングル
USBメモリ
あとはUSB-DACを接続、電源とアンプに接続でとりあえず周辺機器はこのくらいです。

回路

Pi1台に2個のボードを搭載すると各出力のグランド側に電位差が生じてグランドを共通にしただけでノイズとなって現れてしまいます。(これは簡単に解消できないと思います)
そのため通常のグランド共通のセレクタなどは使用できません。

したがって切り替える際にはグランド端子も含めて切り替える必要があります。
また切替時にも電位差によるノイズが発生してしまいます。
当初はリレー2個で済まそうといろいろ検討したのですがー電源も必要そうだし回路も複雑になるということで何ともしがたくリレーを1個増やすことにしました。
手持ちの小型の5Vリレーは2個しか無く、12Vのリレーで代用することにしました。
結果としてできた回路は至極単純、明快なものとなりました。少々難儀しましたが!
select01
2個のリレーでLR,GNDを切り替えます。もう1個のリレーで出力端子を一瞬ショートしてノイズを抑えます。
R3,R4の値に関しては保護としては大きい方がいいのですが作業中誤ってショートしても壊れないことからこれくらいでいいかなという感じです。(音質的にはない方がいい)
イメージとしてはアンプのボリュームを絞って入力ジャックを入れ替えまたボリュームを戻すといっただけの回路です。
LEDは状態表示用でデフォルトD1(INPUT1)オレンジ点灯、radiko D2(INPUT2)グリーン点灯。
制御はPiのGPIOを使用します。

MoOde Playerの設定

設定からI2S audio deviceを有効にします。
moode01
SETを押すとrebootしろよと言ってくるのでreboot

起動後オレンジのLEDが点灯します

moode02
Audio deviceからI2S audio deviceを選択してAPPLYを押してMPDをRESTART

ノイズもなく音が出ることを確認します

moodeにログインして

$ alsamixer -c1

alsa01
USB-DACも正常に認識されています

シェルスクリプトの作成

/var/www/htmlに2つのファイルを作成します。
/var/www/html/sel_moode.sh

#!/bin/bash
# CARD 0 moode audio
# CARD 1 radiko
nohup killall mplayer > /dev/null 2>&1
CARD=$(gpio -g read 11)
gpio -g mode 9 out
gpio -g mode 11 out
if [ $CARD -eq 1 ]; then
  gpio -g write 9 1
  gpio -g write 11 0
  sleepenh 0.1
  gpio -g write 9 0
fi
mpc play

/var/www/html/sel_radiko.sh

#!/bin/bash
# CARD0 moode audio
# CARD1 radiko
nohup killall mplayer > /dev/null 2>&1
CARD=$(gpio -g read 11)
gpio -g mode  9 out
gpio -g mode 11 out
mpc stop
if [ $CARD -eq 0 ]; then
  gpio -g write  9 1
  gpio -g write 11 1
  sleepenh 0.1
  gpio -g write  9 0
fi

実行権限を与えます。

# chmod 755 sel_moode.sh
# chmod 755 sel_radiko.sh

1秒以下のsleepを利用するためsleepenhをインストールします。

# apt install sleepenh

制御

ブラウザから制御するためにGPIOを利用しています。
jessieからはデフォルトでGPIOが使用できます。当然moodeOSも使用可能です。

$ gpio readall

gpio00
OS起動後
21 IN 0 BCM(GPIO 9)
23 IN 0 BCM(GPIO 11)

条件
OS起動時各リレーはOFF
インプットジャック1 ES9023P-DAC (デフォルト)
インプットジャック2 UAC3552A-DAC

スクリプトはGPIO 11の値を読み取って変数(CARD)に格納して判定しています。

sel_radiko.sh
GPIO 11 0の時 if〜fi 実行
21 OUT 0
23 OUT 1

sel_moode.sh
GPIO 11 1の時 if〜fi 実行
21 OUT 0
23 OUT 0

RL3は切替時のみ一瞬動作(出力ショート)するのでリレーによっては若干の調整が必要かもしれません。
ノイズが取りきれない時
gpio -g write 9 1
sleepenh 0.xx(適当な値)追加

Radiko Playerの編集

radiko01
PlayボタンをMoOdeに変更しました
Radiko再生中からMoOdeボタンを押すことでRadikoを停止、MoOde Playerの再生を開始します

今回より音量差を気にする必要がなくなるのでかなり楽になりました

/var/www/html/index.php
htmlのidとボタンネーム変更

<a class="btn btn-empty btn-lg btn-success" href="index.php?id=moode">MoOde</a>

phpのcase “play”を変更
ここで作成したsel_moode.shを呼び出します。

case "moode":
    exec("nohup sel_moode.sh > /dev/null 2>&1");
    $_SESSION['broad']="MoOde Audio Player";
break;

STOPを押した時MoOde Playerも停止

case "stop":
    exec("nohup killall mplayer > /dev/null 2>&1");
    exec("nohup mpc stop > /dev/null 2>&1");
    $_SESSION['broad']="STOP";
break;

phpの各放送局を変更
ここで作成したsel_radiko.shを呼び出します。

case "fmt":
    exec("nohup sel_radiko.sh > /dev/null 2>&1");
    exec("nohup /bin/bash radiko.sh -p FMT > /dev/null &");
    $_SESSION['broad']="TOKYO FM";
break;

編集が終わったらブラウザをリロードしておきます。

Radikoを再生してみよう

radiko
Listから適当な局を選んでクリック
カチカチっとリレー特有の音がしますがノイズの発生も無く再生されました。
別の局をクリックするとリレーが動作することも無く今までどおり再生されます。
MoOdeボタンを押すとやはりリレーの音がしてMoOde Audioに制御を渡します。
MoOdeからRadiko、RadikoからMoOdeに切り替わる際のみリレーが動作します。

MoOde Playerで再生してみよう

moode03
やはりI2S接続のES9023PはUAC3552Aと比べると音がグットクリアになります。

バックから聞こえる女性の唸っている声(?)もよくとおります。

moode04
少々問題もありますが初期の目標はほぼ達成できました。

Raspberry Pi EasyTAG(タグ編集)

昨日(10/12)は午後9時頃から3時間近く画面が真っ白になっていました。
fastcgi関連のエラーで原因はwordfence securityでした。wordfence securityのディレクトリをリネームしてみるとプラグインアップデートの通知が現れました。
wordfence security自体をアップデートしたわけではないのですが通知の段階で真っ白になるのは困ったものです。
という訳で削除しました。

さて本題ですがMoOde Audio + abcde(CDリッピング)も快調でついライブラリを増やしたくなってしまいます。そんな訳で昔買えなかったアルバムをTUTAYAの1枚100円(10枚)でお世話になっています。

その中で文字化けしてしまうものがありました。
eagytag01
ケルン (ドイツ語: Köln)この文字が化けてしまいます。

Raspberry Pi(Linux)で使えるタグ編集ソフトとなると実用上はEasyTAGになると思います。
でインストール

# apt install easytag

easytag02
この中で文字化けしている部分をちまちま修正していきます

またジャンルも入ってなかったりするものもあります

アルバムアート
MoOde Audioは右側のロゴをクリックすると取得した曲情報を基にGoogle検索に飛んでいきます。
その中から適当なアルバムアートをダウンロードして曲のディレクトリに放り込むとそのアートを表示してくれるのですがどうしても表示しないものがあります。
例えばこれ
easytag03
abcdeはアーティスト+タイトルでディレクトリを作成します
Art_Blakey-[The_Jazz_Messengers]_Moanin
ディレクトリ名に角括弧[ ]が含まれているとその中のアルバムアートを読み込みしないようです。
丸括弧に変更するとかすると正常に表示できます
(タグはそのままでOK)

やはりMoOde Audioは楽しいPlayerです。

MoOde Audio NASサーバーにする

MoOde AudioはMusicソースを外部のNASサーバーから利用します。
MoOdeOSはSambaサーバーとしてもデフォルトで稼働しておりNFSサーバーを導入すれば自身NASサーバーとして、またクライアントとしても運用できそうなので試してみました。

当サイトではRaspberry Piでローカルにファイルサーバーを運用しています。
今まではRaspberry PiファイルサーバーをMoOde AudioからNAS Sourceとして利用していました。

今回、MoOde AudioをNASサーバーにするにあたりRaspberry PiサーバーからHDDの引っ越しをします。

nas02うまく収まりました。
HDDの電源専用ケーブルはUSBハブに設けたUSB-Aに接続します。
またCD/DVDとさらにUSB-HDDが増えたため電源アダプタは2Aタイプに交換

NFSサーバーの導入

# apt install nfs-kernel-server

Raspberry Piサーバーと同様にマウントポイントを作成します。

# mkdir /home/hda

/etc/fstabの編集

UUID=c706f9ae-94f9-43dd-a581-8a8adeae5b92 /home/hda ext4 defaults,noatime 0 0

マウント

# mount -a

/etc/exportsの編集

/home/hda 192.168.x.x/24(rw,async,crossmnt,no_root_squash,no_subtree_check)

nfs-kernel-server再スタート

# systemctl restart nfs-kernel-server
# systemctl restart rpcbind

起動時有効に

# systemctl enable nfs-kernel-server
# systemctl enable rpcbind

クライアントから確認

$ showmount -e moode
Export list for moode:
/home/hda            192.168.x.x/24

Raspberry Pi3ディスクトップの/etc/fstab編集、マウント

moode:/home/hda /home/hda        nfs     rw,defaults 0      0

# mount -a

無事マウントできました。
これで今までどおりLAN内の機器もmoodeに振り向けることにより利用できます。

Music Source設定
MoOde PlayerからNAS Sourceとして認識させるためにはSMB/CIFSとNFSがありますがSMB/CIFSはBrowseのNAS自体がsmbで音楽ソースのシンボリックリンクとなっているため利用できません。
NFSの設定でNAS Sourceとして認識させます。

/etc/exportsの編集(追記)

/home/hda/hda4/music 127.0.0.1/32(rw,async,crossmnt,no_root_squash,no_subtree_check)

nas03
Fileshare protocol NFS
IP address 127.0.0.1
として自マシンに向けます
SAVE クリック

nas04
うまく認識できたようです。

UPDATE MPD DBをクリックしてしばらく待ちます

nas05
これまで同様データベースも構築されました

ネットワーク設定
固定IPを設定しているのですが/etc/resolv.confを書き換えてしまいます。
とりあえずresolv.confにnameserverを書いてやると正常に動くので書き換え不可にしました。
有効な外部または内部のアドレスをresolv.confに書いて

# chattr +i /etc/resolv.conf

rootでも編集不可になります。解除するには

# chattr -i /etc/resolv.conf

参考 arch linux dnsmasq

ufwインストール
一応ufwを導入します。

# apt install ufw

ルールは簡単に

# ufw default DENY
# ufw allow from 192.168.x.x/24
# ufw allow from 172.24.1.0/24
# ufw allow 67/udp
# ufw allow 68/udp
# ufw enable

必要があれば追加していきます。

その他
リブートに時間がかかる(未解決)
USB-HDDをマウントしているとリブートを開始するまで2分位かかってしまいます。

# umount -l /home/hda
# umount -l /mnt/NAS/music

上記のように-lオプションで強制的にアンマウント後は正常にリブートします。

cronが動いていない
MoOde Playerは独自のタイマーを持っています。
そのため敢えてcronをdisableにしていると思います。
当然cronをenableにすると動きますがMoOde Player側のタイマーはどっかのタイミングでキャンセルされてしまうことになります。
MoOde Playerの機能を取るか、cronでなんとかするかの選択になると思います。

#以上のように少々問題もありますが当サイトのファイルサーバーはMoOdeOSでの運用になりました。
さすがに大きなファイル転送はMoOde Playerのキャッシュが切れて音声が一瞬途切れてしまいますが通常使用のファイル程度では問題ありません。
やはり音楽の聞こえる範囲内にサーバーがあるといろいろ使い途も増えそうです。

Raspberry Pi abcde(CDリッピング)

Raspberry Pi1B上で稼働中のMoOde Audioですが音楽サーバーということもありCD(DVD)ドライブを接続してCDリッピングもMoOdeOSでやってみました。

ドライブはI・Oデータ バスパワー対応ポータブルDVDドライブ(DVRPU8NKA)
2ヶ月位前ですが廃番商品になるらしく安かったので購入しました。(1980円)
dvrpu8nka
ドライブ自体は問題なくRaspberry Piで認識します。
$ dmesg | grep sr0
[ 11.931209] sr 1:0:0:0: [sr0] scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray
バスパワー対応とありますが電源専用ケーブルがないためそのままではRaspberry PiでCDを起動できません。
Raspberry Pi2をmax_usb_current=1にして試しましたがやはり駄目でした。
Raspberry Piでドライブを考えている方は電源専用ケーブルがついたものを選択したほうがよいですね。

Raspberry Pi 1BはUSBポートが2個しかないためまずはUSBハブの作成から始めます。

hub01
いつもの100均ハブ
USBポート直挿し
Pi1BではLanポートと干渉するので2段構造にします

hub02

マイクロBはUSBに5Vを入力
USB-Aは外部に供給

USBハブ 4ポート

hub03
合体します

hub06
Pi1Bにはアナログ電源(専用ポート)を搭載しているのですが残念ながらCDを起動(回転)できませんでした
CD回転時は1Aクラスの電源が必要そうです。
やむを得ないので今回はスマホ電源(1A)をつないでしのぎました

hub07
はみ出し感満載ですが使い勝っての観点からまあよしとします

さて準備ができたので必要なパッケージをインストールします。
当サイトではflacをメインにしたいと思います。

# apt install abcde flac id3v2

さらにmp3にも対応

# apt install lame eyed3

abcdeはスクリプトなのですがCDDBの問い合わせに際してeuc-jpで取り込むため文字化けをしてしまいます。下記のサイトに解決方法がありました。(詳細は下記を参照)
CDリッピング いち雑記
スクリプトのコピーを取ります。
/usr/bin/abcde

# cp -p abcde abcde.def

/usr/bin/abcdeを編集 修正箇所(diff) abcde.txt

設定ファイル
abcdeをインストールすると/etc/abcde.confができます。
このファイルをcp abcde.conf ~/.abcde.confとして編集するのですが必要な箇所のみ記述したほうがわかりやすいと思います。
記述した以外はデフォルトの設定が適用されます。

上記のサイトを参考に設定したファイル .abcde.conf
CDDBSUBMIT=メールアドレスを記入
LAMEOPTS=’ -b 320′ mp3作成時のレート(適当に)
OUTPUTDIR=`pwd` WAVOUTPUTDIR=`pwd` コマンド実行位置のディレクトリを指定
OUTPUTTYPE=flacを指定
PLAYLISTFORMAT= moode playerでは使用しないがメモ代わりにm3uを作成

テスト
マイクロSDカードに書き込んでみます。
moode audioではmedia/以下に自動マウントされますがfat32では一般ユーザーでのアクセス制限(マウントオプションで変更可能)があるためext4でフォーマットします。
SDカードを差し込むと/media/uuidでマウント、moodeにログインして

$ cd /media/uuid
$ sudo mkdir music
$ sudo chown pi:pi music
$ cd music

日本語タイトルのCDを変換してみましょう。

$ abcde

abcde-02
無事日本語が取得できています
動作としてはCDDBでアルバム情報を取得
WAVOUTPUTDIR=で指定した一時ディレクトリにwavファイルを吸い上げ、同時にflacに変換
OUTPUTDIR=にflacファイルを格納
wavファイル吸い上げが全曲終了するとCDイジェクト
pi1Bは非力なせいかCDイジェクト後にまだ未変換の曲(数曲)をflacに変換しています
flac変換が終了すると一時ディレクトリは削除されてアーティスト_アルバムタイトルのディレクトリが残ります

一時的にOUTPUTTYPE=mp3 ビットレート=192kbpsで作成したい場合は次のコマンドを入力します。

& abcde -o mp3:"-b 192"

CDリッピング中はweb radioを再生していても特に問題なく完了します。
abcdeとコマンドを入力するだけで実にお手軽です。

Top