1. はじめに
市販されているソニーセミコンダクタソリューションズ製のSpresenseにNEQTO Engineを搭載することにより、
NEQTO Consoleやクラウド環境での通信接続、物理インターフェース経由によるセンサーや機器の制御などを実現することが可能です。
今回はLTE Cat-M1を用いた環境でデモを交えた内容で説明します。
用意する環境はSpresenseメインボード、Spresense LTE 拡張ボードです。
これらは市販品ですので容易に入手が可能な環境です。

図1. Spresense メインボード

図2. Spresense LTE 拡張ボード
2. NEQTO EngineとSpresenseの設定
NEQTO Engine
PCを使用してSpresenseにNEQTO Engineの初期インストールを行います。 「はじめに」でご紹介したSpresenseメインボードとSpresense LTE 拡張ボードを図3のようにSpresense LTE 拡張ボードにSpresenseメインボードを搭載した状態にしてください。

図3. Spresense LTE拡張ボードにSpresenseメインボードを搭載した状態
以後、上記のSpresenseハードウェア構成を使用した手順で説明します。 「Spresense LTE-M用書き込みツール」から最新版をダウンロードしてください。
SpresenseにNEQTO Engineを書き込みます。以下の手順に沿って操作してください。
1. 事前にTera Term(ターミナルソフト)がインストールされたWindows 10 PCを用意してください。
2. SpresenseボードをPCに接続する前に、USBシリアルドライバーをインストールする必要があります。
「CP210x USB to serial driver for Windows 10」よりドライバをダウンロードし、インストールしてください。
SpresenseとPCは、図4のように通信用USBケーブルを使って接続します。
図4. NEQTO Engine書込み用の接続図
※ Spresense メインボードにはシリアル通信用と電源供給用として、Spresense LTE拡張ボードには電源供給用としてUSBケーブルを接続します。使用するケーブルはMicroUSBケーブルが計2本です。
3.デバイスマネージャーを開き、Spresenseが接続されているCOMポート番号を確認します。

図5. デバイスマネージャー上に表示されるCOMポート
4. ダウンロードした最新の「Spresense LTE-M用書き込みツール」(zipファイル)を解凍し、ImageBurnToolフォルダー下に移動します。
5. SpresenseにNEQTO Engineの書き込みを開始します。
ImageBurnTool_neqtoEngineToSpresense_windows.batを実行してください。
※「注意事項」を確認してから実行してください。

図6. batファイルの保管場所
6. コマンドプロンプトが立ち上がります。以降、ツールの指示に従って、進めてください。
6-1. 注意事項を確認の上、同意する場合はagreeを入力してください。

図7. agreeの入力
6-2. Spresenseが接続されているCOMポート番号を入力し、エンターキーで次に進んでください。なお、COMポートの番号は使用している環境で変わります。今回の場合は図5. のデバイスマネージャーより30です。

図8. COMポート番号入力
6-3. "Please press RESET button while holding down the Board Recovery button"というメッセージが表示されたら、Spresenseメインボードのボードリカバリボタンを押したままの状態で、リセットボタンを短押ししてください。「...」の表示が開始したら、ボードリカバリボタンをリリースして、そのままお待ちください。「...」の表示が開始されなかった場合は、一度、ボードリカバリボタンをリリースして、再度、ボタン操作を行ってください。それでも表示がない場合は、一度、USBを外して、手順3.からやり直してください。

図9. 1回目のボタン操作

図10. 操作するボタンの位置と種類
6-4. 2回目の"Please press RESET button while holding down the Board Recovery button"メッセージが表示されます。同様にボタン操作を行って、進めてください。

図11. 2回目のボタン操作
6-5. フラッシュ書き込みが完了するまで待ちます。

図12. フラッシュ書き込み中の状態
6-6. LTEモジュールのファームウェアアップデートが必要な場合、自動的にアップデートが開始されます。(Spresense LTE-Mのみ)
LTEモジュールのファームウェアアップデートにはさらに20分以上の時間を要しますので、完了まで電源を切らずにお待ちください。
6-7. 最終ステータスのSuccessが表示されるまで、お待ちください。
ツールが途中でフリーズしたり、Failure表示となった場合は、再度、手順5からやり直してください。
8. ツールが最後まで進んだら、書き込み完了です。エンターキーを入力して、コマンドプロンプトを終了してください。
なお、図13はLTEモジュールのファームウェアアップデートがない場合です。
図13. LTEモジュールのファームウェアアップデートがない場合
LTEモジュールのファームウェアアップデートがある場合は図14のような表示です。

図14. LTEモジュールのファームウェアアップデートがある場合
以上でNEQTO Engineの初期インストールは完了です。
3. サンプルコードを用いた動作
gnssオブジェクトは、GPS(GNSS)機能を提供する組込みオブジェクトです。
3秒ごとにGPS(GNSS)の測位情報を表示する内容はサンプルコードで参照してください。
NEQTO ConsoleからSpresenseにJavaScriptコードをロードし実行できます。
Scriptを動作させ、ターミナルソフトTera Termで表示させたものが図15です。
表示内容は下記の内容です。
一行の( , )コンマの区切りごとに受信日時(世界標準時)、利用する衛星システム、可視衛星数、追尾衛星数、測位演算衛星数、速度演算衛星数、測位モード、速度モード、緯度、経度、高度(標高)、ジオイド高、速度、方位角という順で表示されます。なお、この各項目については「4.NEQTO Consoleを用いた動作」で説明します。

図15. 3秒毎に測位した結果を表示した画面
4. NEQTO Consoleを用いた動作
応用例をご紹介します。
具体的には新幹線(東北新幹線:盛岡~一関間)で移動した際のGPS(GNSS)のデータを取得した活用事例です。
Scriptの詳細内容はここでは掲載いたしませんが、「3. サンプルコードを用いた動作」で使用したサンプルコードをベースに、10秒ごとにGNSSデータを取得し、NEQTO Consoleに送信するという内容に変更して実施しました。
なお、「3. サンプルコードを用いた動作」で動作させた際の状態はPCと接続してターミナルソフトで表示をさせていましたが、本応用例では、LTE Cat.M1通信を使用して、取得したGPS(GNSS)情報をNEQTO Consoleへ送信しました。
図16のようにバッテリー駆動で携行してGPS(GNSS)データ取得を行いました。
図16. バッテリー駆動でGPS(GNSS)データ取得を行った形態

図17. NEQTO Console上のJavaScriptエディター
図18.がScriptを実行して取得したデータの一部です。

図18. NEQTO Consoleに取込んだ測位データ
取得した緯度、経度データをGoogleマップの地図上に可視化した処理をおこなったものが図19-1です。Googleマップの地図上に測位した結果を表示させる方法については弊社のブログの「位置情報を受信するGPS(GNSS)、機能とNEQTOでの活用例をご紹介」の「4. NEQTOに搭載しているGNSSの活用例」を参照してください。
また、図19-1の地図上にマーカーが不連続に途切れている箇所がありますが、これは新幹線がトンネルや金属などの屋根で遮蔽された駅などに入ったことでGPS(GNSS)信号を受信できなくなり、結果として測位できなかった区間です。

図19-1. Googleマップ上に取得した緯度、経度データをトレースした結果
※
のマーカーがGPS(GNSS)で測位した点です。

図19-2. マーカーに速度表示を反映した例
NEQTO Consoleへ送信したデータには移動速度も含まれており、図20の赤枠で囲った箇所が移動速度の表示です。ここで表示される速度は秒速ですので、図20で測位した地点での速度は時速255.96km[(71.1m/sec x 3600sec)/1000m]で走行していることを示しています。
また、図19-2はGoogleMap上に図20の測位結果の各ポイントに時速を表示させるように処理した例です。

図20. 新幹線の速度を示す箇所
以前、「位置情報を受信するGPS(GNSS)、機能とNEQTOでの活用例をご紹介」の「4. NEQTOに搭載しているGNSSの活用例」でご紹介したNEQTO Bridgeの場合と異なり、Spresenseでは受信日時(世界標準時)、利用する衛星システム、可視衛星数、追尾衛星数、測位演算衛星数、速度演算衛星数、測位モード、速度モード、緯度、経度、高度(標高)、ジオイド高、速度、方位角と取得可能な項目が増えております。これらGPS(GNSS)からの位置情報をベースとしたデータのみならず、センサーなどとの組合せで複合的な用途の拡充が図れます。
参考までに表示される内容の概要を以下に説明します。
受信日時(世界標準時)・・・世界標準時での表示となるため、表示時間に9時間を足した値が日本時間です。
利用する衛星システム…表示される数値でGPS、Galileo、BeiDou、QZSS、GLONASSなどの対応しているシステムが確認できます。
可視衛星数・・・受信されている衛星の総数の表示です。
追尾衛星数・・・一定の受信レベル以上で捕捉できている衛星の総数の表示です。
測位演算衛星数・・・測位の精度が確保できる受信レベル以上で捕捉できている衛星の総数の表示です。
速度演算衛星数・・・速度が計測できる受信レベル以上で捕捉できている衛星の総数の表示です。
測位モード・・・精度の違いがありますが、数値が2以上であれば位置情報が有効であることを示します。
【表示内容の種類】1: Invalid 2: 2D 3: 3D
速度モード・・・精度の違いがありますが、数値が2以上であれば速度情報が有効であることを示します。
【表示内容の種類】1: Invalid 2: 2D VZ 3: 2D Offset 4: 3D 5: 1D 6: PRED(予測)
緯度・・・赤道を0度として正(プラス)の値は北緯、負(マイナス)の値は南緯を表示しており、単位は[度]です。
経度・・・グリニッジ子午線を0度として正(プラス)の値は東経、負(マイナス)の値は西経を表示しており、単位は[度]です。
高度(標高)とジオイド高・・・イメージは図21です。詳細説明は下記にリンクを張っている国土地理院のホームページを参照してください。

図21. GPS(GNSS)で用いられる高度(標高)とジオイド高の関係
※国土地理院のホームページより引用
図22、図23は新幹線で盛岡~一関間の移動中に取得した高度(標高)データを表示した図です。また、図24は盛岡駅近隣の三角点 高度(標高)124.4m、図25は一関駅近隣の水準点 高度(標高)28.2mを赤枠で示しています。取得したデータから地形的に盛岡は高く、一関は低いということは傾向として読み取れますが、高速で移動する新幹線車内での受信ということもあり周囲の状況の影響を受け数値の変動の振れ幅が大きいことがわかります。
高度(標高)のデータの精度をあげるためには天空が十分に見渡せ、周囲に建物や構造物などで囲われないようGPS(GNSS)からの電波を安定に受信できる環境が必要になることを表しておりますので、GPS(GNSS)で高度(標高)のデータを取得するの参考にしていただければと思います。

図22. 盛岡 → 一関 方向への新幹線移動時の高度(標高)の推移

図23. 一関 → 盛岡 方向への新幹線移動時の高度(標高)の推移

図24. 盛岡駅近隣三角点 標高124.4m

図25. 一関駅近隣水準点 標高28.2m
速度・・・移動速度表示です。単位は[m/sec]です。
方位角…北を0/360度、東を90度、南を180度、西を270度とした進行方向に対する方位を示す角度です。また、高度(標高)と同様に都市部や天空を見渡せにくい屋根や建物内などの場所、高い側壁や障害物、構造物などがある場所では安定した数値が得られない場合があります。単位は[度]です。
5. 最後に
今回は、市販のソニーセミコンダクタソリューションズ製のSpresenseにNEQTO Engineを搭載してGPS(GNSS)を稼働させた例を紹介しました。
このほかにもGPS(GNSS)からのデータだけではなく、他に取込めるデータとの組み合わせ、新たに外付けで取付けた各種センサーなどによっては新たな用途を見いだせるかと思います。
ぜひこれを機会にNEQTO Engineをご利用いただきIoTとしての新たな用途の開発にお役立ていただければ幸いです。
関連掲載サイト
https://neqto.jig-saw.com/ja/blog/usecase/gnss-tracking/
リンク
SPRESENSEメインボード[CXD5602PWBMAIN1]: チップワンストップ
SPRESENSE LTE拡張ボード[CXD5602PWBLM1JUL] : チップワンストップ