こんにちは、ソリューションアーキテクトの松永(taketo)です。
IoTプロジェクトの中でも、特に話題となるのが位置情報系のGNSS(GPS)デバイスです(以下、GNSSデバイスで統一します)。特に産業用に利用されるGNSSデバイスの中でも、NMEAフォーマットの仕様を持つデバイスの可視化方法について詳しくご紹介します。
検証では弊社のパートナー企業のラントロニクス様にもご協力頂き、BOLERO40とFOX3を用いて検証していきます。
それでは早速、どのようにGNSSデバイスの可視化ができるのか見ていきましょう。
GNSSとは?
GNSS(Global Navigation Satellite System)とは米国のGPS、日本の準天頂衛星(QZSS、通称 “みちびき”)、ロシアのGLONASS、欧州連合(EU)のGalileo等の衛星測位システムの総称を指します。
「GPS(Global Positioning System)」という言葉はみなさま聞いたことがあるとおもいますが、これはアメリカが運用している衛星観測システムのことを指しており、GNSSの一つです。GPSの衛星は地球の周りを常に飛んでおりますが、常に日本の上空にあるとは限りません。そのため、観測地点によっては5-10m程度の誤差がうまれることが知られています。この課題を解決するために日本の準天頂衛星「みちびき」が誕生し、誤差1m以下で測位可能となりました。
このように各国や地域が独自の測位システムを構築しており、その総称がGNSSです。
ラントロニクス社のGNSSデバイス「Lantronix BOLERO40/FOX3」
GNSSデバイスとしてラントロニクス社のGPSトラッカー/テレマティクス端末デバイスBOLERO40シリーズとFOX3シリーズをご紹介します。GNSSのうち、GPS、 Galileo、 GLONASS、 BeiDou(中国のGNSS)に対応しており、利用する地域を考慮して利用する測位システムを設定で変更もできます。クラウド側へのデータ送信は後でご紹介するNMEAフォーマットで送信されます。2つのシリーズの違いについて詳細はラントロニクス製品ページをご覧いただければと思いますが、簡単にご紹介致します。
まず大きな違いは、対応通信方式です。FOX3シリーズはBluetooth・Cellular・Wi-Fiに対応しており、BOLELO40シリーズはCellularにのみ対応しています。
次に、物理インターフェース仕様が異なります。FOX3はI2C、CAN-BUS、RS-232Cなど様々な物理インタフェースを持っています。対して、BOLELO40シリーズはRS-232Cインタフェースに対応しております。また、BOLERO40は、IP68の防塵・防水性能を備えています。
本ブログでは位置情報を取得する目的としてご紹介致しますが、これらの製品をご利用いただくと、ゲートウェイデバイスとしてご利用可能です。例えばRS232インタフェースでお客様のデバイスに接続しデータの取得やコマンドの送信といった操作をクラウドから実行するということも可能ですのでラントロニクス様やソラコムまでご相談頂ければ幸いです。
Borelo40シリーズ | FOX3シリーズ |
NMEAとは?
NMEA(NMEA 0183)とは米国海洋電子機器協会(National Marine Electronics Association、 NMEA)が制定した通信プロトコルです。GNSS機器で現在も広く使われているフォーマットです。
具体的には $
で始まり、\r\n
(改行コード)で終わる行志向フォーマットです。
一般的なNMEAのサンプル
$GPRMC,073545.000,V,3542.3459,N,13946.6537,E,,,250122,,*17
FOX3から送信されたNMEAデータサンプル
$<sfal.pos _speed='0.00'>*43 $GPRMC,073545.000,V,3542.3459,N,13946.6537,E,,,250122,,*17 $<end> $<sfal.event _batt='3.695' _temp='30' _power='12.070' Ignition='1'>*4D $GPRMC,073545.000,V,3542.3459,N,13946.6537,E,,,250122,,*17 $<end>
次に注目頂きたいのは緯度・経度の情報です。
普段私たちが利用している緯度・軽度はddd.dddd度
形式で全て度数で表されます。d
は度数を表しています。しかし、NMEAの場合は、dddmm.mmmm
形式となっており度数とm
(分)を用いて表記されています。1度は60分ですので、例えば13946.6537
(dddmm.mmmm形式)という値は、139.77756
(≒139+46.6537/60)度という値と等しくなります。
今回利用するダッシュボード作成・共有サービス「SORACOM Lagoon」や、GoogleMapといったアプリケーションで位置情報を可視化するためには、この変換を実施する必要があることにご注意ください。
検証アーキテクチャ
検証のアーキテクチャをご紹介します。今回は可視化アプリケーションとして、SORACOM Lagoonを利用します。また、上でも述べた通り、NMEAフォーマットの変換が必要になるため、インラインプロセッシング「SORACOM Orbit」を利用して、データ変換をします。FOX3とBOLERO40からは、データ送信をUnified Endpointに向けています。
*FOX3とBOLERO40のメインアクセスポイント(データの送信間隔は20秒)
$PFAL,CNF.Set,TCP.CLIENT.CONNECT=1,uni.soracom.io,23080 $PFAL,CNF.Set,TCP.CLIENT.ALTERNATIVE=1,uni.soracom.io,23080
作業手順
お待たせ致しました、それでは早速検証を実施していきましょう!
1. デバイス設定
SIM挿入
SORACOMのSIMをこちらの通りセットしてください。サイズは標準SIMです。
Borelo Sim挿入 | FOX3 Sim挿入 |
設置
GPS情報を取得する場合は、下記の通りデバイスの面を上空に向けるように配置してください。給電してからGPS情報の取得までに、5分程度かかることがあります。また今回、FOX3の付属品であるGPSセンサーを接続し、自動車のダッシュボードに機器を設置しました。
Borelo 表面を空へ向ける | FOX3 表面を空へ向ける |
FOX3用 GPSセンサー(付属品)*本体のみでGPS情報が補足できない場合に利用可能です。 |
2. SORACOM Orbit設定
Soraletの作成と登録
手順「WASM モジュールのアップロード」に従い、ビルド済みのWebAssembly「soralet-optimized.wasm」をアップロードしてください。作成後のSRNをメモしてください。
WASMのソースコードはGitHub: soracom-labs/lantronix-orbit-parserに公開しております。
3.SORACOM GroupとSIM設定
グループ作成と設定
手順「グループを作成する」に従い、グループを作成し、以下の通りに設定してください。
カテゴリ | 設定項目 | 設定値 |
SORACOM Harvest Data設定 | On/Off | On |
SORACOM Orbit設定 | On/Off | On |
CODE SRN | 選択画面から「3-b.Soraletの作成と登録」で作成したSoraletを選択してください。バージョンは「$LATEST」にしてください。 | |
DIRECTION Upling | 有効 | |
DIRECTION Downlink | 無効 | |
メタデータ On/Off | Off | |
簡易位置測位昨日 On/Off | Off | |
Unified Endpoint設定 | フォーマット | Auto(デフォルト) |
SIMのグループ設定
手順「IoT SIM、LoRaWAN デバイス、Sigfox デバイスが所属するグループを切り替える」に従い、デバイスに挿入したSIMに、作成したグループを設定してください。
データ確認
GNSSデバイスへ給電し、データが送信・処理されていることを確認します。
デバイスを電源に接続し、手順「データを可視化する」に従って送信されたデータを確認してください。
確認観点 | 正常な状態の例 |
SIMの状態が「使用中(オンライン)」であること | |
「データ」が以下の通りであることJson形式であること{}になっていないこと。 |
4.SORACOM Lagoonの設定
取得したデータの可視化は下のように可視化することができます。詳細な、ダッシュボードの作成方法は「SORACOM Lagoon」をご確認ください。今回はFOX3とBOLELO40の両者のGPS精度も同じく高精度で取得できることが確認できました。
項目 | 設定値 | 備考 |
1.データ取得範囲 | 任意に選択してください。 | 可視化するデータの範囲です。 |
2.データ更新間隔 | 任意に選択してください。 | 可視化するデータを更新する頻度です。 |
3.Visualization | Soracom Map Panel | |
4.可視化項目 | Metrix:Air/Simの名前/MapLatitude: gprmc.latitudeLongitude: gprmc.longitude | |
5.Map Options | MapVisual Option Max Circle Size:10Quary A Option Show Line:On |
5.データ変換について補足
FOX3 1台のデータ通信量は、本検証にてデータ送信間隔は20秒周期と設定し約73MB/月(upload: 82.27kB KB/hour、 download:29.17 KB/hour)でした。今回GNSSデータのみ送信しておりますが、送信するデータによりデータ通信量は変化することにはご注意ください。
OrbitによりJSONフォーマットへ変換したデータはこちらのようになっております。
{ "obdPos":{ "speed":0.0 }, "gprmc":{ "v0":"GPRMC", "v1":"082546.000", "v2":"V", "v3":"3542.3459", "v4":"N", "v5":"13946.6537", "v6":"E", "v7":"", "v8":"", "v9":"250122", "v10":"", "v11":"*1A", "latitude": 35.705765, "longitude": 139.777562, }, "obdEvent":{ "batt":3.976, "temp":32.0, "power":12.029, "ignition":1.0 } }
まとめ
最後まで読んで頂き有難う御座いました。いかがだったでしょうか?
GNSSデバイスは非常にお引き合いいただくことが多い製品ですが、NMEAの変換など扱うには少し考慮が必要な点がありますね。
本ブログでは、SORACOM Lagoonにより可視化を行いましたが、 ラントロニクス社よりConsole Flowというサービスも展開されております。FOX3シリーズやBOLELO40シリーズといったIoTデバイスの情報を可視化、また細かい権限管理が可能ですので他の企業へ閲覧権限を付与したいなどエンタープライズ企業の要望にもお応えできる製品となっております。こちらも機会がありましたらご紹介したいと思います。今すぐにでも使ってみたいという方は、是非お問合せください。
― ソラコム松永 (taketo)