にやにや製作:GoogleMapとGPSを自転車で使う

お気楽・ごくらく ( ・∀・)ニヤニヤ
     
製作 かるかる

GPS garminプロトコルで試す

2005年09月21日 18時49分42秒 | Hacks
garminプロトコルのパケットフォーマットを調べたので、さっそく送信してみる
条件は9600bps 8bit start:1 stop:1 nonparity
NMEAはテキスト(ASCII)だが、garminプロトコルはバイナリ送受信

GPSの準備
出力をgarminにする

端末からデータを送信
資料4.1.1.パケットフォーマットで規定してある書式でデータを送ってみた。
端末でデータの送受信の方法を試してマイコンに実装。

送ったデータ
コマンド(16進)			-->応答(16進)
 1  2  3  4  5  6  7		 1  2  3  4  5  6  7  8
10,00,00,00,00,10,03	-->	10,15,02,00,00,E9,10,03
10,01,00,00,00,10,03	-->	10,15,02,01,00,E8,10,03

適当にデータをGPSに送っても何も返して来なかったが、
上記のようにある程度書式にしたがったデータだと返事が返ってくる。

送ったデータ
1Byte目:0x10(DLE)
1Byte目:0x00(パケットID)
2Byte目:0x00(パケットデータサイズ)
3Byte目:0x00(パケットデータ)
4Byte目:0x00(チェックサム)
5Byte目:0x10(DLE)
6Byte目:0x03(ETX)

帰って来たデータ
0Byte目:0x10(DLE)
1Byte目:0x15(パケットID)
2Byte目:0x02(パケットデータサイズ)
3Byte目:0x00(パケットデータ1)
4Byte目:0x00(パケットデータ2)
5Byte目:0xE9(チェックサム)
6Byte目:0x10(DLE)
7Byte目:0x03(ETX)

で解析、GPSへ送ったデータは、意味を持たないフォーマットのガワだけ。
どんな処理を求めているかを示す2バイト目のパケットIDには何も入れていない。
パケットサイズは0、チェックサムも計算されていない(適当)。
こんな感じで送ってみたところ

帰って来たデータの
2バイト目に0x15:NAK
原典(iop_spec.pdf)には
If a NAK packet is received, the data packet was not received correctly and should be sent again.
となっていて、正確なデータが受信できてないと再送を要求してるっぽい
送信データにチェックサムが要求されていることから、これに引っかかったと思われる。

端末からは適当なデータを送ったが、GPSからの返事にはチェックサムが付いてた。
原典には1Byte目~パケット全部のデータを加算して2の補数を
使うとか書いてあるようなので、帰って来たデータを対象に調べてみた。
2's complement of the sum of all bytes from byte 1 to byte n-4

5Byte目の0xE9が出てこれば確認できる
2's complement
0x15+0x02+0x00+0x00=0x17を反転すると0xE8、これに+1して0xE9同じ値が取得できた。
というわけで、前回のデータにまともなチェックサムを付けて再送信。
0x10,0x0A,0x01,0x31,0xC4,0x10,0x03
で帰って来た値は、
0x10,0x06,0x02,0x0A,0x00,0xEE,0x10,0x03

ACKは返ってきたけど、予想した奴とちがうな~

NMEA0183で読んでみた

2005年09月20日 20時17分18秒 | Hacks
参考にしたページはCruise Maniac

GPSから出力されたデータ
$GPGGA,143124,35xx.xx98,N,136xx.xx00,E,1,03,1.9,-1.5,M,35.5,M,,*6F
$GPRMC,143124,A,35xx.xx98,N,136xx.xx00,E,0.0,0.0,120905,6.9,W,A*05


GGAセンテンス
143124 測位時刻(UTC)(JST+9)23:31:24
35xx.xx98,N 北緯
136xx.xx00,E 東経
1 GPSのクオリティ; 0 = 受信不能, 1 = 単独測位,2 = DGPS
03 受信衛星数
1.9 HDOP
-1.5,M 平均海水面からのアンテナ高度(m)
35.5,M WGS-84楕円体から平均海水面の高度差(m)
GPSデータのエイジ(秒)
DGPS基準局のID
*6F チェックサム


RMCセンテンス
143124:測位時刻(UTC)(JST+9) 23:31:24
A:ステータス;A = 有効,V = 無効
35xx.xx98,N:緯度
136xx.xx00,E:経度
0.0:対地速度(ノット)(1,852m:1海里)
0.0:進行方向(度,真北)
120905:日付(UTC) 12日09月05年
6.9W:地磁気の偏角 6.9度西
A:モード;A = 単独測位,D = DGPS,N = 無効
*05チェックサム


上記のように当てはめることが出来た。
いろいろあるが必要なのは、経度緯度と高さくらい。
GPSによるとあたしん家は -1.5Mの水の下か35.5Mの高層住宅に住んでいることになります。

---------
GPSの準備
0.出力をNMEA-OUTにする

マイコンの処理
1.行頭の'$'を待つ
GGA(Global Positioning System Fix Data)
RMC(RMC - Recommended Minimum Specific GNSS Data)センテンスのみを取得
2.文字数チェック GGAの場合 1行64~74文字の場合のみ有効データとする。
3.1行のデータを構造体に入れてそれぞれパラメータをチェック
4.データを計算用に整形
5.GPSから吸い出したウエィポイントと突き合わせ

eTrekからの出力形式をNMEAにすることで、2秒毎にGGAやらRMCが先頭に付いたテキストデータが
出力されることを確認した。
これをマイコンに解釈させればええと見ている。
ただ、NMEAではGPSのモードを変更したり、中に格納されているデータを取り出したりはできない
このへんはGarminプロトコルでの通信が必要、こちらはうまくいってない。
どんな風にデータを送るのか送受信のタイミングも不明。

ということでGarminプロトコルの通信方法を探る必要がでてきた。


eTrekにアラーム

2005年09月15日 20時32分37秒 | Hacks
数年前に買った廉価型のGPS(eTrek)は地図表示ができない、
そのためトラックの採取目的にしか使っていなかった。
最近、ウエイポイントにマーク(位置登録)していた目的地に近づくにつれて
方角と目的地までの距離が短くなる様子をリアルタイムで見て、ええじゃんと再評価
この時まで今までリアルタイムで目的地の方角や距離が変化するところを見たことが無かった。

地図が無いぶん他の機能をマイコンで追加してやろうかと調べてみると
携帯ゲーム機のワンダースワン(以下WS)で高機能に実現されているのでやる意味なし。
WWでGarmin

そんなんで、バックパックに入れておいてもわかるように
マークしておいた地点に近づくとアラームがなるだけの物を作ろうと思う。

妄想仕様:Garmin社GPSのeTrekに登録されたポイントに近づくとアラームを鳴らす。

GPSデータ取得 NMEA-0183

2005年09月13日 19時19分44秒 | Hacks
GPSのデータがハイパーターミナルで読めるそうで、早速やってみた。
資料にあったように約1秒間隔でシリアルデータを受信ができた。
この分なら結構速く作れてしまう?

--------
GGA - Global Positioning System Fix Data
$GPGGA,143110,3XXX.4497,N,13XXX.7911,E,1,03,1.9,-1.5,M,35.5,M,,*67
$GPGGA,143112,3XXX.4497,N,13XXX.7910,E,1,03,1.9,-1.5,M,35.5,M,,*64
$GPGGA,143114,3XXX.4496,N,13XXX.7909,E,1,03,1.9,-1.5,M,35.5,M,,*6B

[NMEA-0183]
非同期全二重
転送速度4800bps
データ長8ビット、ASCII
スタートビット1、ストップビット1
パリティなし
フロー制御なし

質問メールを意訳して掲載

2005年09月06日 18時52分59秒 | Weblog
デシベル換算表 9/6
Q.書込みマイコンを注文したいのですが、デシベルをどう指定したら良いのかわかりません。
例をください。

A.デシベルの表を用意しました。db.csv
CSV形式になっているので、表計算ソフトで見てください。

例えば公開している「PGA2310-8pin.HEX」は -60dB~3dB の設定となっている

表から
-60dBは 0.001、3dBは1.14なので、0.001倍(1/1000)~1.14倍を127段階で切り替える
ということになる、但しボリューム絞り切りは 0(-96dB)となるので

0と0.001~1.14倍となる

--------------------
Q.基板を自分で作っています。ボリュームだけの機能が欲しいのですが、
デジタルボリュームPGA231xシリーズ制御マイコン「DigiVol-8Pin」
PGA2310-8pin.HEXはミュート回路(リレーやリセットIC)の部分が無くても動きますか?

A.ミュート回路を作らなくても動作します。
最低限PGA2310とPIC12F675マイコンの接続だけで使えます。

---------------------
Q.キットに入っているチップ部品(TC7S08)のハンダ付けに失敗したようです。
どうしましょう

A.代わりのものを郵便で送ります(無料)。但し一度だけね。
必ずハンダ吸取り線を用意してください。

---------------------
Q.アナログ電源を+5Vで使えば、デジタル電源としても共用できますか?

A.試験では動きました。音質は比べてないのでどうともいえません。
ただアナログ電源電圧が低いと、入力によっては簡単にクリップしてしまうので
電源には余裕を持たせてください。

----------------------
Q1.すでにPGA2310を持っています。PGA2310だけ無いモデルを用意してくれませんか?

A.PGA2310だけ個人で用意するタイプなら
1キット5500円でOKです。