Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

GPSにも使われるNMEAフォーマットについて

今回はNMEAフォーマットについて。
元は船舶情報向けの規格なんだそうですが、Maker的にはGPSの規格として著名です。
構造としては、ブロードキャスト配信のようです。

実際のところ

たとえば、秋月のGPS受信キットですと

$GPZDA,024316.000,14.01,2016,,*55

ですとか

$GPGGA,024317.000,3541.9435,N,13946.1690,E,1,4,3,4...

といったパケットが返ってきます。

これだけだと、GPGGA等々が何のことだか全く分かりませんが……有志が解読したパケット構造のリストがあります。
www.gpsinformation.org

ZDAは時刻、GGAは位置情報である事がわかります。

基本的に「関連情報全部送るから、ユーザの方で勝手に取捨選択してくれ」というアプローチのようです。

Wikipediaによると、パケット自体の構造は以下の通り

  • 全部ASCII文字
  • シリアル通信
  • それぞれのメッセージの開始文字はドル記号。
  • 次の5文字はトーカ(2文字)とメッセージ(3文字)を識別。
  • 全ての後続するデータフィールドはコンマ区切り。
  • データが利用できない場合、対応するフィールドはナル文字を入れる(例えば"123,,456"では第二フィールドは利用不可)。
  • 最終データフィールド文字が直後に続く最初の文字はアスタリスク
  • アスタリスクは16進数で表す2桁のチェックサムが直後に続く。チェックサムは$と*間の全文字の排他的論理和。公式な仕様によれば、チェックサムはほとんどのデータセンテンスにとっては任意的なものであるが、RMARMBRMC(とくに)では強制的である。
  • はメッセージの終了。

ポートさえ開いていれば、あとはシェルコマンドでもソートできそうな内容ですね。

参考もと

NMEA 0183 - Wikipedia