みかんのゆるふわ技術ブログ

Raspberry PiやIoT関係のことを書き残していきます

Raspberry PiでBluetoothスピーカーを鳴らす

以前の記事で、Raspberry Piのヘッドホンジャックからスピーカーを鳴らしてみました。

www.mikan-tech.net

今回はBluetoothスピーカーを鳴らしてみましょう🎶

ペアリングが必要なので、若干手順が複雑です。 実は私はLinuxオーディオには詳しくないので、こちらの記事を参考にさせていただきました。

この記事の通りにすれば、ちゃんと鳴りました! 単なるやってみた記事で恐縮ですが、早速紹介していきます。

使用するスピーカー

Amazon.co.jpで買ったEWA A106というスピーカーを使ってみました。

2,000円くらいで買える、バッテリー内蔵の超小型スピーカーです☺️ 小さいのでRaspberry Piにピッタリですね。

事前準備

必要なパッケージのインストール

Bluetoothスピーカーを使うには、PulseAudioPulseAudioのBluetoothスピーカーのモジュールを使うのが手っ取り早いみたいです。 早速インストールしましょう。

$ sudo apt-get install pulseaudio pulseaudio-module-bluetooth

これらをインストールしないと、Bluetoothスピーカーにペアリングもできませんでした🙅‍♀️

PulseAudioの設定

続いて、PulseAudioの設定をしておきましょう。/etc/pulse/default.paを編集します。

$ sudo vim /etc/pulse/default.pa

ファイルの最後にでも、次の行を追加してください。

# automatically switch to newly-connected devices
load-module module-switch-on-connect

権限の追加

sudoなしでBluetoothが制御できるようにするために、piユーザーをbluetoothグループに入れます。 bleutoothグループにはBluetoothデバイス操作の許可が与えられています。

$ sudo usermod -G bluetooth -a pi
$ sudo reboot

反映には再起動が必要なので、ここで再起動します。

ペアリング

再起動したら、いよいよペアリングします。

PulseAudioの起動

Bluetoothスピーカーをペアリングするには、pulseaudioが起動していなければなりません。 次のコマンドで起動できます。

$ pulseaudio --start

スキャン

ここから先は、bluetoothctlコマンドを起動して操作します。

$ bluetoothctl

起動すると、[blueooth] #というプロンプトが出てきて、コマンドを受け付けます。 次のコマンドで、スキャンができます。(Bluetoothスピーカーの場合は大抵agent onは不要かも)

[bluetooth]# power on
[bluetooth]# agent on
[bluetooth]# scan on
(略)
[NEW] Device 30:21:B0:70:83:33 EWA Audio A106

大量のデバイスが見つかりましたが、目的のスピーカーを見つけられました。 30:21:B0:70:83:33がMACアドレスのようです。

ペアリング

引き続きbluetoothctlコマンドの中で操作します。 先ほど見つかったスピーカーのMACアドレスにpairコマンドでペアリングします。

[bluetooth]# pair 30:21:B0:70:83:33
Attempting to pair with 30:21:B0:70:83:33
[CHG] Device 30:21:B0:70:83:33 Connected: yes
[CHG] Device 30:21:B0:70:83:33 UUIDs: 00001108-0000-1000-8000-00805f9b34fb
[CHG] Device 30:21:B0:70:83:33 UUIDs: 0000110b-0000-1000-8000-00805f9b34fb
[CHG] Device 30:21:B0:70:83:33 UUIDs: 0000110c-0000-1000-8000-00805f9b34fb
[CHG] Device 30:21:B0:70:83:33 UUIDs: 0000110e-0000-1000-8000-00805f9b34fb
[CHG] Device 30:21:B0:70:83:33 UUIDs: 0000111e-0000-1000-8000-00805f9b34fb
[CHG] Device 30:21:B0:70:83:33 ServicesResolved: yes
[CHG] Device 30:21:B0:70:83:33 Paired: yes
Pairing successful

Pairing successfulと出れば成功です。ついでにtrustコマンドでTrustリストに登録しておきます。

[bluetooth]# trust 30:21:B0:70:83:33
[CHG] Device 30:21:B0:70:83:33 Trusted: yes
Changing 30:21:B0:70:83:33 trust succeeded

最後に、ペアリングしたスピーカーに接続します。connectコマンドを使います。

[bluetooth]# connect 30:21:B0:70:83:33
Attempting to connect to 30:21:B0:70:83:33
[CHG] Device 30:21:B0:70:83:33 Connected: yes
Connection successful
[CHG] Device 30:21:B0:70:83:33 ServicesResolved: yes
[EWA Audio A106]# 

スピーカーから接続音が鳴り、接続ができました。プロンプトも[EWA Audio A106]#に変わりました。

[EWA Audio A106]# quit

quitコマンドでbleutoothctlを終了してbashに戻りましょう。

動作チェック

音を鳴らしてみましょう。

$ aplay /usr/share/sounds/alsa/Front_Center.wav

Bluetoothスピーカーから音が鳴れば成功です👌

音量調整、Pythonからの再生などは、過去の記事で紹介している方法と同じです。

www.mikan-tech.net