DroggerのGPSモジュールは、Androidアプリから簡単に動作する.
しかし,Ubuntu側と接続することが難しかった.
Bluetooth接続を行うと,すぐに切断されてしまうのである.
調べると,
使用するBluetoothプロファイルをSPPにしなけらばならないらしい.
標準ではL2CAPを優先的に利用したがる様子なので,
RFCOMMを明示的に利用し,SPPを使うことで解決した.
SPPの詳細は以下のサイトを参照のこと.
このサイトは他のプロファイルについても,とても分かりやすい.
#環境
- Ubuntu 18.04.3LTS
- DG-PRO1RWS
#Bluetooth接続
スクリプトを書いたので,こちらをクローンする.
git clone https://github.com/ousagi-sama/spp-connect-bash-for-ubuntu18.04.git
cd spp-connect-bash-for-ubuntu18.04
以下の情報を元に,接続する.
- ID : 仮想ポートのID、基本的には0でよい
- ADDRESS : 接続するデバイスアドレス
- BAUDRATE : ボーレート
なお,DG-PRO1RWSのボーレートは,230400である.
bash spp-connect.sh [ID] [ADDRESS] [BAUDRATE]
一度通信行えば.spp-connect-configにその情報が保存されるため、
次回からは、IDなどの情報を省略できる
bash spp-connect.sh
仮想デバイスは/dev/rfcomm[ID]として表示される.
接続を切断するときは、Enterで仮想デバイスが解放される.
#接続後の確認
参考程度に,接続を確認したい場合,catコマンドを利用すると楽.
cat /dev/rfcomm[ID]
#接続用Scriptの中身
git cloneしたくない人用に以下にその内容を残す.
※ただし,最新版ではない可能性があるため注意.
#!/bin/bash
#
#使い方:#
# spp-connect <[id] [address] [baudrate]>#
if [ $# -eq 3 ];then
id=$1; address=$2; baudrate=$3
echo "$id $address $baudrate" > .spp-connect-config
elif [ $# -eq 0 ];then
if [ ! -e ".spp-connect-config" ];then
echo ".spp-connect-config is not found."
exit 1
fi
set $(cat .spp-connect-config)
id=${1}; address=${2}; baudrate=${3}
else
text=$(cat $0 | grep "^#.*#$")
echo -e "\033[33m${text//#}\033[32m"
exit 1
fi
# 仮想ポートの作成
sudo rfcomm bind $id $address
sudo chmod 777 /dev/rfcomm$id
sudo stty -F /dev/rfcomm$id $baudrate cs8
read -p "Press [Enter] key to resume."
# 仮想ポートでの解除
sudo rfcomm release $id
#参考