ELM Home Page

2007. 5. 1
更新: 2012. 7. 29

GPSデータ・ロガー


GPSレシーバが手に入ったので、出力される測位データを記録するデータ・ロガーを製作してみました。測位データは、GPSレシーバからNMEA-0183フォーマットでリアルタイムに出力されるので、流れてくるセンテンスの全てまたは必要なものを何らかの記憶媒体に記録してやれば良いことになります。記録が終了したら、そのデータを各種GPSユーティリティで処理することにより、Google Mapsと連携して軌跡を表示するなど、いろいろ面白い応用が可能になります。このレポートでは、車載専用として設計してみました。ポケット・サイズのGPSロガーについてもこちらのレポートで解説しています。

ハードウェア

inside GPS logger
回路図

製作したGPSデータ・ロガーの内部と回路図を右に示します。トラッキング・ログの記録媒体には、手軽に使えるMMC/SDCを使用します。最初のレシーバ・モジュールで使っていた外部アンテナ・コネクタはもう使っていません。

車載対応電源回路

自動車電装機器は一般産業機器とは少し違った注意が必要になります。温度範囲や振動といった環境面については言うに及びませんが、意外に知られていないのが電源に対する要求です。それは、電源回路にとって自動車は痛い電源ソースであるということです。自動車の電源電圧は12V車/24V車においてそれぞれ公称12/24Vですが、実際にはその電圧に安定していることはありません。エンジンが回っているときは常にバッテリに充電が行われているため、定常電圧は14/28V程度となっています。また、クランキング(エンジン始動)の間は、スタータの大電流によりバッテリ電圧が瞬間的に数V程度までディップすることがあります。主電源としてACCラインを使用する場合、ACCラインには他の負荷も並列につながっているため、ACCスイッチOFFは単なる電源OFFではなく、電源入力がGNDにショートすると考えなければなりません。例えば、三端子レギュレータなら、Vi<Voとなり一発で死亡するかも知れません。このため、ダイオードをレギュレータICに逆並列に入れて放電電流をバイパスするか、入力に直列に挿入して電荷が瞬時に抜かれるのを防ぐ必要があります。設置時のミスなどによる電源逆接続にも耐えなければならないのは言うまでもありません。

load dump

さらに、ロードダンプ・サージといって、配線の故障により右の図に示すような高電圧サージ(12V仕様におけるテスト波形)が発生することがあり、これに耐えなければなりません。サージ吸収素子(D1)には36V/5Wのツェナ・ダイオードを使用しています。この設計では、12/24V車共用としていますが、12V車専用とするなら、D1を36V→18V、C1の耐圧を35V→16Vとすると良いでしょう。

このプロジェクトでは、手軽に設置するため電源をACCのみから取ることとします。電源スイッチは設けず、ACCスイッチのON/OFFをもって記録開始/終了とします。入力部には、次に説明する電源OFF時の記録終了処理のため、容量の大きな入力キャパシタ(C1)を使用しています。もちろん、痛い電源で壊れないだけではなく、電源が不安定になっても誤動作を起こさず、電源が復帰したら速やかに動作を再開できる必要がありますが、これはハードウェアだけではなく、ソフトウェア上の考慮も必要になってきます。

MMC/SDCの電源制御

短時間の電源の遮断があると、Vccが0Vに落ちきる前に電源が回復することになります。このような場合、MMC/SDカードのリセット機能がうまく働かず、コマンドを受け付けない状態になることがあります。もちろん、起きやすいカードとそうでないカードがありますが、一旦その状態になってしまうと、再度正しい電源シーケンスを適用する以外に回復の方法がありません。このため、どのようなときもMMC/SDカードを確実に初期化するには、スロットの電源を制御する必要があります。

ソフトウェア

ACC電源が投入されると、まずMMC/SDカードの初期化を行います。メモリ・カードが挿入されていないときは挿入されるのを待ちます。ファイル・システムの認識に成功したら、ショート・ビープを1回鳴らし、GPSレシーバの電源を投入し、必要ならGPSレシーバの初期設定を行います。

GPSレシーバから送られてくるセンテンスを監視し、やがて測位が確立して有効なRMCセンテンスが来たらログの記録を開始します。ログ・ファイル名はRMCセンテンスから取得したUTC時間をローカル時間に変換して YYMMDD.LOG のフォーマットで作成されます。既に同じ名前のファイルがある場合、それに追記で記録されます。記録開始時にはショート・ビープを2回鳴らします。

赤色LEDはMMC/SDカードのアクセス表示、緑色LEDは動作ステータス(消灯:MMC/SDカード未初期化、点滅:測位データ無効、点灯:測位データ有効)となります。

記録終了は電源入力の遮断をもって行うため、電源OFFは動作状態にかかわらず非同期に発生します。このため、電源OFFを検出したら、キャパシタ(C1)にエネルギーが残っているうちに記録中のファイルを速やかに閉じないとせっかく記録したログの内容が失われてしまいます。電源OFFの検出は割り込み処理で入力電圧を常にモニタすることにより行います。入力電圧が9V以下の状態が100msの間継続したら電源OFFと認識し、GPSモジュールの電源を切るとともに、ファイル・クローズ処理を行っています。記録中は3分毎にf_sync()を実行して、万一のクローズ処理失敗でも記録開始からのログが全て失われる危険を防止しています。終了処理が全て正常に行われたら、ロング・ビープで知らせ、電源の回復を待ちます。

リソース

Sign