GPSモニター&ロガーの製作                                  H19.6.30
GPSログデータ活用 kunioのHPへ戻る
     

  Strawberry Linux
GPSモジュールを販売していたのでそれを使って、遊んでみることにしました。
  GPSは位置(緯度経度)情報の他に、時刻(リアルタイムクロック)や高度、方位とかも得られるようなので
 それらの情報をLCDに表示し、SDカードにログとして残すことに挑戦しました。(SDへの書き込みは初挑戦)
  ログデータをgoogle map等で活用すれば面白そうです。(まだやってません)
  SDカードへの書き込みは、最悪の場合元のデータを壊す恐れがありますので、自己責任でお願いします。
 

  
   回路図    ソース

主な使用部品
 GPSモジュール
  僕が購入したものは、現在売られているものとちょっと違い、電源電圧DC5V固定で価格は8千円でした。
  これ単体で、電源を接続しPCのRS232Cに繋げばハイパーターミナル等でデータを見ることが出来ます。
    データ出力は、NMEA-0183 フォーマットでTTLレベルとRS232Cレベルの2種類

 CPU ATMEGA8 4Mhz動作
  SDにデータを書こうとすると、SRAM容量1024バイトでは無理かなと思いましたが、何とかできました。

 LCD 20x4 80文字表示
  表示させたいデータ量が多かったので、20x4のものを秋月から買いました。
  (電源の1と2番ピンの極性が16x2のもと逆なので注意)

 SDカード
  64MBと128MBで動作確認

 74LVC245 3.3V←→5.0V電圧レベル変換
  SDカードが3.3V電源で、その他5Vなのレベル変換のために使用

動作の概要
 
表示処理(データ受信間隔の1秒毎)
  @GPSのTTL出力をSRAMに取り込み(最大で約400バイト/1回)
  A@のデータのうち必要なデータを抽出加工し、LCDに表示
   表示データ
    1行目 日付・時刻 (UTCのため日本時間とするには+9時間する必要がある。今回手抜きで省略^^;)
    2行目 N 北緯 xx度xx.xxxx分
    3行目 E 東経xxx度xx.xxxx分     n 受信衛星数
    4行目 h 平均海面からの高度(m)  d 進行方向°(北基準)

  SDカードへのログ保存
  
3分周期で保存することとしました。
  問題は、SRAMをどう使うかです。ログで約400バイト、FAT用・ディレクトリエントリ用・データ用で各1セクタ分512バイト
  本来ほしいところです。(他にも作業領域やスタックとしてもいるし)
  そこで、ログとデータ用は同じ内容であること、FATとディレクトリエントリとデータはシリースに書けばいいので手順を工夫
  して512バイトのみ使うことにしました。
   書き込み手順(概略、詳細はFATについて3参照)
    @1セクタのFAT領域を読み込み、空き(0x0000)のFAT(クラスターNo)を検索、そのFATに0xFFFFを書き込み
      約400バイトのため次のクラスター不要、FATの2組目にも書き込みのみ実施
    A1セクタのルートディレクトリエントリ領域を読み込み、空きエントリを検索、そのエントリに@のクラスタNoとダミーファイル名
      等を書き込み
    B上記の表示処理実施する。SRAMのログデータをクラスタNoに対応したセクタに書き込む
    CAのエントリセクタを再度読み込み、ファイル名(時刻:HHMMSS.LOG)および書き込み日時データおよびファイルサイズを
      設定し再書き込み。
    
    ログデータ例  フォーマットはNMEA-0183参照  個人情報保護のため北緯・東経の分の1桁(?)は消してあります(^^)
     $GPGGA,080339,35?1.8360,N,137?5.1323,E,1,08,01.2,00715.4,M,036.6,M,,*44
     $GPGSA,A,3,01,06,07,14,16,22,30,31,,,,,02.4,01.2,02.0*06
     $GPGSV,3,1,09,01,55,312,46,06,50,111,48,07,51,128,50,14,74,171,47*70
     $GPGSV,3,2,09,16,24,236,43,20,08,315,00,22,11,197,39,30,43,044,37*78
     $GPGSV,3,3,09,31,51,315,47,,,,,,,,,,,,*42
     $GPRMC,080339,A,35?1.8360,N,137?5.1323,E,000.0,171.9,230607,,,A*77


感想
 
起動から数分、衛星を捕らえるまでに時間がかかります。RTCも内臓バッテリーが放電状態だと起動から2−3分しないと表示
 されません。

 
GPSの精度はかなり高く、位置情報は数メータ以内の誤差です。
 SDへのデータの書き込みコマンド、FATファイルの作成は初めてでしたが、意外とすんなりできました。
 起動時にSDの初期化を失敗してしまうことがありますが、原因不明です。それ以外は問題なく動いています。