技適なBluetooth GNSS/GPSレ
シーバーをRaspberryPiで作り
たい2
KenichiroMATOHARA(matoken)
<matoken@kagolug.org>
鹿児島Linux勉強会 -第08回- 20141220(土)
Kenichiro MATOHARA
●
@matoken
●
http://matoken.org/
●
興味
●
Linux
●
FLOSS
●
OpenSteetMap
●
電子工作
●
:
© OpenStreetMapへの協力者
関東時代
●
主に小江戸らぐに参加(
東京エリアDebian勉強会/YLUG…)
http://koedolug.org/
●
主にLinux関連の勉強会に参加
鹿児島に帰ってきて
●
あちこちの勉強会に参加
●
Linux関連の勉強会が見当たらない…
「鹿児島らぐ(Kagoshima Linux User
Group)」を立ち上げ
http://kagolug.org/
(大阪に引っ越した小江戸らぐ参加者が
東海道らぐを作ったりしてたし)
鹿児島らぐ
●
今のところ鹿児島Linux勉強会を月1回開催
●
今回第08回で0回目から数えて9回目の開催
●
鹿児島Linux勉強会
●
Linux読書会
●
Linux関連の発表
●
その他…
●
これからの予定
●
オープンソースカンファレンス2015大分出展
http://www.ospn.jp/osc2015-oita/
●
OSMもそろそろやりたい
2015年頭に入門向けイベントを…
最近参加したイベント
●
オープンソースカンファレンス2014福岡
●
鹿児島らぐ展示&LT
●
オープンソールアンカンファレンス鹿児島(鹿児島Li
nux勉強会 -第07回-)
●
OSC忘年会
●
State of the Map Japan 2014 in Tokyo | D
ecember 13th
これからのイベント
●
鹿児島Linux勉強会 -第09回-
●
1/23(金)あたり?
●
オープンソースカンファレンス2015大分
●
2/7(土)
精度の高いGPSモジュールを利用
して位置測定をしたい
●
OpenStreetMap Foundation Japanの
miurahrさんの小江戸らぐ9月のオフな集まり発
表資料を見る
●
"技適な Bluetooth GNSS/GPS レシーバー
の作成と活用”
●
面白そう!
●
BluethoothSPPモジュールは持ってないけれど
RaspberryPiやUSB Bluethoothモジュールは
あるのでこれで真似したい(技適通ってるし!)
●
ついでに単体でログ取りとかもするようにしたい
準天頂測量衛星シ
ステムとかが使えたら街中でも安定
するかも…
用意したもの
●
RaspberryPi B+(A/B/A+でもok)
●
USB Bluethoothドングル
●
5種類くらい持っていてこれまでに使えなかった物はないが,購入
前に型番で検索して利用できるか確認したほうが無難
●
国内で売られているものは技適通っているはず
●
OSはRaspberryPi標準のRasbianを利用(DebianWheezyベー
ス)
●
TTLが出てるGPSモジュール(GT-723F 秋月電子で2,800)
●
GNSS非対応だがとりあえず手持ちのもので検証
●
Android端末にSPP接続が出来るBluetooth Terminalを導入
(デバッグ用)
●
Android端末にBluetoothGPS を使えるようにする
Bluetooth GPSを導入
RasbianへのBluetooth関連ソフト
ウェアの導入
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install bluetooth bluez
デーモンが起動しているのを確認
$ /etc/init.d/bluetooth status
bluetooth is running.
Bluetooth デバイスの確認
$ hcitool dev
Devices:
hci0 E0:91:53:77:E8:99
$ hciconfig -a
hci0: Type: BR/EDR Bus: USB
BD Address: E0:91:53:77:E8:99 ACL MTU: 310:10 SCO MTU: 64:8
UP RUNNING PSCAN
RX bytes:10030 acl:8 sco:0 events:191 errors:0
TX bytes:1702 acl:8 sco:0 commands:111 errors:0
Features: 0xff 0xff 0x8f 0xfe 0x9b 0xbf 0x59 0x87
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF PARK
Link mode: SLAVE ACCEPT
Name: 'raspberrypi-0'
Class: 0x420100
Service Classes: Networking, Telephony
Device Class: Computer, Uncategorized
HCI Version: 3.0 (0x5) Revision: 0x1aa1
LMP Version: 3.0 (0x5) Subversion: 0x1aa1
Manufacturer: Cambridge Silicon Radio (10)
周りのデバイス検索
$ hcitool scan
Scanning ...
78:DD:08:B0:1F:37 x201s-0
98:91:20:21:55:78 Bluetooth
Keyboard
●
※周りのデバイスは検索可能にしておく
ペアリングが可能なようにモードを変
更してペアリング
●
ペアリング可能なようにモード変更
$ sudo hciconfig hci0 piscan
●
ペアリング(ペアリングのキーはこの場合4835)
$ sudo bluetooth-agent 4835
Confirmation request of 396777 for device
/org/bluez/2150/hci0/dev_70_F9_27_71_7
4_5B
※ペア先のデバイスは検出可能にしておく
●
周りから見えないようにモードを戻しておく
$ sudo hciconfig hci0 noscan
プロトコル確認
●
SPPが利用できるのを確認する
$ sdptool browse local
●
SPPが登録されていなかったら以下のようにして
登録する
$ sdptool add --channel=22 SP
SPPで接続して通信を試みる
$ sudo rfcomm listen /dev/rfcomm0 22
Waiting for connection on channel 22
Connection from 70:F9:27:71:74:5B to
/dev/rfcomm0
Press CTRL-C for hangup
●
これで /dev/rfcomm0 を通してSPP通信が出
来る
実際に通信してみる
●
受信したり
$ cat /dev/rfcomm0
test
hello
hello pi
●
送信したり
$ echo "hello android" > /dev/rfcomm0
GPSモジュールを利用できるようにす
る
●
RaspberryPiのGPIOのシリアルはシステムコン
ソールに割り当てられているのでこれを解除
●
GPSモジュールとRaspberryPiの接続
●
GPSモジュールから送られてきた情報を取得
RaspberryPiのシステムコンソール
割り当て解除
●
/boot/cmdline.txt を以下のように編集(ここは要らないか
も?)
編集前
dwc_otg.lpm_enable=0 console=ttyAMA0,115200
console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4
elevator=deadline rootwait
編集後
dwc_otg.lpm_enable=0 console=tty1
root=/dev/mmcblk0p2 rootfstype=ext4
elevator=deadline rootwait
●
/etc/inittab の以下の行をコメントアウト若しくは削除
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
ついでにグループ追加して再起動し
て反映
●
pi ユーザでGPSモジュールが利用できるように
dialout GROUP に pi USER を追加
●
$ sudo addgroup pi dialout
The user `pi' is already a member of
`dialout'.
$ id
uid=1000(pi) gid=1000(pi)
groups=1000(pi),20(dialout)
$ sudo reboot
GPSモジュールとRaspberryPiの接
続
●
GPSモジュールの配線
RaspberryPiの配線
●配線
GT-723F P1(GND) <---> Pi P1-06(GND)
GT-723F P2(PWR) <---> Pi P1-01(3.3V)
GT-723F P5(TTL-In) <---> Pi P14(TX)
GT-723F P6(TTL-Out) <---> Pi P1-15(RX)
VCC/GND辺りの接続間違えると大
抵即壊れるので注意orz
GPSモジュールから送られてきた情
報を取得
●
GPIOのRX/TXはRaspberryPi上では/dev/ttyAMA0に割り当てられ
ている
●
gpscatコマンド(python-gps pkg)で内容を取得する
$ sudo apt-get install python-gps
$ gpscat -s 9600 /dev/ttyAMA0
$GPRMC,120834.000,V,0000.0000,N,00000.0000,E,000.0,00
0.0,280606,,,N*70
$GPGGA,120834.000,0000.0000,N,00000.0000,E,0,00,0.0,0.
0,M,0.0,M,,0000*61
$GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30
$GPGSV,2,1,07,02,63,062,,26,59,190,,05,55,342,,10,30,043,*
7B
$GPGSV,2,2,07,29,24,314,,15,23,212,,12,07,232,*46
:
GPSモジュールの情報をBluetooth
でAndroidに送ってみる
●
AndroidとRaspberryPiがペアリング出来ている状
態で
$ gpscat /dev/ttyAMA0 > /dev/rfcomm0
●
Andorid側はBluetooth
Terminalを利用
AndroidでGPS情報として表示
●
Bluetooth GPSを利用
https://play.google.com/store/apps/detai
ls?id=googoo.android.btgps
●
「Enabke Mock GPS Provider」にチェックを付
けることで他のAndroidアプリでもGPS情報が利
用
可能に
内蔵GPSをoffにしてももちろん動く
Androidのアプリを幾つか試す
●
OSMAnd+ OK
●
GoogleMapOK
●
OSMTracker for Android NG
●
MyTrack NG(データ変換で行ける?)
●
Ingress NG
OSMAnd+
●
GPS利用OK
●
ログ取りもOK
●
GPSステータスの処理はでき
ていない?
NG
いけるかも?
●
My Tracks
●
GPSデータを変化すればいける
かも?
●
Polarとか書いてあるから心拍計と
かのヘルスセンサ用かも?
これから
●
Bluethooth自動接続
●
DiskのRO化(電源断に対処するため)
●
GNSS GPS利用
●
MSAS(MTSAT-1R_ひまわり6号/MTSAT-2_ひまわ
り7号)/QZSS(QZS-1_みちびき)対応が欲しい
●
GPSコマンド利用
●
RTK(Real Time Kinematic)
http://www.rtklib.com/
●
cm単位の精度に!
参考URL
●
"技適な Bluetooth GNSS/GPS レシーバーの作成と活用"
https://dl.dropboxusercontent.com/u/90779460/Bl
uetooth_GNSS_receiver_201409.pdf
●
"Article 37573 at 14/11/24 23:54:47 From: "Hiroshi
Miura(@ACM)" Subject: [KoedoLUG:37573] Re: 前々
回の発表資料「GNSSレシーバの制作」"
http://hatochan.dyndns.org/koedolug/ml/201411.
month/37573.html
●
"ja/BluetoothUser - Debian Wiki"
https://wiki.debian.org/ja/BluetoothUser
●
"Gentoo Linux ドキュメント -- Gentoo Linux Bluetoothガ
イド"
https://www.gentoo.org/doc/ja/bluetooth-guide.xml

技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2