Raspberry PiとスマホをBluetooth接続する方法を説明します。Raspberry Piの操作はPCからSSH接続で行います。
■Bluetoothペアリングする
① 事前準備
まずはBluetooth接続するのに必要なツールをインストールするため、以下を実行します。
sudo apt install bluetooth bluez blueman
次にBluetoothサービス有効化のため以下を実行します。
sudo systemctl enable bluetooth
sudo systemctl start bluetooth
② スマホをスキャンする
スマホのBluetooth接続を有効化しておき、スキャンするため以下を実行します。
bluetoothctl #Bluetooth CLIツールを起動
power on # Bluetooth電源をオンにする
agent on # エージェント(認証)をオンにする
default-agent # デフォルトエージェントに設定
scan on # 周辺デバイスのスキャンを開始
スマホが検出されると以下のように表示されます。XX:XX:XX:XX:XX:XXはスマホのMACアドレスです。
[NEW] Device XX:XX:XX:XX:XX:XX Device_Name
③ ペアリング操作をする
ペアリングするため以下コマンドを順番に実行します。
pair XX:XX:XX:XX:XX:XX
trust XX:XX:XX:XX:XX:XX
connect XX:XX:XX:XX:XX:XX
これでスマホ側のBluetooth設定で、Raspberry Piが「接続済み」または「ペアリング済み」と表示されていればOKです。
ペアリングされていたらデバイスscanをオフします。
■Bluetooth通信する
事前にスマホアプリ「Bluetooth Electronics」をインストールしておきます。
以下プログラムをラズパイ上で実行します。初めにbluetoothライブラリをインストールします。
sudo apt install python3-bluetooth
import bluetooth
server_sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM) #RFCOMM(仮想シリアルポート)プロトコルを使うソケット作成
server_sock.bind(("", 1)) #任意のローカル Bluetooth アダプター("")の ポート1 に固定
server_sock.listen(1)
client_sock, client_info = server_sock.accept() #クライアントからの接続要求を受け入れる
print(f"Accepted connection from {client_info}")
while True:
data = client_sock.recv(1024) #データを受信
print(f"Received: {data.decode('utf-8')}")
プログラムを実行するとデータ待機状態になるので、Bluetooth Electronicsを起動して以下のように操作します。


上記のSENDボタンを押すと、以下のようにラズパイがテキストデータを受信したのが分かります。

サブチャンネルあります。⇒ 何かのお役に立てればと
|