モダンジュークボックス:Raspberry Pi & Arduino LEDミュージックプレーヤー
必要な部品と材料
| Raspberry Pi 3 Model B | ×1 |
| Adafruit Pi Perma Proto Hat(EEPROMなし) | ×1 |
| Arduino Nano R3 | ×1 |
| NeoPixel LEDストリップ(60 LED/m) | ×1(36 LED + 22 LEDに切断) |
| Uctronics 5インチHDMIタッチスクリーンLCD | ×1 |
| HDMIフラットケーブル 270度 1ft | ×1 |
| HDMI変換アダプター(90度/270度) | ×1 |
| 左出しMicro-USB - USB-A 9インチケーブル | ×1 |
| 短いMicro-USB - USB-Aケーブル | ×1 |
| 電解コンデンサー 1000µF | ×1 |
| IQAudio Pi Digi Amp Plus | ×1 |
| 抵抗 330Ω | ×2(NeoPixel用) |
| SparkFun サウンドディテクター | ×1(音声反応LEDに必須) |
| Dayton Audio RS100-8 スピーカー | ×2 |
| スピーカーケーブル 18AWG | ×1 |
| SPDTミニロッカースイッチ(センターオフ) | ×1 |
| SPSTロッカースイッチ | ×1 |
| Adafruit フェメイルヘッダー 5個セット | ×1 |
| フックアップワイヤー 22AWG | ×1 |
| M2.5スタンドオフ 20mm(片側メス) | ×4 |
| M2.5スタンドオフ 5mm(片側メス+ナット4個) | ×8 |
| M2.5ネジ 4-5mm | ×4 |
| Micro SDカード | ×1(Raspberry Pi用) |
| Adafruit パネルマウント 2.1mm DCバレルジャック | ×1 |
| DC電源延長ケーブル | ×1 |
| ベルベット接着ライナー | ×1(LED背面の遮光用) |
| 3Dプリントフィラメント | ×1(赤、白、銀、茶等複数色) |
| Adafruit スローフェード 5mm 拡散LED | ×1(星型インジケーター用) |
| アクリル板 3-6mm | ×1(上部窓用) |
| M2.5ネジ 15mm以上(スピーカー用) | ×12 |
| 3ピンねじ端子台 5.08mmピッチ | ×1 |
| 3.4A電源アダプター(19V→5V降圧) | ×1 |
| スピーカーグリルクロス | ×1 |
必要な工具と機器
- 3Dプリンター(Prusa i3 MK3S相当以上の造形容積)
- グルーガン(細口タイプ推奨)
- はんだごて
- CA接着剤(Zap-a-Gap等)
使用するアプリとオンラインサービス
- Volumio(ミュージックプレーヤーOS)
- Arduino IDE
- GIMP / CorelDRAW(窓用画像編集)
このプロジェクトについて
インスピレーション
長年クラシックジュークボックスに憧れ、2014年から挑戦していましたが、当時はスキル不足で満足いく出来にはなりませんでした。その後3Dプリンティングと設計スキルを習得し、このプロジェクトに至りました。
参考情報: 市販の卓上ジュークボックス(Victrola等)なら約65ドル、本格的なモダンジュークボックス(高さ105cm)は約795ドルです。コストと労力のセクションを参照し、自分に合うか判断してください。
クレジット: Marco Gregorio氏の優れた3Dジュークボックス設計(GrabCAD)がベースです。実物なしでインターネットの情報のみでモデリングされた驚異的な作品です。また、Michael Bartlett氏の「Interactive LED Music Visualizer」(SparkFun学習サイト)のArduinoコードをLED制御に活用しています。
概要
無料のVolumioソフトウェアで動作するミュージックプレーヤーです。VolumioはAirPlay、Spotify、Pandora、Webラジオ、ローカル音楽に対応し、PC/タブレット/スマホから操作可能。これに3Dプリントケース、タッチパネルLCD、音楽に反応するLEDを追加しました。LCDはRaspberry Pi 3/4で駆動、LEDはAdafruit Perma-Protoボード上のArduino Micro(現行ではNanoやItsy-Bitsyで代替可能)で制御し、ハードウェアスタックの最上部に配置:Raspberry Pi → IQAudio Pi Digi Amp → Perma-Proto基板。SparkFunサウンドディテクターが音声をデジタル信号に変換します。
設計目標
- 高さ約38cm(15インチ)
- タッチスクリーンでNow Playing/アルバムアート表示
- 良質なスピーカーサウンド
- 美しくアニメーションするLED
- 3Dプリントらしさを活かす(後処理なし、複数色フィラメントで造形)
- 1回のプリント12時間以内(一晩プリント不要)
- 継ぎ目を隠す/最小化
スキルレベル:上級
- 3Dプリント総時間 75時間以上
- 精密な組み立てが必要(順序と位置合わせが重要)
- 完成後のケース内部は狭く作業しにくい
コスト:高め
(全てUSD)最低限必要なもの:
- 後処理する場合:白フィラメント2-3巻+仕上げ材で約70-90ドル
- 後処理なし(複数色使用):手持ちによる。筆者は赤フィラメント約30ドル追加のみ(白、銀、茶、黒は在庫あり)で約100ドル相当
- Arduino Nano/Adafruit Metro Mini:約20ドル
- Adafruit Perma Proto Hat:5ドル
- HDMIタッチスクリーン(Uctronics 5インチ):53ドル
- Raspberry Pi 3B+:35ドル
- Dayton Audio RS100-8スピーカー×2:60ドル
- スピーカーケーブル、グリルクロス等:約50ドル
HDMIケーブル/コネクター、スイッチ、取付金具、ジャンパーワイヤー等でさらに40ドル以上。筆者は在庫品が多く実質約150ドル(数ヶ月かけて購入)。全て新規購入ならさらにかかりますが、筆者にとっては価値ある投資でした。
労力
3Dプリント:75時間以上(21種類のSTL、12時間超えのパーツ多数、失敗なし前提)
組み立て:ホットグルーで4フェーズ、約3-4時間。LED貼り付け約1時間。小物パーツのCA接着含む。
電子工作:Volumioインストール、Arduinoスケッチ書き込み、基板ハンダ付け、事前テスト、LCD取付、スタック組み立て、スイッチ/電源ジャック取付、スピーカー配線で最低5時間。
最終接着:1-2時間。
プリント時間除いても組み立てだけで12時間以上。
ダウンロード
ドキュメント、コード、3DプリントファイルはGitHubで公開。STLファイルはThingiverseでも入手可能。
3Dプリント
全21種類のSTLファイル。一部は2個印刷が必要。GitHubのdocsフォルダにパーツリストとプリント時間、PrusaSlicer設定スクリーンショット、造形向きガイドがあります。
注意: 掲載画像はプロトタイプです。公開版STL/Fusion 360ファイルでは以下を改善:LCDベゼル拡大、マウントプレート拡大とクリアランス確保、スタンドオフを穴+ネジ方式に簡略化、バックカバー簡素化。
はじめに
「部品」セクションのコメントを必ず熟読し、指定部品を使用してください。代替部品を使う場合は必要な変更を自分で判断する必要があります。
ケース組み立て前に全電子部品の動作確認を推奨:
- Volumioインストール・設定
- 基板ハンダ付け
- NeoPixel、スローフェードLED、スイッチ配線
- 部品実装
- GitHubからArduinoスケッチ取得・書き込み
- 全機能テスト
Volumioインストール
Volumio公式のGetting Startedに従ってRaspberry Pi用セットアップ。IQAudio Pi Digi AmpをPiにスタンドオフで固定し、ヘッダー接続。後でジュークボックス底部にマウントします。Digi Amp Plusの+5V/GND端子からPerma-Protoボードへ電力供給用のジャンパーワイヤーを接続(最新版Digi AmpはPiの全ヘッダーピンが露出しているため標準位置に5V/GNDあり)。
スピーカー用に約7インチ(18cm)のスピーカーケーブル2組を用意し、スピーカー端子とIQAudioネジ端子に接続。PiはIQAudioから給電されるため、Piの電源ジャックには繋がないこと。IQAudioにACアダプターを繋ぎ、VolumioでWebラジオ再生テスト。
Volumio設定:IQAudio Pi Digi Amp Plus選択、タッチスクリーンプラグイン有効化(Settings/Plugins/Miscellanea)。
基板準備
Adafruit Perma-ProtoボードはPiとIQAudioスタックの上に載せる娘基板として最適なフォームファクタ。IQAudioの5V/GNDのみ接続し、Pi用メスヘッダーは未使用。
基板上の「3.3V」レールを5V入力として使用、基板パターンをカットして複数ピンを1列/1行に集約する等、スペース効率を重視したレイアウトにしています。写真ギャラリーを参照してください。
注意: 3ピン端子台は5.08mmピッチ(標準2.54mmの2倍)。基板レイアウトとパターンカットはこの前提です。2.54mmピッチ品には置き換え不可。
アニメーション選択スイッチ
3ポジションロッカースイッチを配線(約18cmのワイヤー3本、黒2本+赤1本推奨)。詳細は後述。
NeoPixel
1m NeoPixelストリップのシリコンカバーを剥き、36 LEDと22 LEDに切断。短い方はフロントグリル周り、長い方は外側ネオンチューブ用。各ストリップにGND、+V、DIN用ワイヤーをハンダ付け(DIN方向に注意)。DINラインに330Ω抵抗を直列挿入。
スターライト
フロントグリルの星型パーツ後ろにRGBスローフェードLED(+V/GND駆動)を配置、3Dプリントバッフルで遮光。+V側に120Ω抵抗を直列挿入し、5V→約3.4Vに降圧。
Arduino
Arduino IDE未インストールならインストール。NeoPixelライブラリ必須。音声反応NeoPixelはMichael Bartlett氏の「Interactive LED Music Visualizer」(SparkFun)ベース。「Full Visualizer」ボタンなし版を使用し、3ポジションロッカースイッチで以下を制御:
- ポジション1:音楽に反応
- ポジション2:カラーチェイサーパターン(音声非反応)
- センター:LEDオフ
スイッチ未接続時はLED動作しません。GitHubから「Jukebox LEDs」スケッチをダウンロード・書き込み。
接続:
- ArduinoをPerma-Protoボードのメスヘッダーに装着
- 36 LEDストリップ → デジタルピン7端子
- 22 LEDストリップ → デジタルピン13端子
- SparkFunサウンドディテクター装着
- ロッカースイッチ:コモン→GND、ポジション1→D2、ポジション2→D4
- IQAudio Digi Amp +5V/GND → Perma-Proto 5Vレールメスヘッダー
- スローフェードRGB LED → +5V/GNDメスヘッダー
書き込み後、セットアップ時のレインボーサイクル完迄(数秒)音声反応は動きません。完了後、グリルLEDは常時点灯(スイッチ影響なし)。音楽再生中にネオンチューブが反応します。
組み立て
工具
細口グルーガン(小径グルースティック大量消費)。仮止めにギフトラッピングテープ(接着力・せん断強度とも優秀)を活用。
ケース組み立て
内側(グリル)から外側(ネオンチューブ)へ順に接着。ネオンチューブ接着後、以下をマウントしてからバックケース接着:アクリル窓+写真、NeoPixel、LCDタッチスクリーン、グリルクロス+スターライトホルダー、Raspberry Pi/IQAudio/Arduinoスタック、接着フェルト(遮光)、スイッチ付きベース。その後ケースとベースを接着。
完全硬化後、スピーカー取付、装飾パーツ接着。オプションで2ピースのバックカバーをネジ止め可能。
ハードウェアマウント
「右」「左」はジュークボックス正面から見ての右左です。
アクリル窓と写真
ルーターツール(Dremel等)低速でアクリル板をカット(テンプレート同梱)。エッジ研磨後、CA接着でアーチ上部に固定。好みの写真を裏から貼り付け。
NeoPixel
長いストリップをネオンチューブにエッジ貼り(LEDが内側を向くよう)。ストリップの端部スペースを利用して密着。グリルチューブ用は左右ボトムにU字型で貼り付け、テープ仮止め→タックグルー→テープ除去→隙間埋め。
LCDタッチスクリーン
アーチ上部のマウントポストにネジ止め。HDMI入力は天面にあるため90-270度変換アダプター装着、1ftフラットHDMIケーブルでPi接続(Pi 4ならMicro HDMIケーブル必要)。左出しMicro-USBをタッチポートに、USB-AをPiに接続、左ネオンチューブ経由で配線。
グリルクロスとスターライトホルダー
スピーカークロスでグリル裏を覆い、スターライト用に穴を開ける。クロスをスターライトホルダーに合わせて円マーク→十字カット→4隅トリミングで穴形成。スターライト用LED(基板準備編参照)をホルダーに入れてスターライトにCA接着。クロスを被せてグリルチューブ端部に接着。
Raspberry Pi/IQAudio/Arduinoスタック
動作確認済みスタックをマウントプレートにネジ止め(Pi底面5mmスタンドオフ使用)。LCDのHDMI/USBケーブルをPiに接続。追加の6インチMicro-USBケーブルでArduinoとPiを接続(Arduino給電用)。スターライトLEDの+5V/GNDをDigi Amp Plusのレールから取る。
接着フェルト
遮光用にクラフトフェルト(粘着付き)を内部に貼り、ケーブル通し穴を開ける。
スイッチ付きベース
アニメーション選択スイッチの他、パネルマウントジャック連動の電源ON/OFFロッカースイッチを装備。GND線(黒、80mm以上)をスイッチ「O」端子とバレルコネクターのアクティブGNDピンにハンダ付け。電源延長ケーブルの被覆を80mm剥き、GND(黒)をスイッチ「I」端子に、+V(赤)をバレルコネクター+V端子にハンダ付け。延長コネクターをDigi Amp Plusに挿し、ベースをボトム/ケースに接着。
スピーカー
Dayton Audio RS100-8はセンターコーンが突出しておりフラットグリルに直付け不可。専用マウントリング(3Dファイル同梱)で対応。15mm M2.5ネジ+ナットで固定。
コツ: リングをケースにネジで仮合わせ→ホットグルー/CA接着で固定→スピーカーをリングに取付。奥のネジ穴はクリアランスが狭くナット起こしが困難。ブルータックやテープでナットを保持すると楽。
装飾
天面と両サイドに装飾パーツ(GitHubパーツリスト参照):ネオンチューブ赤カバー、ファン装飾、オーナメント、ケース継ぎ目カバー、トップ赤オーナメント、トップオーナメント。左右対称に配置。赤カバーの中間点とネオンチューブ継ぎ目を合わせてCA接着。長い継ぎ目カバーを赤カバーに合わせて接着。ファン装飾とオーナメントを赤カバー上下に接着。トップオーナメント(2ピース)を組み立ててトップ赤カバーに接着、アーチ天面中心と赤カバー中心を合わせて接着。
操作
Volumioは直感的なUIです。HomeアイコンまたはPlayback画面のBrowseから開始。Pandora/Spotify(有料要)はSettings/Plugins/Music Servicesで設定。AirPlayでApple Musicからも接続可能。
アップデート(2021年9月20日)
Raimund Trierscheid氏が改良版を制作:ケース側面に5mm木製パネルを追加し、重いスピーカーを支えて音質向上を実現。写真参照。
製造プロセス
- FMEAの現代化:産業信頼性エンジニアのための実践ガイド
- クラシックジュークボックスの遺産と進化
- バイオリン弓の職人技:歴史、材料、製造工程
- Raspberry Pi 2からAzure Event HubsへAdafruit 10DOF IMUデータを送信(Windows 10 IoT Core)
- Sprout: Arduino搭載・高機能自動給水プランター「スプラウト」
- UnifiedWater v1 - 完全なArduino水質センサーキット
- GSM接続対応ポータブル投票システム「Mobile Vote Box」
- Arduino 101とtinyTILE BLEでスマートマッチングサングラスを作る
- Arduino Portenta H7で作る高性能エッジAIカメラ:OpenMV + TensorFlow Lite
- 非メカニカルデジタルメモリの理解:SRAM、DRAM、フラッシュ
- 象牙からベークライトへ:現代プラスチックの進化をたどる