GPSロガー ファームウェア
少し以前にGPSロガーを作っていまして、基板データを公開したりしましたが、そういえばファームウェアなどのソフトウェア要素を何ひとつ載せていなかったな、と思い今回の記事を書いています。また最近のアクセス履歴を見てみると、『GPSロガー』で検索される方がかなり多いようなので、自作GPSロガーを考えている方の参考に成なれば幸いです。
作ったファームウェアですが、以前の記事を見ていただければわかるようにSilicon LaboratoriesのC8051F340というマイコン上で動作するものです。コンパイラは、このデバイス向けで無償で使えるC言語コンパイラ、sdccを利用しました。デバッカはSilicon LaboratoriesのF340開発キット(直販で99ドル、DigiKeyでも購入可)に付属のUSB接続アダプタとIDE(統合開発環境)を利用しました。IDEは純正でない無償のsdccとも連携してフルソースコードデバックが行えるので、開発時には非常に重宝しました。
ファームウェアは下の図のような構造になっています。
基本的にu-blox製LEA-4T GPS受信機が出力してきた航法データ(位置や速度)や生データ(Carrier PhaseやPsuedo Range)をそのまま保存する、という機能をこのファームウェアで実現しています。LEA-4Tは比較的安い受信機ながら航法データを最大4Hz、生データを最大10Hzで出力できるので、とてもお勧めです。
保存されるデータは別に開発しているオートパイロットシステム Super Sylphideとの関連で32byte固定長の特殊フォーマットになっています。といってもその32byteの先頭に'G'の文字がつき、残り31byteはu-bloxのubxフォーマットでそのままデータが入っているだけなので、後ろの31byteを全て引っ付ければ、u-bloxのログビューア u-centerで内容を見ることができます。
SDカードへの書込みは標準的なFAT16フォーマットを利用して行っています。この部分はELMのChaNさんが開発・無償提供されている、汎用ファイルシステム・モジュール Tiny-FatFsをC8051マイコンに合うように取り込むことで解決しました。ChaNさんには感謝の意をここで表したいと思います。
なお、その他の部分はSilicon Laboratoriesによるリファレンスデザイン USB-MSD-RDをかなり改造することで対応しました。
さらにUSBの部分は記録したログがPCから直接みれるように、PCに接続した際にディスクとして見れるMass Storage Device(MSD)という規格に準拠させてあります。同時に、GPS受信機の出力をPCにダイレクトに転送するために、USB上に擬似シリアルポートでを作るCommunication Device Class(CDC)という規格にも準拠させてあるのですが、WindowsのCDCが思い通りの動作をしてくれないので、こちらの機能は不完全な状態にあります。
これらのファームウェアを公開することにします。ライセンスについてはreadme.txtにあるとおり、Creative Commonsの表示-非営利-継承に準拠するものとします。利用させていただいているTiny-FatFsは2007年11月現在、ChaNさんによって無制限での利用が認められていますが、再配布などする際はこちらのライセンスにも注意を払っていただきたく思います。
コメント
コメントする
- 匿名でのコメントは受け付けておりません。
- お名前(ハンドル名可)とメールアドレスは必ず入力してください。
- メールアドレスを表示されたくないときはURLも必ず記入してください。
- コメント欄でHTMLタグは使用できません。
- コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
- コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。
- 投稿ボタンを押してエラーがでなければ、投稿は成功しています。反映されるまでには少し時間がかかります。