RWS/RZSシリーズ受信機の内蔵WiFIによるTCP Clientについて解説します。この内容は弊社RTK受信機を使ってシステムを構築する開発者向けの資料です。
TCP Clientの概要
受信機の通信には主に以下の3つのものがあります。
- 受信機の設定
- 補正情報の受信
- 測位結果の送信
これらのうち、TCP Clientは測位結果の送信を行うためのものです。測位結果の送信は他にも、Bluetooth、シリアル通信(拡張モジュールが必要)などでも行えます。いくつかの通信方法のなかで、相手機器のOSなどを選ばず遠方まで送信できるのがTCP Clientです。
TCP Clientは、指定された相手サーバー(TCP Server)のアドレスの指定ポートへ測位結果を送信します。
データのフォーマットは、NMEAというGNSS機器の標準形式 (カンマ区切りテキスト)です。 具体的には、Drogger-GPSで記録したNMEAデータで確認できます。
TCP Clientは受信機自身で実行できます。事前にWiFiアクセスポイント、サーバーアドレスとポート、NMEAメッセージ選択の設定を受信機に保存すれば、電源ONにするだけで動作を始められます。
NMEAフォーマットの詳細
NMEA( National Marine Electronics Association)の仕様は National Marine Electronics Associationで策定され有償で購入できます。
ただ、インターネットには日本語でフォーマットを解説したものがありますので検索いただければと思います。
NMEAの選択
NMEAにはたくさんの種類があります。一般的に利用されるのものを列挙します。
- GGA : 高精度位置情報
- VTG : 速度情報
- RMC : 位置、速度の複合要約情報
- GSV : 受信している衛星に関する情報
TCP Server
TCP Serverの用意は、利用者様サイドで行っていただくものになります。ログを取るだけ などごく簡単なものであれば既存のフリープログラムで間に合う場合もあるかも知れません。
例
- Windows RTKLIB パッケージに含まれるstrsvr.exe
- iOS Android アプリ (TCP Serverで検索するといくつかリストされます)
利用者様のシステムに組み込むといった場合は、システムにTCP Server機能を追加する必要があります。
TCP Serverの実装とコミュニケーション
TCP ServerとTCP Client間のネゴシエーション手順は無く無手順です。TCP Serverは、特定のポートでリッスンしClientから接続があったらそのソケットでひたすら受信するのみです。何も送信する必要はありません。
TCP Clientは接続ができたら、NMEAを送信し続けます。基本的に受信は行いません。
TCP のサーバーを構築するサンプルプログラムがあればほとんどそのままで使用できます。
メッセージレート
リアルタイムが要求されるメッセージ(GGA, VTGなど)は、Drogger-GPSで設定する[計測・更新レート]と同じ頻度で出力されます。ただし、高レートで多数のメッセージを選択した場合 に送信が間に合わないことがあります。未送信のデータがバッファーにある場合、残っていたメッセージは破棄されます。
メッセージレートとメッセージの選択はは実際の運用で欠落等の問題無いか確認するようにしてください。
複数の受信機対応
NMEAフォーマットには受信機のIDが含まれるフィールドはありません。そのため、複数の受信機から同時受信する場合は、受信機ごとに接続ポートを別けるようにします。
TCP Serverは、複数ポートでリッスンするよう実装することで、クライアントを識別した同時受信が可能です。
受信機へのコマンド送信
TCPクライアントは、基本的に受信機からの出力が主な目的です。ただ、一部のコマンドのみ受け付けることができます。(下記コマンド以外のデータは送信しないでください。)
GNSSホットリスタート
TCPクライアント経由で以下の文字列を送信すると「GNSSホットリスタート」を行うことができます。この機能は F/W 2.0.1H以降で可能です。
$PUBX,90,1*27<CR><LF>
TCP Clientを有効にする設定
- [WiFIアクセスポイント]にてSSID、パスワードを設定します。
- [メッセージ出力]-[TCPクライント]をONにし[ホスト]と[ポート番号]を設定します。
- F/Wが2.0系の場合は、[受信機のファームウェアはVer2.0以降]をONにします。また、[ポート番号]下の[MessageType]で必要なNMEAを選択します。
- F/Wが2.0系でない場合は[メッセージ選択]で必要なNMEAを選択します。
ヒント
- ホストはTCPサーバーのアドレスです。TCPサーバーが近くのPCなどローカルアドレスの場合、受信機と同じネットワークに接続されてなければなりません。インターネット経由で遠方のサーバーに送信する場合は、グローバルアドレスが振られたサーバーでなければなりません。
- TCPサーバーでリッスンするポートをファイアウォールでブロックしないようにサーバーのファイアーウォールの設定が必要です。
- WiFI親機にプライバシーセパレータ機能がある場合必ずOFFにしてください。ONの場合、ローカル機器同士の通信が遮断されてしまいます。特にPocketWiFiなどではデフォルトでONのものがあります。
- Windows PCのアドレスは「コマンドプロンプト」で > ipconfig と入力すると「IP v4 アドレス」の項目にそのコンピュータのIPアドレスが表示されます。
- IPhoneやAndroidのTCPサーバーに送信する場合は、それらをRWSと同じWiFi親機に接続しても良いですし、IPhoneやAndroidのテザリングまたはインターネット共有をONにして直接受信機をスマートフォンに接続してもOKです。
- IPhoneやAndroidのアドレスは、PlayストアやAppストアなどで[IPアドレス確認]といったキーワードで検索して、IPアドレスを表示できるアプリをインストールしてください。
これらの設定を行い、動作の確認できたら必要に応じて、受信機に設定を保存し、電源ONで適用されるようにします。尚、常にDrogger-GPSを使用してBluetooth接続するソリューションの場合は、この操作(受信機への設定を保存)は不要です。
WiFI親機
このソリューションはWiFIを使用します。WiFIの安定性がシステムの安定性に直結します。
- WiFi親機は、受信機以外の子機との接続をさけ専用化してください。他の大きなトラフィックによる帯域の占有を防止します。また、他機器の接続、切断による親機リソース不足なども発生しにくくなります。
- その他のWiFi、Bluetooth、電子レンジなど同じ周波数を使用する機器と距離を置くようにします。また、WIFi親機とRWS/RZS受信機はなるべく近くに設置します。
- RWS/RZS受信機のIPアドレスは可能であれば固定アドレスにします。DHCPサーバーの不具合やアドレスの枯渇などが発生せず接続性が高まります。
Enjoy with Drogger
Droggerの詳細・ご購入は https://www.bizstation.jp/ja/drogger/