Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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