2014年5月27日火曜日

ArduinoでGPSロガーを作ってみた。

とりあえずArduinoでSDが扱えるようになったのでGPSロガーを作ってみた。
せっかくLCDもあるのでGPSの情報をLCDに表示できるタイプ。
GPSのNMEAパーサーもライブラリとしてあったので結構簡単に。

今回使用したライブラリはmicroSDHCの読み書きにSD.h、NMEAパーサーとしてTinyGPS++.h、LCD表示にPCD8544.h、あとGPSはUTC時間なのでローカルタイムに変換するためにTime.hを使用した。

ついでにU-bloxのGPSを使用したので自動でボーレートと位置情報の更新レートを変更するようにした
まぁまたまた海外サイトを参考にさせてもらったわけだが(SDのファイル名設定の部分とかそのまま頂きました…


ボードはArduino Pro miniの16Mhzタイプを3.3Vで動かしてます…
まぁ動いてるからよしとしよう・・・
なのでSDカードもGPSも直結してますw

NMEAパーサーにTinyGPS++を使用したのでGPGSAセンテンスを解釈できる。
これでGPSのFIXステータスが確認できます!(NOFIX、2DFIX、3DFIX)

GPSのUTC時間からローカル時間への変換は一旦time_t型に突っ込んでからローカル時間に変換してます…
ついでにSDカードに書き込むときにもこの時間を利用してファイルの更新日時つけてます。
なんか無駄な所ありそう?

とりあえずブレッドボード上ではうまく動いてる模様。
意外と車移動では5Hz更新(一秒間に5回)がいい感じ。
ログはNMEA to KMZ file converterを使わせてもらってGoogle Earthで見てます。
数種類ためしたけどこのツールが一番使いやすい気がする。

あとは小さくまとめないとな。バッテリーは何を使おうか…

2 件のコメント:

  1. U-bloxのGPS受信ユニットをaliexpressで購入したのでhttp://arduinodev.com/mtk3329-10hz-gps-module-with-arduino/のWEBページを参考にしてトライしてみたのですがエラーが出て上手く行きません。製作の記事が2012年だったのでarduino IDEのVer0.022を別のPCにインストールしコンパイルやボードへの書き込みは正常に出来ましたが、「 WAITING GPS」の表示が出たままです。
    その後、自分なりに色々と試して見ましたが未だに成功していません。
    よろしければ製作されたGPSロガーのスケッチを提供して頂けないでしょうか?
    お手数おかけしますが、よろしくお願いします。

    返信削除
    返信
    1. コメントありがとうございます。
      そしてコメントに気が付かずすいません。
      スケッチの方、探してみたのですが結構前の作品ということもあって手元にありませんでした…すいません。
      ちなみにU-bloxのGPSユニットによってはボーレートなどの設定が保存されないのもあるので(私のもそうでした)、起動時に設定コマンドを送ってやる必要があるモデルもあります。

      削除