GPSロガー


GPS受信モジュール程度の価格でロガー完成品が手に入るため賞味期限切れの感はありますが、自作ロガーを製作しました。記憶媒体のSDカードにNMEA-0183フォーマットをそのまま出力するのではなく、KMLフォーマットを出力します 。 そのままgoogle earthにトレースを表示できます。

主要な部品は秋月で入手しました。ただしLCDは消費電流が僅少な、ストロベリーリナックスで扱っているI2Cコントロールのものを使用しています。SDカードはネットで色々調べ、FATを実装しました。ただし、FAT16のみ の対応で、ルートディレクトリ以外のファイル作成はサポートしてません。さらに、writeしかしていないので、readは実装してません。SDHC未対応です。未対応だらけです。

本機はあくまで作ることを目的としたもので、実用性としては安価な完成品がありますのでこれ以上の発展は無いと思います。備忘録をかねて公開します。プリント基板はライブラリが間違っており手直しが必要で すので公開はご勘弁を。SDカードソケットと液晶のライブラリが間違っていました。

SDカードへの書き込みが512バイト単位となるため、RAMに余裕があるPIC18F2550を使用しました。初めて18Fシリーズを使用しましたが、16Fの強化版と考えればよいため、16Fシリーズに慣れていれば戸惑うところは何もないと思います。ただしPICKit2では 書けるもののICDできませんでした。(PICKIT3ではできました。)

シリアル通信はSDカード(SPI)、液晶(I2C)、GPS(UART)の3つ必要となりますが、18F2550はシリアル通信を1CHしか持たないため、最もデータ量の多いSPIをハードでやり、遅くても良い液晶のI2C、UARTはソフトでやっています。

使用したGPSモジュールは電源投入時WGS-84測位系にならないため、PICからコマンドを投げています。そのためシリアル送信も実装が必要でした。GPSはスーパーキャパシタでバックアップしていますが、2日ほどでクリアされてしまいます。バックアップはリチウムの方がよろしい。

今回C言語で実装しました。さすがに生産性がアセンブラと全然違います。HITEC-Cを使用していますが、現在のソース量になるとFree版だとビルドできないと思います。45日限定のPRO版でビルドしています。 ここだけの話ですが、VMwareにPRO版をインストール、スナップショットをとり、期限切れになったらスナップまで戻すことで長期間使用しました。

HITECにせよ、CCS-Cにせよクセがあります。HITECの場合、auto変数を多量に使用するとコンパイルエラーとなります。サイズの大きいbuffer等はこのためグローバルにおいています。CCS-Cは会社で使用しましたが、HITECよりクセが強く、ANSI準拠でない部分も多くみられ、生粋のCプログラマには不評だと思います。ただし、標準で多くの機能がライブラリ化されている点は魅力です。もし、どちらか選ぶとしたら、クセが少ないHITECを選ぶでしょう。

回路図(液晶ピンNo間違いあります)

PICソース

製作メモ(メモですので、間違い、未完成、中途半端な部分多くあります。)


[戻る]