LoginSignup
3
2

More than 5 years have passed since last update.

Arduinoをいじりはじめてみたよ-その3

Posted at

1. はじめに

あいさつ

ひょんなことからArduinoを使って遊ぶことになったので
その備忘録としてまとめていこうかと。
の第三回です。
第一回
第二回

今回の内容

今回は、第二回の延長でGPSデータが有効な状態のときに、必要な情報だけ抜き出すということをやります。

参考ページ

前回とだいたいいっしょです。

2. GPSから取得するデータについて

データフォーマット

下記の例のような感じでデータが並ぶ。
先頭の文字列がIDとなってそれによってデータの形式が変わる。
\$GPGGA, \$GPGSA, \$GPGSV, \$SPRMCなど。
詳細はデータシートや参考ページをみてください。

(例)
\$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>,*<13>

データの有効性

$GPRMCの二番目の領域のデータが、Aならば有効なデータである。

位置情報

$GPGGAから取得する。

3. スケッチ(プログラム)

参考ページ3を元に作成。
githubにあげました。

説明

  • sGps.read()
  • getLine(char* buf)
    • 自作の関数
    • bufにgpsからの情報1行分を格納する。
    • sGps.read()で一文字位ずつぶち込む。
  • analyzeData(char* buf)
    • 自作の関数
    • gpsデータ1行分のbufデータを分析する
    • まず、データの有効性の確認をし、無効だったら何もしない。
    • 有効の場合、$GPGGAだった場合、時間・緯度・南北・経度・東西の情報を抜き出し、シリアルモニタに出力

動作

下記みたいな出力がされます。
VやAは有効無効の確認用のログ出力

V
V
A
Time = 084623.005 : Latitude = N - 1234.1234 : Longitude = E - 12345.1234
A
Time = 084624.006 : Latitude = N - 1234.1234 : Longitude = E - 12345.1234

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2