2011年3月4日金曜日

GPSロガー

GPSロガーとは?
3次元位置計測情報を取得し、記録する装置。
取得した情報は地図上に表示されたりする。

製作理由はですね、
・第一種普通免許の取得
・春休み(暇)
・技術の向上
こんなところです。

物作るのに理由なんてありません。アマは。


とどのつまりクルマで走った場所をgooglemap上に記録したかった。
そんな理由なんです。
余談ですけどトド肉を今日食べました。


そんなこんなでプロジェクトスタート。

まずはじめにするべきはフォーマットの確認。
どうやらGPSの位置情報はNMEA-0183で表現されるようです。
$GPGGA,104549.04,2447.2038,N,12100.4990,E,1,06,01.7,00078.8,M,0016.3,M,,*5C
$GPGLL,2447.2073,N,12100.5022,E,104548.04,A,A*65
$GPGSA,A,3,26,21,,,09,17,,,,,,,10.8,02.1,10.6*07
$GPGSV,2,1,08,26,50,016,40,09,50,173,39,21,43,316,38,17,41,144,42*7C
$GPGSV,2,2,08,29,38,029,37,10,27,082,32,18,22,309,24,24,09,145,*7B
$GPRMC,104549.04,A,2447.2038,N,12100.4990,E,016.0,221.0,250304,003.3,W,A*22
$GPVTG,221.0,T,224.3,M,016.0,N,0029.6,K,A*1F
$GPZDA,104548.04,25,03,2004,,*6C

こんな感じのデータ内容らしいです。
実機持ってないのが痛いところですけど
これをベースにプログラム組んでいきたいと思います。

まず、あまりマイコンに負担をかけたくないので2ステップでの予定です。
データの取得と記録→
NMEA-0183形式をGooglemapのXML(KML)形式へ→
Googlemapに位置情報を投稿
こんな感じの2ステップです。


現在2011年3月4日では、
・C言語ベース
・AVRマイコン(atmega88p)を使って情報をSDカードに記録してPCでKMLに
・GPSデータからKMLまでは自動生成であること
・シガーソケットからの給電
を目標にしています。


現在、フォーマットの確認を終えてそこからKMLへのプログラム作りです。
接続方式などは現物を入手してから考えるのでここではスルー。


上記NMEAの形式ではどうやら最上段の$GPGGA行の2要素目、
2447.2038
と、4要素目
12100.4990
が位置情報みたいです。

たぶん、付近にあるNとかEとかは
North(北緯)とEast(東経)の頭文字だと思われます。
これを取得して利用していきます。

そしてこの形式では小数点が2ケタほど右に行っているようなので、
そこを100倍か何かして
24.472038
121.004990
のような感じに変えていきます。

親切に行ごとにGPなんとか~が書かれているのでそれを利用して、

$マークが来たらその先頭の文字列はGPGGAであるかを比較する。

GPGGAだったらその行を取得(要素ごとにスペースが入っているかによって若干変わる)。

行の2要素目と4要素目を取得してKML形式に書き出し。(正確には3と5要素)


こんな感じの流れを想定しました。
KMLのフォーマットなどは次回で。


ちなみにGooglemapでマイマップを作製し、右上のバー(印刷、送信、リンクとかがあるところ)の
「GoogleEarthで表示」ってのをクリックするとKMLファイルがダウンロードできます。
当たり前ですが、このときにちゃんと線を引くなりなんなりしていないと中身を見てもすっからかんです。


そしてここからがミソ、というかそんな感じなんですけど
ここでダウンロードしたKMLは情報ファイルにリンクが張ってあるだけで、
それだけでは意味を持ちません。
なのでそのリンクを辿っていきます。

DLしたKMLをブラウザで開くとURLが見えると思うので、
それをアドレスバーにぶっこんじゃってください。
そうするともう一度KMLのダウンロードが開始されます。

ミソ、といってもやることはこれだけなんですけど
これが出来ないと位置データ自作は難しいなぁ。

やっぱり完成したものを一回見てそれをいじってみないと
どこが必要な部分かが分かんないんだよなー。

そんな感じで製作(してないけど)1日目終了。
(^-^)/~

0 件のコメント:

コメントを投稿