2010/06/06

GPSユニット EM-406Aのコマンド

EM406AはSiRF starⅢを搭載したモジュール。 前記事で比較したうちの一つ。

標準では4800bpsだが、ボーレートの変更、NMEAセンテンスの追加(VTG,GLL)に必要な設定をまとめた。
なお、データシート通りにコマンドを送りたいとき、チェックサムだけ計算するのめんどいね というときは、NMEAモニタを使うと、コマンド送信機能で コマンドの後ろ *__ に自動で付加してくれる。

 大抵のGPSユニットは、データシートにコマンドの説明があるので、探して読めば書いてあるけど、任意のコマンドを打ちたいときは、チェックサムを計算しなくてはならない。

チェックサムの導出
NMEAセンテンスは、チェックサム計算を含んでいる。
計算方法をまとめてみた。

------------------------------------------------------------------
プロトコルに従って設定 例:ボーレートを9600bpsにしたいとき
$PSRF100,1,9600,8,1,0*0D

0D がChecksum

 PSRF100,1,9600,8,1,0     // $ , * を除いた文字列
 ↓
ASCIコードに変換 = 50,53,52,46,31,30,30,2c, 31,2c, 39,36,30,30,2c, 38,2c, 31,2c, 30
 ↓  
各HEXで順にXORをとってゆく(OSの電卓を関数電卓モードでいけた)
ひたすらXOR  二度打ち、間違い注意
  = D

 でてきたチェックサムを2桁に直す

$PSRF100,1,9600,8,1,0*0D
 ↓
$PSRF100,1,9600,8,1,0*0D

GPSモジュールに送信
ボーレートの場合、チェックサムと設定が正しければ、文字化けして望みの速度に落ち着いてくれます。


チェックサムの間違いは単純に受け付けられないだけですが、

設定が望みのものかどうかはよく確認しよう。

その他設定


4800bps にしたいとき
$PSRF100,1,4800,8,1,0*0E
VTG ON
$PSRF103,05,00,01,01*20
VTG OFF
$PSRF103,05,00,00,01*21

GLL ON
$PSRF103,01,00,01,01*24

GLL OFF
$PSRF103,01,00,00,01*25

------------------------------------------------------------------
参考


コマンドその他

ASCIコード10進/ HEX / 該当文字

44 0x2c ,

48 0x30 0
49 0x31 1
50 0x32 2
51 0x33 3
52 0x34 4
53 0x35 5
54 0x36 6
55 0x37 7
56 0x38 8
57 0x39 9

65 0x41 A
66 0x42 B
67 0x43 C
68 0x44 D
69 0x45 E
70 0x46 F
71 0x47 G
72 0x48 H
73 0x49 I
74 0x4a J
75 0x4b K
76 0x4c L
77 0x4d M
78 0x4e N
79 0x4f O
80 0x50 P
81 0x51 Q
82 0x52 R
83 0x53 S
84 0x54 T
85 0x55 U
86 0x56 V
87 0x57 W
88 0x58 X
89 0x59 Y
90 0x5a Z

------------------------------------------------------------------

他のユニットもだいたいこんな感じでいけるかも。 おっと、設定は自己責任で。

※EM406Aの場合、数時間~数日たてば内蔵バックアップ電池(EDLC?)が揮発して元に戻るようです。 戻ってしまうので問題がある場合もあるようで・・・。

参考 EM406Aのコマンドリファレンス
http://elmicro.com/files/sparkfun/em406a_ug.pdf

追記: GPS-NMEAモニタのコマンド送付欄に、チェックサムの自動付加機能が… あれ、この記事の意味は・・・。