LoginSignup
6
7

More than 5 years have passed since last update.

【Raspberry PI & Garmin GLO】ラズパイに Bluetooth GPSを接続するまで

Last updated at Posted at 2015-02-17

使用機材

Raspberry PI B+
raspbian: raspberrypi 3.18.7+ #755 PREEMPT Thu Feb 12 17:14:31 GMT 2015
Garmin GLO: Bluetooth GPSレシーバ
Bluetoothドングル: Elecom-Logitec LBT-UAN04C1 (Linuxだと定評あるCSR社チップセット)

準備

モジュール類を導入しましょう

apt-get install bluez bluez-utils

python ver.2でのコーディングをする向きには apt-get install python-bluez も忘れずに

コマンドラインでのGarmin GLO接続テスト

(1) hcitool scan
Garmin GLO をスキャンします。12:34:56:78:90:AB みたいなアドレスが表示されるはず。
(2) ポート接続

sudo rfcomm bind /dev/rfcomm1 12:34:56:78:90:AB 1

これで、Garmin GLO のVirtual COMポートが、/dev/rfcomm1として作成されます。ですが、GLOのbluetooth状態LEDは、ゆっくりとした点滅のままです。(ペアリングされた状態ではありません)
(3) ポートからのデータ吸出し
お手軽は方法としては

cat < /dev/rfcomm1

です。これを実行すると遅れてGLOのbluetooth状態LEDが点灯した状態(すなわちペアリング状態)となり、コンソールにNMEA出力が表示されます。終了時はctrl-cで抜けてください。

もしくは、

dd if=/dev/rfcomm1 of= ...

もOKです。

Python (ver.2)

python ver.2では、PyBluezを使用します。

sudo apt-get install python-bluez

で導入しましょう。

import bluetooth

bd_addr = "12:34:56:78:90:AB"
port = 1

sock=bluetooth.BluetoothSocket(bluetooth.RFCOMM)
sock.connect((bd_addr, port))
data=sock.recv(1024)

sock.close()
print data

この場合、sock.recv()の返す data は、str型となります。

Python3

python3では、標準のsocketモジュールを使用します。

import socket

bd_addr = "12:34:56:78:90:AB"
port = 1

sock = socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM, socket.BTPROTO_RFCOMM)
sock.connect((bd_addr, port))
data = sock.recv(1024)

sock.close()

dataReadable = data.decode('utf-8')
print(dataReadable)

この場合、sock.recv()の返す data は、bytes型となります。ですので、decode()にてstrへ変換しましょう。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7