秋月電子で売られていたGPSモジュール(GPS-52D)を購入してみました.サイクリングの際に気軽に持ち運べるように,このモジュールを使ったGPSロガーを作成しました.
回路図(PDF)
AVR(ATtiny2313)を使い,GPSモジュールからのデータを読み込んでフラッシュメモリに記録します.フラッシュメモリとしては,余っていた8MBのスマートメディアを使いました.ソケット等は利用せず直接端子にハンダ付けしています.不要な外装ははずして中身のチップだけを取り出しました.スマートメディアのフォーマットは無視して独自のフォーマットで書き込みを行っているため,このスマートメディアは後から他の機器では使えなくなるので注意が必要です.
操作を行うためのプッシュスイッチを1つ設けて,下記のとおり電源ON時のスイッチの状態により動作モードを決定し,その後のスイッチの操作でデータのPCへの転送やメモリの消去を行うようにしました.
このGPSモジュールからはNMEA-0183形式でいくつかのデータが出力されますが,GGAセンテンスのみを記録することにしました.このモジュールから送られてくるGGAセンテンスは合計で87バイトありますが(CRLFを含む),そのうちの冗長なデータは削除して24バイトに圧縮して記録しています(カンマや常に同じ記号が入るフィールドを取り除いて,さらにほとんどのデータがASCII文字の数字であり下位4ビットしか必要でないため,上位4bitを捨てて2バイト分のデータをまとめて1バイトにしています).
スマートメディアはバイト単位ではなくページ単位で読み書きすることになっており,1ページは528バイトから構成されますが(512バイト+誤り検出・訂正符号用の冗長部16バイト),GGAセンテンス1行が24バイトなので,1ページ中にちょうど22個のデータが入ることになります.8MBのスマートメディアは(不良ブロックがなければ)16x1024ページを持つので,1秒ごとに記録した場合100時間ほど記録できることになります.
メモリへの書き込みはページ単位で行うので,1秒ごとに記録する場合,実際にメモリに書き込まれるのは22秒おきとなり,電源を切るとまだメモリに書いていないバッファ上のデータは失われます.
電源が入りLogger modeであると認識されると,まずフラッシュメモリ中の未使用領域の開始位置を探して,そこからデータを追記していきます.
フラッシュメモリへの書き込みは1ページ=528バイト単位で行われるため,本来は書き込みを行うまでのデータをバッファリングしておく必要がありますが,ATtiny2313はRAMが128バイトしかありません.幸い今回使用したスマートメディアはCE don't careというものに対応しており,データの転送途中であっても自由にチップのCE端子をdisableにしてスタンバイモードにできるので,スマートメディア内の528バイトのバッファを利用して逐次的にスマートメディアにデータを転送するようにしています.
PCへのデータ転送はステレオミニジャックを使いRS-232CのTTLレベルで出力しているため,別途レベル変換を行う必要があります.
GPSモジュールの動作電圧は3.1~3.6Vで,使用したスマートメディアも3.3V用です.電源は,Li-Po等を使い直接必要な電圧を供給するのが効率がよさそうですが,どこでも入手可能な単三電池2本を使うことにしました.小型で安価なDC/DCコンバータICであるHT7733Aを使っています.動作確認用にLEDを付けてありますが,ロギング中はメモリへの書き込みの瞬間だけ光るのであまり電力は消費しないはずです.
電源スイッチはあると便利かもしれませんが,スペースに余裕がなかったのと,利用場面から考えてあまりON/OFFする必要はないと考え,省略しました.
GPSモジュールは,説明書に書かれているとおり銅テープでGND層を作っています.バックアップ電池はスペースが無かったため省略しました.
ケースは,テイシンのTB-59Bを使いました.電池ボックスがピッタリ収まりますが,フタの出っ張りを削らないと電池と干渉します.
このGPSロガーを携帯して,大阪から奈良公園へ自転車で行ってきました.
走行したルートは暗越奈良街道という,難波宮と平城宮を最短距離で結んでいたという歴史のある道です.この日は奈良で正倉院展を見てきました.
ロギングしたデータは,TeraTermを使ってパソコンに保存しました.
カシミール3Dを使ってランドサット衛星画像の上に経路を表示させたものが下の図です.
基本的にうまく動作しているようですが,(1)電源を入れて家を出てから20分程度の間衛星が捕捉できていない,(2)途中から実際に移動した位置と記録された位置が異なっていたりおかしな座標が記録されている(上の地図でJR奈良駅の手前付近から.実際は真東に直進している),という問題がありました.原因は今のところ不明です.
他にも,使ってみていくつか気になる点がありました: