損するあほう

野良の時計修理技能士がいろんな時計を開いていくブログ。

ラズパイ 3B と WM8960 HAT でインターネットラジオ

以前からさわってみたかったラズベリーパイを使ってインターネットラジオ垂れ流し機を作りました。
うちはテレビが点いていない時間が長く、自分の息や鼓動さえ聞こえる場面があります。さすがに静かすぎますね。

 

どういうものを作ったのか

作成したのは Moode を使ってインターネットラジオをかけっぱなしにしておくオーディオシステム。

 

ケースは3Dプリントで造形しています。材質は9600レジンCBY レジンです。 JLC3DP で発注。

スピーカーをケース内部に組み込んでいますので一度組んでしまえば余計な配線は不要。すごい! 電源ケーブルを挿して別デバイスでアクセスすればインターネットラジオをかけられます。

 

 

長めの記事です。必要なところだけを読んで必要な情報を持っていってください。

*すべての作業は自己責任で行ってください。
*EC リンクはアフィリエイトリンクを含みます。

 

何が他と違うのか

圧倒的に オールインワンの自作ケース です。部品はすべて中に入っていて、電源を挿すだけで他の配線はしなくて良い点が他とは違います。
エンクロージャ内部にラズパイ、スピーカー、 DAC 、スイッチすべてを載せて配線を済ませていますから電源ケーブル以外の余計な配線は全く必要ありません。机の上がスッキリするのが魅力的。

ラズパイ オーディオ ケース(google検索)」などで検索しても最後まで作った例が少なくて困っていました。
見つかるのはラズパイだけのケースに入れたまま、外部のアクティブスピーカーにつないで完成な記事。それじゃあ何の意味もないんだよ! 私みたいな初心者には「 HAT を使って Moode の音が出ました、終わり」ではダメなんだよ! そんなゴチャ付いたまま放置するわけ無いだろう! 嫁に怒られるじゃないか!

 

他に違う点といえば

  • 良い音質を求めていない
  • 音量つまみ
  • 再起動スイッチ

でしょうか。

 

音楽をじっくり聴くわけではなく、後ろでなんとなく流れているだけのものが欲しかったこともあり音質は捨てています。ただの低予算ともいう。

利便性を求めてボタンとつまみを追加。
UI 経由でないと音量を操作できないのは面倒ですし、電源ボタンがあればケーブルをぬかなくていいので楽です。 Micro-B ってすぐ潰れるし。

 

部品の用意

使うものは次の通り。選定理由も簡単に述べておきます。画像、リンクで EC ページへ遷移。

  • ラズパイ 3B (3000円)
  • Waveshare WM8690 Audio HAT (3500円)
  • NFJ スピーカーユニット 2インチ 8Ω 6W (500*2円)
  • 再起動スイッチ (370円) 
  • ロータリーエンコーダー (480円)
  • Type-C - MicroB ケーブル (500円)
  • その他細々したもの

これらを詰め込むエンクロージャ、つまりケース(40USD)は別とします。結構お金がかかってしまった。

 

ラスパイ本体

中古の Raspberry Pi 3 Model B を使用しました。某オークションにて入手。

本来なら Raspberry Pi 4 がほしいところ。よくある PD 充電器で駆動する Pi 4 が理想的なものの、予算の都合で 3B を採用します。 Moode を動かすにも十分です。起動してから Moode の操作が可能になるまで1分弱。

 

WM8960 Audio HAT

とりあえず選んだ感じ。ステレオ出力。出力端子はターミナル、 3.5mm ジャック、ピンみたいなのと豊富。Waveshare の wiki によると Speaker driver: 1W per channel (8Ω BTL) 。10畳くらいの部屋なら十分聞こえます。

HAT 本体、 M2 ねじ、スピーカーが同梱されている。ネジは細すぎてガタガタ。使いません。

 

後々、出力のためにいくつか設定があります。

 

スピーカーユニット

NFJ が販売している安価なスピーカーユニットを2つ使用。500円/個。源泉かけ流しのスピーカーには十分です。というか、これでも結構音質が良い。

だいたい50mm口径、マウント部の直径63mm。厚さ33mmくらい。ケースを作るときにバランスが良いかと思ってこれくらいの大きさにしました。正直勘です。

HAT 付属のスピーカーを使わないのかって? でかいし固定しづらそうなのがちょっと...。音は悪くありませんが固定方法がイマイチ想像できませんでした。

 

再起動スイッチ

電子工作用のスイッチ。モーメンタリー型。LEDなしでも大丈夫。オルタネート型はダメ。

はんだ付けするやつ。こういうステンレスのものでもいいし、もっともっとシンプルなタクトスイッチでも大丈夫。

LEDを点灯させるにはラズパイ側で設定が必要になります。

 

ロータリーエンコーダー

音量つまみ用の部品。1回転で20パルス。 KY-040 とかいうやつ。クリック感があってコリコリするのが気持ちいい。ボタンが内蔵されており、カチッと押し込むとそれもイベントとして使えます。

この形だとデュポンケーブル(ジャンプワイヤー)がそのまま使えて楽。はんだ付け不要。他にも EC11 という型のロータリーエンコーダーも使えそうな感じです。知らんけど。

 

つまみも種類がたくさんあります。気分が上がるものを使いたいところ。軸の形や長さに注意。

 

Type-C - Micro-B ケーブル

5V/3A の出力に対応したケーブルです。ただの Amazon ベーシックのやつ。

5V/2.5A 以上に対応する電源ケーブルやアダプタを用意できる場合はそれを使えばいい。新規購入の必要はありません。

 

Type-C to Micro-B の変換アダプタも考えました。ところが USB の規格違反だそうで、一旦オス-オスのケーブルで我慢します。 Type-A to Type-C あまってるから使いたかったのに...。

 

その他細々したもの

  • M3 ネジ(スピーカー用)
  • M2.5 ネジ (ラズパイ固定、ケース固定)
  • ヒートシンク
  • ミニファン

このあたりは手持ちがなければ随時購入して対応。ネジはもちろんボルトやワッシャーもセット。

 

ケース

Fusion360 で作成し、 JLC3DP に発注しました。15*12*12 (cm)くらいのサイズで送料込み 40USD 。

お財布と相談しながら好きな素材でプリントすれば良いでしょう。

今回は9600レジンと CBY レジンを選びました。理由は安さと強度。後者はいわゆる粘りがあってネジやワッシャーの圧に強いそうです。

 

塗装はアクリル塗料で行いました。 JLC3DP のチャットで質問したらアクリル系スプレーで色を付けていると言っていました。

 

HAT を設定する

SD カードに Moode をインストールして起動するだけでは WM8960 を使えません。ドライバをインストールする必要があります。 wiki を見ながらどうぞ。

SSH で接続するか本体から映像出力をしてコンソールに以下を1行ずつ入力。

sudo apt install git
git clone https://github.com/waveshare/WM8960-Audio-HAT
cd WM8960-Audio-HAT
sudo chmod +x install.sh
sudo ./install.sh
sudo reboot

再起動後に右上の m -> Configure -> Audio にある Output device に wm8960-soundcard が出現していればオーケーです。

私の HAT はこれで動きました。

 

GPIO 周りの設定

接続したスイッチ類を使えるようにします。自分で配線、設定できる人はスキップ推奨。 Moode のバージョンは 10.0.2 。

まず設定の中の Peripherals -> Volume controllers -> Rotary encoder トグルをオン。
Encoder settings を「100 2 3 5 6」にします。

次いで Other peripherals -> GPIO  buttons をオン。
EDIT GPIO pin mappings に入り以下を設定。

Button # ON/OFF GPIO UP/DN Cmd
1 ON 23 P-UP sudo,shutdown,-h,now
2 ON 25 P-UP mpc,toggle

Debounce (ms) はボタンを押してから1回目以外のボタン入力を無視する時間です。1000なら1秒後にミュートが実行されます。そのミュートまでにボタンを何度押しても操作は1回しか行われません。
私は100にしています。

 

電源 ON/OFF に連動してLEDを点灯させたい場合は boot/firmware/config.txt の最後の行に以下追記。

dtoverlay=gpio-led,gpio=24,label="pwr_led",trigger="default-on"

これで電源が入っている間は点灯、シャットダウンしたら電源プラグが挿入されていても LED は消灯されます。

 

配線

実際の配線、 BCM (物理ピン) は以下の通り。

  • ロータリエンコーダ
    • CLK: GPIO5 (29)
    • DT: GPIO 6 (31)
    • SW: GPIO25 (22)
    • + : 3.3V (17)
    • - : GND (39)
  • LED スイッチ
    • ON: GPIO 23 (16)
    • ON: GND (14)
    • + : GPIO24 (18)
    • - : GND (20)

いい感じに動け!

 

もしこの配線に異論があれば好きなところへ配線して大丈夫だ、問題ない。

 

組み立て

 

 

スリットに板を入れて最後にネジとナットで固定する方式でケースを閉じます。

5mm厚で作った9600レジンはかなり剛性が高く、正直こんなに分厚くなくても大丈夫だろうという感想です。また、軽くネジ止めするだけなら問題なさそうですから、今後なにか作ることがあれば全部9600でレジンで作ってみます。


デザインを勉強していないため、見た目も地味ですしスピーカを活かせているかわかりません。ですが私の用途としてはこんなもんで事足ります。

 

音質やいかに

スピーカーを壁際に置いて、30cm離したスマホ内蔵マイクで録音したものが以下の音です。録音環境がひどくて申し訳ない。

どうでしょう。ぎりぎりベースの音も鳴っていて最低限 BGM としては機能しているような気がしませんか。

 

音楽は最低限ですが、ことおしゃべりに関しては何も困りません。 NHK をつけっぱなしにしておくのにちょうどいい。

 

ハマった問題

いくつかの問題に直面しました。原因は私がラズパイ初心者だったからだと思われます。他の方でも似たような困難に出会うこと間違いなし。

誰かと未来の私が同じ状況に陥って手を止めないようにメモとして以下に書き残しておきます。

 

HAT と GPIO ピンの競合が発生した

HAT が予約している GPIO ピンを使おうとしていたため、設定項目をいくらいじっても駄目でした。

今回の WM8960 HAT は以下のピンを使用します。

 Functional Pins   Raspberry Pi Pins (BCM)  Description
5V 5V  Power positive (5V power input) 
GND GND Power Ground
SDA P2/SDA I2C data input
SCL P3/SCL I2C clock Input
CLK P18 I2S bit clock input
LRCLK P19 I2S frame clock input
DAC P21 I2S serial data output
ADC P20 I2S serial data input
BUTTON P17 Custom buttons

公式から引用

このため、P3 ( GPIO3 ,物理6ピン)を GND とショートさせて電源の ON/OFF を実行できません。

 

本来ラズパイでは上記ショートの組み合わせで電源操作を行えます。電源供給が行われていれば OS の起動が行えますし、起動中は特定のコマンドを実行させられるため電源ボタン一つを実装すれば便利に ON/OFF ができました。
今回の HAT を装着していても、ショートすると起動はできますが、 GPIO3 にコマンドを割り当てようと思ったら HAT が機能しなくなります。

 

もし起動ボタンを実装したいなら GPIO ピンを使用せず、 RUN 端子を使用した電源ボタンにするしかなさそうです。なお、 OS が動いている時に RUN 端子をショートさせると一瞬で電源が切れますから注意してください。シャットダウン処理が行われずぶつ切りだそうです。嗚呼、怖い。

 

<追記>

スイッチのONに線を一つ追加して、GPIO3 と GPIO25 につなぎ、もう片方の ON を GND に配線。 GPIO25 に対応するコマンドを設定すると両立することができるようです。

<追記ここまで>

WM8960 のドライバは入ったが音が出ない

先に紹介したドライバを導入し Output device に wm8960-soundcard を設定しても音が出ないとき、急に音が出なくなる時があります。

 

まずは再起動を試してください。特に急に音が出なくなり Output device から wm8960-soundcard が消失したときはこれで大抵これで直ります。

もし表示されているのにサウンドカードから音が出ていないときは、その下の Named I2S device の設定が None になっているかを確認してください。ここに何かを設定していると正しく出力されませんでした。見直してみてください。

 

大音量時にザザーとノイズが入る

発熱が原因でノイズがのります。

ボリューム80以上で音楽を聴いているとブツブツ、ザザーっとノイズがのります。ながら聴きとはいえさすがにガサガサといわれては困る。

これを回避するのは放熱、つまりケースファンの導入です。

30mm, 7mm 厚を 5V 駆動させてちょっとだけ排気を促すようにしました。ファンレスにしたかったのですが、こればっかりは仕方ない。もう少し大きなファンにしたほうが良かったかもしれない。想定より風が流れていない感じがする。

 

その他使えそうだったものたち

Pimoroni から出ている Audio Amp SHIM なるもの。(商品画像も拝借)
Zero 系のラズパイと相性がとっても良さそう。

こちらはモノラル出力で 4Ω/3W 。 Aliexpress で送料込み1500円。安い。こっちにしておけばスピーカーの選択肢増えてたかな...。少し大きいスピーカーユニットのほうが音質がよかったりするのかな。

 

次は Spotpear から出ているっぽい USB Audio Sound Card Moudle と呼称されるサウンドカード。これ自体にスピーカーが内蔵されています。ラズパイ4, 5 用っぽい。今回は見送りました。

面白いのが、ラズパイの下側に装着するモジュールである点。 GPIO ピンを使わず、 USB から電源と音源を取得しているようで、主にヘッドフォンジャックを奪われたラズパイ5を主眼に置いているようです。プラグアンドプレイ、つまり接続するだけで上質な音が出せると売り文句が書かれています。

これで何かを再生したレビューが2026年初頭に見つからず、またラズパイ 3B での動作について言及されていないため見送りました。

 

最後に Micro-B to Type-C アダプタで給電できるというお話。

とあるフォーラムにて「ラズパイ4の電源ユニットに Micro-B アダプタを噛ませてラズパイ2を起動できる」との投稿を見つけました。上で言及したように規格違反の用法でしょうけど、何かあっても文句を言わないなら考えても良い、のかな。

 

感想

久しぶりに何かを作ってワクワクしました。組み立てられるか不安な中 CAD でケースを作っているときも、揃った部品をつなげて設定をするのも楽しく進められました。
個人的には音質も満足。

 

想像よりも費用がかかってしまったのが反省点。 HAT とケースが高かった。
あとあと調べてみると小さいアンプボードを使えばもっと安く仕上げられるようです。大きな部品を多数使ったことでケースが大きくなりプリント料金が高額になったのも大きな要因です。

 

改良の余地ありありですので、次に垂れ流しラジオを作るときは Orange Pi zero 3 とかの小さくて安いボードと DAC を使ってみたいな。

 

では、またお会いしましょう。

当ブログではAliexpressおよびAmazon.co.jpのアフィリエイトリンクを使用しています。
記事内のリンクには、これらのECサイトへのアフィリエイトリンクが含まれている場合があります。
また、Google Analyticsを利用しています。