RaspberryPiにbluetooth機器を接続してpythonで通信させようとしたけど,うまくいかなかった記録.
とりあえず動くまではいきましたが,まだ不安定な部分があるので日々加筆します.
環境
PC:aRaspberry Pi 3
OS:Ubuntu MATE 16.04
手順
デバイスのスキャン
まずはデバイスが認識されているかスキャンしておく
デバイス名の前についてるのはMACアドレス
scan
$ sudo hcitool scan
[sudo] password for pi:
Scanning ...
00:07:80:3C:xx:xx device1
90:CD:B6:37:xx:xx device2
一応確認のためping飛ばしとく
ping
$ sudo l2ping -c 2 00:07:80:3C:8E:F2
Ping: 00:07:80:3C:xx:xx from B8:27:EB:E3:yy:yy (data size 44) ...
4 bytes from 00:07:80:3C:xx:xx id 0 time 70.46ms
4 bytes from 00:07:80:3C:xx:xx id 1 time 64.60ms
2 sent, 2 received, 0% loss
シリアルポートにバインドする
/dev/rfcommX にバインドすることで,bluetoothで仮想シリアル通信できるようになる.
bind
$ sudo rfcomm bind 1 00:07:80:3C:xx:xx
番号は0から何番かまで使える.
自動設定する
rfcommは再起動すると設定が失われる.
そのため,再起動しても設定を継続したい場合はrfcomm.confを作成する必要がある.
/etc/bluetooth/rfcomm.conf
rfcomm0 {
# Automatically bind the device at startup
bind yes;
# Bluetooth address of the device
device 00:07:80:3C:xx:xx;
# RFCOMM channel for the connection
channel 1;
# Description of the connection
comment "IMU config";
}
この方法うまくいかなかったんで誰か教えてください
bluetoothctlからペアリング
bluetoothctlがない人はインストールしてください.
install
# $ sudo apt install bluez bluez-utils
#起動
$ bluetoothctl
対話モードで設定
config
# コントローラ起動
$ power on
#デバイスのMACアドレスを検索
$ devices
# デバイスがないときはスキャン
$ scan on
# ペアリング
$ pair [MAC]
これで接続できる.(はず)