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モジュールに送信
ボーレートの場合、チェックサムと設定が正しければ、文字化けして望みの速度に落ち着いてくれます。
チェックサムの間違いは単純に受け付けられないだけですが、
設定が望みのものかどうかはよく確認しよう。
その他設定
------------------------------------------------------------------
参考
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
標準では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
$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