2020-03-11に投稿

RaspberryPi Bluetoothレシーバー(スピーカー)構築について

この間 "balenaOSを用いて簡単にラズパイBluetoothレシーバを構築する" という記事を書いた。改めてこの記事について深堀りしたいと思う。

この間の記事
https://qiita.com/ksmndevelop/items/39bbb650ef21798f89fb

そもそもbalenaOSとは

balenaCloudについてはここでは触れない。
検索しても日本語のページが少ないため一応簡単に説明しておく。

balenaOS公式ページに書いてある。
https://www.balena.io/os/

"最新のソフトウェア開発ツールを接続ハードウェアの世界にもたらすプラットフォームであるbalenaCloudの構築を目指して、2013年にDockerをARMチップに移植することから始めました。"

と記載どおりDockerをARMに移植するために始めたとのこと。
要するにほぼDockerコンテナだけを動かすOSと言えるだろう。
Dockerだと簡単にIoT環境構築できるためとても汎用的。

公式からの画像
flow-desktop@1x-291bec507a7c6ed12a8d2d7e282c4a0b.png

balenaOSの利点

  • Dockerコンテナをほぼ直接動かしているため動作が軽快(X Window などGUIではなくCUI環境のためOSが軽い)
  • ラズパイのようなシングルボードコンピュータにほぼ対応していおり同じ環境が簡単につくれる
  • balena Cloud上でコードデプロイするためネット環境さえあればどこでも遠隔操作が簡単に可能
  • balena Cloud上でデバイスの状態をGUIで監視、操作するため複数のデバイスを誰でも簡単に管理操作ができる。
  • つまりIoT環境がとても簡単に構築できるということ。

balenaOSでできること

ラズパイでBluetoothレシーバを構築したように他にも様々なプロジェクトを構築できる。

・WEBフレーム
 YouTubeやGoogleフォトに保存した画像等をディスプレイに表示する。"balena DASH"というプロジェクトコードを利用する。
30分でつくれると書いてある。。
https://www.balena.io/blog/make-a-web-frame-with-raspberry-pi-in-30-minutes/
image.png

・エアーモニター
 室内環境をセンサーを用いて監視できるようにする。"balena Sense"というプロジェクトコードを利用する。
image.png

この他たくさん構築出来るようなのでbalena blogを参照してほしい。
https://www.balena.io/blog/

今回構築したラズパイBluetoothレシーバの詳細

構築方法しか書かなかったためここでコードについて少し記述する。
balana Soundのコード(Github)
https://github.com/balenalabs/balena-sound/

Bluetoothについてのコードを見てみる。
https://github.com/balenalabs/balena-sound/blob/master/bluetooth-audio/Dockerfile.template
image.png
RUN install_packages の行をみると alsa-utils bluealsa bluez python-project python-dbus python-gpiozero mplayerを利用していることがわかる。
ラズパイで一般的にraspbian上でレシーバー化するにはbluezを使うのだが、balena Soundもやはりbluezを利用していた。
raspberianでコマンドをそれぞれ打ってインストールしてやるより簡単ではあるが、ほぼ環境は同じと言えよう。

次にAirplayのコードを見てみる。
https://github.com/balenalabs/balena-sound/blob/master/airplay/Dockerfile.template
image.png
これもラズパイで一般的にAirplayを利用する際に使われるshairport-syncが使われている。

さらにSpotifyConnectのコード。
https://github.com/balenalabs/balena-sound/blob/master/spotify/Dockerfile.template
image.png
どうやら"raspotify"が使われているらしい。
raspbianでも構築可能。(もともとそっち用)
https://dtcooper.github.io/raspotify/

言わずもがなであるがraspbianで構築した方法とほぼ一緒だった。

まとめ

今回は以前の投稿の詳細として追記した。raspbianでも同じような環境を作れると思うがbalenaOSでとても簡単にできることがより一層理解できたと思う。

ツイッターでシェア
みんなに共有、忘れないようにメモ

かすみん@Crieit出張版

かすみん暇あれば開発用 Qiita出張版。一部の記事を載せてます。 Qiitaが落ちたとき用のためで

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

関連記事

コメント