3
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

balenaOSを用いて簡単にラズパイBluetoothレシーバを構築する

2020-01-28 動作確認・オプションについて追記

はじめに

ラズパイを用いてBluetoothレシーバを作りたいと思った。検索すると大体bluezを用いてBluetoothレシーバにする例があったため最初bluezで構築した。しかし、遅延やら停止、コーデックのエンコードエラーが多発したためbluezのBluetoothレシーバはやめた。色々と調べているうち、balenaプロジェクト公式で「昔のHi-fiオーディオを今時レシーバにさせない?」みたいな記事があったため構築してみようとやってみた。
以下そのサイト

Turn your old speakers or Hi-Fi into Bluetooth, Airplay and Spotify receivers with a Raspberry Pi and this step-by-step guide
https://www.balena.io/blog/turn-your-old-speakers-or-hi-fi-into-bluetooth-receivers-using-only-a-raspberry-pi/
image.png

どうやらこの通りだとBluetoothだけでなくAirplay、Spotify Connect が使えるようになるらしい。
ある意味すごい。今じゃ当たり前だが。。
やってみる。

準備したもの

  • Raspberry Pi 3B
  • microSD 64GB (FAT32フォーマット済み)
  • 3.5mmプラグステレオスピーカー
  • 電源 (5V,3A)

ラズパイに関してはRaspberry Pi 3A+/3B/3B+/4B/Zero W (Wi-Fi,Bluetoothが使えるモデル)で動作する。
セットアップPC環境はWindows 10 Home 

balena Cloud の初期操作

アカウントの作成
https://dashboard.balena-cloud.com/signup?utm_source=efp&utm_campaign=balena-sound にてアカウントを作成。Github,GoogleのアカウントでもOK
アプリケーションの作成
サインインするとアプリケーション作成が出る。自分がわかりやすいものでよい。
ラズパイに焼くbalenaOSの準備
ダッシュボードから[ +Add Device ]select device type は自分のラズパイを選ぶ。select balenaos versionは最新のもの"(recommended)"を選ぶのではなく"v2.38.0+rev1"を選ぶとよい。(recommendedのまま焼いたら起動しなかった) select edition は "Development"、network connection は"Ethernet+Wi-Fi"を選びSSID,Password を入力。そしてダウンロード。

balenaOSを焼く・起動

焼く
FlashツールであるbalenaEtcherをインストールする。
https://www.balena.io/etcher/
起動するとこのような画面が出る。Select image はダウンロードしたbalenaOS を選択。Select drive で焼きたいSDカードを選び、Flashする。
image.png
Flash Completeと出たら完了。一度イジェクトしてまたPCに差し込む。
カスタマイズ
調べるとgpuメモリを多く設定したほうがいいとあった。念の為設定する。ここを参考にした。

 “balenaOSをRaspberry Pi3にインストールする方法 – Qiita”
https://qiita.com/ikemura23/items/deedeb2a55ca1f6d0ec5

今回音声メインなためこの設定は不要かもしれない。
Windowsでもrasin-bootからconfig.txtをメモ帳編集でよい。
※ネットワークに関して
 固定(静的)IPだとbalenaOSには繋がらない(DashBoadに表示されない)ため、DHCPが無難である。
 固定の場合はルータの設定でDHCP有効化しておくと良い。

設定が完了したところでラズパイにSDカードを差して起動。

balenaOSの起動

起動
ラズパイにSDカードを挿入して電源を投入。
 ここで起動状態を確かめたいという方はhdmiでモニター等につなげるとコンソール画面が見れると思う。
 → 画面に大きくbalenaOS、その下にBooted - Check your balena dashboard.と出ていれば正常。
balena Cloud上でのデバイスの確認
balena Cloudのダッシュボードを確認すると起動したデバイスがリストに出ているかと思う。
ページより
image.png

もし出ていない場合はネットワークに繋がっていない、もしくはラズパイのエラーかと思われる。
(OS作成時にnetwork connection はEthernet+Wi-Fi を選んでいなくWi-Fiに繋がらない、DHCP設定等)
公式のトラブルシューティング:https://www.balena.io/docs/faq/troubleshooting/troubleshooting/

balena CLIのインストール

balenaプロジェクトのGithubからインストーラをダウンロードしインストール
https://github.com/balena-io/balena-cli/releases
その後コマンドプロンプトかPowerShellを管理者で起動する。
balena login と入力 Web authorization (recommended)を選択
ブラウザが立ち上がるのでサインインしボタンを押せば認証完了

コードをデプロイ

Githubからコードをzipで任意の場所にダウンロード
https://github.com/balena-io-projects/balena-sound
ダウンロードしたzipを解凍、コマンドプロンプトかPowerShellを管理者で起動

cd [解凍したディレクトリ]  ~\balena-sound-master
balena push [自分のアプリケーション名]

正常にデプロイされていれば以下のユニコーンが出る
image.png

そしてbalena Cloudのダッシュボードを見るとUpdatingとなる。Updating終了後自動的にRunning になる。

image.png
Serviceとして airplay bluetooth-audio spotify が動く。これで一度rebootし機能するか確認する。
スピーカーをつなげる。

動作確認

Bluetooth
スマホ・プレイヤー・PC等をペアリングする。デバイス名として "balena Sound ~ "と出るので選択しペア。音源を再生できればOK
ペアするとピンポーンと音がなる。
注:Android端末によっては接続しても接続していない状態(「nullと接続しています」)が設定画面に表示されるが正常である。これでまた接続しなおすと再生できなくなるため注意
Airplay
iPhone・iPod・iPad等のAppleデバイスで利用可能。またiTunesでも可。Bluetoothオン(しなくても大丈夫だった)AirplayでBluetoothと同じデバイス名が出ればOK
Spotify Connect
注:Spotify Premiumに入っていないと使えない
Wi-Fiで繋がる。SpotifyアプリでスピーカーとPCのボタンを選択しBluetoothと同じデバイス名が出ればOK

デバイス名の変更(オプション)

balena Sound ~はダサいなと思ったらデバイス名を変更できる。
balena Cloudダッシュボード上の Environment variablesを選択
[+Add variable]からNameにBLUETOOTH_DEVICE_NAME Valueに任意のデバイス名を入力
 これでrebootすればデバイス名が設定した名前に変わる。

※その他のオプション

ページの記載だとDAC HATを用いて音質アップできるらしい。
今回はやらないが、DACを使いたいという方は参考にしてほしい。
また、HDMIでも音声出力はできるので、HDMI対応アンプを持っていれば音質アップできるだろう。
詳細のオプションについてはGithubに書いてある。(ボリュームの固定、PINコードの設定等)
https://github.com/balenalabs/balena-sound#set-output-volumes

良かった点

・raspbianでbluezインストールするよりはコマンドを打たなくてよいため楽。ほぼguiでOK すぐに構築できる。
・balena Cloudの使い方が分かった。とても簡単。gitだと設定がクソ面倒くさいためすぐbalena CLIが使えるのはホント楽。
・bluezでレシーバ化したのとは全然違う。ほぼ遅延しないし止まらない。またペアが楽にできる。
・Airplayで動画等の音声を飛ばせるため良い。少々遅延があるが

悪かった点(躓いた点)

・balenaOS作成時にnetwork connection をEthernet only トグルのままで最初OSを作成してしまった。
  → ネットに繋がらない。Bluetoothも使えない。
・balena CLI と Git で最初コードを適用したが変数エラーが出た。
  → ドキュメントにも記述してあるが、Windows上だとこの組み合わせはエラーするらしい。そのため先程のようにzip解凍→balena pushすればきちんと動く。

まとめ

bluetoothレシーバ化はラズパイだとbluezしか方法が無いのかな?と思っていたが、balena Cloudを用いても簡単にしかも遅延、ノイズ等無しで再生できることが分かった。まだ初期段階であるためもしかしたら今後再生できなくなってしまうといったトラブルがあるかもしれない。あくまでもラズパイbluetoothレシーバ化の一つの手段としておく。
また、balena Cloudを用いてYoutubeのサイネージが構築できるらしいので今後やってみたいと思っている。

リンク

balena - Home
balenaOS - Getting Started

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
3
Help us understand the problem. What are the problem?