GPSロガーの製作                                             H20.5.25
                          GPSモニター&ロガーの製作                                kunioのHPへ戻る
     

  前回は、strawberry linuxで売られていたGPSモジュールを、使ってモニター付きのロガーを試作しました。

  今回は、秋月電子で売られているGPSレシーバモジュールキットを使ったロガーを製作しました。
  このキットは、ポジション社製GPSモジュールの他、RS232通信部品や電源用3端子レギュレータおよび
  PC用測定ソフトもついています。
  前回作成したものとの違いを中心に書きます。

  


   
ソース

回路説明
 
回路図の下側2つの枠内は、GPSレシーバモジュールキットの回路そのままで、電源・GNDとTx・Rxをコネクタとおして変換基盤(写真右上)接続し、
 それをPCとRS232Cで接続します。
 今回は、そのコネクタ部にATmega8とSDカードを接続しただけです。

  GPSモジュール
     データ出力は、
NMEA-0183 フォーマットに準拠しています。
   前回のものはGPGGA,GPGSA,GPRMC,GPGSVセンテンスまででしたが、今回のものはこれに加えGPVTG,GPZDAも出力されます。
  起動時の通信速度は、9600bpsで測地系は日本(tokyo)になっているので、Google map等で活用するためには世界標準のWGS−84
  に変更する必要があります。 ('$PSRF106,21*0F'を送信)
  時間データは、1/000S単位まであります。

  $GPGGA,023114.772,35xx.8276,N,137xx.1483,E,1,03,01.7,00779.7,M,0037.8,M,000.0,0000*41
  $GPGSA,A,2,08,02,15,,,,,,,,,,02.0,01.7,01.0*08
  $GPGSV,3,1,09,26,68,272,24,10,62,052,00,15,56,260,31,24,52,303,00*7B
  $GPGSV,3,2,09,08,35,057,31,02,33,159,43,29,20,266,00,21,11,318,00*75
  $GPGSV,3,3,09,27,11,038,00*4E
  $GPRMC,023114.772,A,35xx.8276,N,137xx.1483,E,0000.00,000.00,100508,,*3B
  $GPVTG,000.00,T,,M,0000.00,N,0000.00,K*50
  $GPZDA,023115.772,10,05,2008,,*5E



   
 CPU  ATMEGA8 4Mhz動作
 
  SDカード・ソケット
  128MBのminiSDで動作確認、カードソケットの手持ちがなかったので、余っていたminiSD用の変換アダプタをソケットとして使いました。
  コンタクト部にうまくリード線(抵抗等パーツの足)が、半田付けできるか心配でしたが半田ののりもよく、簡単にできました。

動作の概要
 GPSの初期化
  
先ほど書いたように、測地系の設定が必要なります。
  起動して、SDカードを初期化したあと、3秒後(3データ確認後)に 
'$PSRF106,21*0F' 「CR」+「LF」 を送信
  正常にコマンドが受付られたのを確認。 正常時 '
$Ack Input106.'を受信するので、簡略化して'ck'の受信確認をする。
  200文字以内に、受信できない場合は10回までリトライし、だめな場合はエラー終了。

 LED動作表示

  起動からの動き  電源on→SDカードの初期化までOKでLED点灯 (約3秒) GPS測地系設定コマンド実施→正常ならGPSデータ受信毎(1秒間隔)
              にLED点灯と消灯繰返し。
              起動時を含めエラーが発生したら、300ms間隔で
LED点滅 

  SDカードへのログ保存
  
前回と同様で3分周期で書き込み。ただし、ファイル名は日にちを加えてDDHHMMSS.LOGとしました。
  
 


感想
 
GPSモジュールは前回のものより小さいですが、精度は少しいいような気がします。  

 今回も起動時のSDの初期化を失敗でかなり悩みましたが、やっと原因がわかりました。SDカードのCS(チップセレクト信号)をマイコンのI/Oピン初期化時
 にlow(アサート)としていたため不安定になっていたでした。初歩的なミスでした。(何でも初期値は0と思い込んではだめですね^^;)
 (この件で、いろいろ勉強している中でRESET回路のプルアップ抵抗は、内部で既にあるため不要だと分かったの良かったです。)