aptpod Tech Blog

株式会社アプトポッドのテクノロジーブログです

intdashでNMEA2000のデータを取得してみる

はじめに

aptpod Advent Calendar 2023 12月22日担当の、Automotive Pro Grの小野寺です。

弊社は CAN 計測を中心にした自動車計測の遠隔化ソリューションを提供している会社です。

自動車へデータ収集用のアプライアンスを搭載し、収集したデータをLTE経由で送信することで、計測した自動車データのクラウドへの自動保存や遠隔地からの監視・可視化を実現します。 自動車計測ソリューションについては当社のWebサイトをご覧ください。

www.aptpod.co.jp

最近、自動車だけではなく船舶(ヨットやプレジャーボート)等の海洋電子機器の通信として普及している NMEA 2000 への対応をご要望いただくことが増えてきました。

今回は、この NMEA 2000 のデータを、弊社のデータ通信ミドルウェア製品である intdash を使用して、クラウド経由で遠隔可視化してみたいと思います。

www.aptpod.co.jp

NMEA 2000とは

NMEA 2000は NMEA (National Marine ElectronicsAssociation)によってに策定された規格で、主に海洋電子機器での通信に利用されています。

www.nmea.org

GPSやGNSSなどを利用する際にNMEAというワードを聞いたことがある方もいらっしゃるかも知れませんが、 このようなところで従来利用されていた NMEA 0183 という規格を新しくしたものが NMEA 2000 です。

詳細については、下記の情報等を参照してみてください。

従来の NMEA 0183 との大きな違いとして、物理層に CAN を使用するようになったという点があります。

NMEA 2000 のデータ

データフォーマットの変更

NMEA 0183 では、センテンスと呼ばれる、固定文字列($GPGGAや$GPGLLなど)を使用したASCIIコードが使用されていました。

一方 NMEA 2000 では、PGNと呼ばれるデータフォーマットに従ってバイナリフォーマットでデータが格納されます。

物理層の変更

NMEA 0183 と異なり、NMEA 2000 ではCANを使用して通信が行われます。

CANでは、1フレームで送信できる最大サイズが8バイトなので、それ以上のデータが送られてくる場合データの受信時にひと手間必要になります。

single-packet と fast-packet

1フレームにデータが収まりきらない場合への対応として、single-packet と fast-packet という仕様が用意されています。 (multi-packet もありますが、今回は使用しないので割愛します)

それぞれ最大のデータサイズは、以下のようになっています。

  • single-packet: 8バイト
  • fast-packet: 223バイト

single-packetは、受信した1つのCANフレームで完結しますが、 fast-packetは、データが複数のCANフレームに分割されて送られてくるので、所定の手順に従って結合させる必要があります。 ただし、fast-packet での通信は、リクエスト/レスポンスなどの面倒なやり取りはなく一方的に送られてくるだけなので、データを順次処理していけば大丈夫です。

ちなみに、single-packet 、fast-packetのどちらで送られてくるかは、PGNの定義によって決まっているので、仕様書で確認する必要があります。

fast - packet の 例

以下の赤い部分のデータを結合すればOK

テスト機材を構成する

NMEA 2000 のデバイスは、 Garmin GPS 24xdGarmin ECHOMAP UHD 73sv を使用しました。

ゲートウェイコンピュータには弊社の EDGEPLANT T1 を使用し、 CANフレームを取得してゲートウェイへ中継するペリフェラルデバイスとしてさらに EDGEPLANT CAN-USB Interface を使用しました。

CAN-USB Interface が CANバスからCANフレームを取得してゲートウェイコンピュータへ中継し、 ゲートウェイコンピュータに搭載されているLTE通信機能によってクラウドへデータが送信される構成です。

構成イメージは、下図の様になります。

データを取得して可視化する

あいにく、弊社では持ち合わせの船もなく、船舶免許も保有していないので、地上で計測することにします。

トラフィックスニッファでのバイナリデータ確認

弊社のWebベースの可視化サービスで表示するとこのような表示になりました。

Edge Finderでのトラフィックの確認

  • Data Name Value列の "v1/11/xxxxxx" の "xxxxxx" の部分がCAN IDです(例:2314277376 → 9F11200のCANID)
  • Payload列が実際のデータです。8バイトのデータがsingle-packet、それ以上のサイズのものがfast-packetになります(キャプチャでは長いデータは見切れています)


使用しているのは、 intdash に付属しているトラフィックの可視化アプリケーション(Edge Finderといいます)で、クラウドを経由して伝送されているトラフィックの生のデータを確認することができるツールです。生バイナリが表示されており若干見づらいですがご容赦ください。

intdashに付属するその他のWebアプリケーションは こちら からご確認いただけます。

www.aptpod.co.jp

Webダッシュボードでの数値データ確認

さらに、より多彩な表現ができるWebダッシュボードを使用して可視化すると、以下のようになります。

Visualizerで表示

  • キャプチャでは PGN = 1F805h のデータを可視化しています
  • Longtitude, Latitudeが、日本のそれっぽい位置になっているのがわかります


こちらでは、様々な可視化パーツを使用してノーコードで簡単に可視化が行える弊社のWebダッシュボードプロダクト Visual M2M Data Visualizer を使用しています。

今回は準備時間が足りず数値のみでの可視化になってしまいましたが、Visual M2M Data Visualizer では地図上での表示やグラフ表示など様々な可視化表現が可能です。弊社のWebサイトに可視化ダッシュボードの例も掲載しておりますので、ご興味がございましたらぜひご覧ください。

Visual M2M Data Visualizer での可視化の例

www.aptpod.co.jp

おわりに

今回は、NMEA 2000のデータを取得して、クラウド経由での伝送・可視化を試してみました。 通信がCANなので、自動車向けの遠隔計測・可視化ソリューションを使用して、比較的簡単に対応することができました。

弊社は自動車の遠隔可視化を中心に事業を進めている会社ではありますが、そこから派生してロボットの遠隔可視化・遠隔操縦や、最近では船舶関連のお問い合わせもいただく様になっております。

最近では、Starlinkがサービスを開始したことで海洋上でのデータ通信環境も整いつつあるため、船舶関連の遠隔可視化などでもなにかお手伝いできればと思っております。 もしなにかデータ通信・管理やシステム構築でお困りごと・ご相談がございましたら、お気軽にお問い合わせください。

www.aptpod.co.jp

また、別のメンバーが、Starlinkの検証を行ったブログ記事も投稿していますので、もしご興味があればご覧ください。

tech.aptpod.co.jp