Who is さくふわめろんぱん

さくふわめろんぱん(@skfwMelonpan)はロボットとか人工知能に興味があるパンです。
自分のために調べたことがみんなの役に立ったらいいなぁ。

2014年9月10日水曜日

[GPSRCC] RaspberryPiでBluetooth QZPOD編

QZPODというGPS/QZSS受信器が届きました。
うれしくてとりあえず動作確認したかったのでRaspberryPiと通信させました。

というわけでそれまでの記録をば。

【Bluetoothドングルの設定から接続】
・使うもの
  aitendoで安かったBuletoothドングル
  OSはRaspbianでやりました(wifiの設定が楽!)

・下準備
bluetoothを使うためのプログラムをインストール
pi@raspberrypi ~ $ sudo apt-get install bluetooth bluez-utils blueman
bluemanはGUI用らしいからコマンドラインで使うならなくてもいいって。
だーっとインストールされる2,3分かかったかも。
途中Y/nを2回くらい聞かれた気がする。

・接続はおもったより簡単!
1.ドングル認識されてるか確認
pi@raspberrypi ~ $ lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. 
Bus 001 Device 004: ID 2019:ab2a PLANEX GW-USNano2 802.11n Wireless Adapter [Realtek RTL8188CUS]
Bus 001 Device 005: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
4番目はwifiアダプタで、5番目にbluetoothなんちゃらってのが出てきた。これだ。

2.bluetooth受信してるか確認
pi@raspberrypi ~ $ hcitool scan
Scanning ...
00:1B:DC:0F:45:2B QZPOD0040
まぁこんな感じで出てくると。周りにキーボードとか検出される機器があるとここにでてくる。
ちなみに下準備のインストールができてないと、hcitool?そんなコマンドnot foundっておこられる。

3.接続する
さっきのアドレスをつかって接続
pi@raspberrypi ~ $ sudo bluez-simple-agent hci0 00:1B:DC:0F:45:2B
RequestPinCode (/org/bluez/2153/hci0/dev_00_1B_DC_0F_45_2B)
Enter PIN Code: 0000
正しいPINコードを入れる。そんなの聞いてなかったけど初期値でした。
正しいのを入れると
Release
New device (/org/bluez/2153/hci0/dev_00_1B_DC_0F_45_2B)
って出てくる。

ちなみに間違ってると
Creating device failed: org.bluez.Error.AuthenticationFailed: Authentication Failed
っておこられる。

4.確認
pi@raspberrypi ~ $ sudo bluez-test-device list
BC:8D:A6:71:32:21 Bluetooth Keyboard
00:1B:DC:0F:45:2B QZPOD0045
つながっておる。
これで接続は完了。次回以降は勝手に接続されるみたい。

5.補足
接続解除するには・・
pi@raspberrypi ~ $ sudo bluez-test-device remove 00:1B:DC:0F:45:2B
繋ごうとして、もう繋がっていると・・
pi@raspberrypi ~ $ sudo bluez-simple-agent hci0 00:1B:DC:0F:45:2B
Creating device failed: org.bluez.Error.AuthenticationTimeout: Authentication Timeout


【Bluetoothでシリアル通信】
なにしてるかちゃんと理解してないけど、bluetoothの接続先の1つを1つのデバイスとして認識させてるっぽい。
pi@raspberrypi ~ $ rfcomm connect hci0 00:1B:DC:0F:45:2B &
Connected /dev/rfcomm0 to 00:1B:DC:0F:45:2B on channel 1
Press CTRL-C for hangup
とする。




pi@raspberrypi ~ $ ls -la /dev/rfcomm0
crw-rw---T 1 root dialout 216, 0 Sep  8 03:14 /dev/rfcomm0
で/dev/rfcomm0というデバイスとして使えるようになったっぽい。

teraTermみたいなシリアル通信用のプログラムをインストール。
ここではminicomっての使ったけど、何がいいのかは知らない。とりあえず入れてみた。
pi@raspberrypi ~ $ sudo aptitude install minicom

さっき用意したデバイス/dev/rfcomm0に接続するには
pi@raspberrypi ~ $ minicom -D /dev/rfcomm0
を実行。
Welcome to minicom 2.6.1

OPTIONS: I18n 
Compiled on Apr 28 2012, 19:24:31.
Port /dev/rfcomm0

Press CTRL-A Z for help on special keys

と表示され...

$GPGGA,031529.00,,,,,0,00,,,,,,,*44
$GNGSA,A,1,,,,,,,,,,,,,,,*00
$GPGSV,1,1,01,01,,,18,,,,,,,,,,,,*70
$GNRMC,031529.00,V,,,,,,,080914,,,N*6B
$GNZDA,031529.00,08,09,2014,,*72
$GPGGA,031530.00,,,,,0,00,,,,,,,*4C
......
とバンバンきた。

Ctrl-A Zでヘルプって書いてあるので
終了するには、Ctrl-A Z からの Q を打鍵。おわった。

とまぁ、シリアル通信とQZPODの動作の確認はできました。
めでたしめでたし。
次はシリアル通信の結果を用いたプログラムをつくりましょう。

0 件のコメント:

コメントを投稿