この1カ月でXbeeやBlueToothやWIFI個別の接続実験をしてきました。いざ無線システムを組もうとすると1つのモジュールで送受信が無理なことが分かってきました。つまり、RTKの結果を送信する無線モジュールとNTRIPからのRTCM3データを受信する無線モジュールが必要だということです。今まで、それが大変だったので、有線でUSBケーブル1本で送受信できていたのですが、無線になると線1本で済むものが、モジュール2個必要という割りに合わない手間がかかるということです。
●設定作業は、有線USBケーブルでないとできない
無線モジュール化しても、双方向通信できない設定にしてあるので無線モジュールを経由して、ucenterからF9Pの設定が一切できません。ですので、
無線モジュールと接続してあるTxRx端子をUSBシリアルに接続してPCからucenterで設定作業をしなければなりませんので、USBシリアル接続が基本的にできるシステムにしておかないといけません。
※2021年5月連休 「ついにESP-NOWでRTCM配信Pgm」
1年以上悩んできたRTCM配信の無線化をESP-NOWで試作しました。
F9PへRTCMを供給するタイミングが非常にナイーブなので、なかなかぴったりの無線方式がなくて、RTCM無線化はWiFiのNTRIPレシーバーをF9P Boxへ内蔵させる方法しか実現できてなかったのですが、5月連休に思い切って、ESP-NOWで配信するプログラム組んでみました。ESP-NOWでは、250byte以上の連続したデータを送ることができないので、RTCMが500バイト以上あるので、Frame毎に分割して3-4回に分割して送信して、受信側でRTCMに復元してF9Pに一括送信してます。Frameを受信すると同時にF9Pへ送信してしまうとF9Pが消化不良をおこしてしまってNO RTKになってしまう点がRTCM通信のナイーブなところです。ナイーブさの解説記事はこちらです。
ESP-NOWのプログラムソースは、下記記事で解説してあります。
ESP32かM5シリーズでNTRIPレシーバーを作った経験がある方向けです。
※2020年12月19日追記「マイコン無線システムはESP-NOWがお勧めです」
F9P RTK始めて1年経過して2シーズン目となりました。SimpleRTK2B heading Kitをもう1セット購入して、F9P4個体制となりました。スキーの両足でheading測定をするためです。アンテナ2個をスキーの前後のとりつけて、BOXを体にとりつけて、合計アンテナ4個、BOX2個のシステムとなるのでコンパクト化が大きな課題となります。1月からスキー場でフィールドテストを繰り返して両足MovingBase測定でよいデータと動画がとれるかトライしていく予定です。新システムにマイコンは、M5Atomを4個M5Stack1個を使いたいと構想してます。NTRIP接続Wifi用に1個、MovingBase無線出力用に1個で1BOXに2個、合計4個に2BOXから発信されるMovingBaseデータをまとめて受信ログするためのM5Stack1個でマイクロSDにログします。
無線規格はESP-NOWを使いますが、高速通信でBlueTooth、Xbeeよりエラー率が一桁少なく安定した無線規格です。今回、フィールドで使うのは初めてですが、短距離なので、大丈夫だと思います。接続作業の備忘録です。
ESP-NOWカテゴリー
●マイコン処理の検討(F9P 2CHとNTRIP使用の場合)
M5STACKで検討したのですが、ESP32は、WIFIとBLUETOOTH対応ですが、大量のデータ通信で、両者を同時に使えるのかクリティカルな問題だと思います。事例を調べたら、バッファメモリー量が課題になるようです。2CHのLOGを1つのログデータセットにまとめて、WIFIで送信すれば、WIFIモジュールだけですみますが、現在の4GWIFIではリアルタイム性がなくなります。5Gのモジュールでやれば、無線モジュール1個で解決できるかもしれません。5Gが始まるので期待です。しかし、大量のデータを送受信してタイミングを守るのは大変なので、CPUとメモリーに余裕のあるPCに近いマイコンがあればいいと思います。私の場合、システムにあまり手間と時間をかけたくないので、RASPIより、WINDOWSでucenterでログしたいので、NOTEPCマイコンみたい小さくてNOTEPC並みの機能があればと思います。GPDなどのUMPCが合理的な選択かもしれません。マイコンの代わりにUMPCをF9Pに接続しておいて、Windowsのリモートデスクトップを使って、スマホとかタブレっとでPCを自由にコントロールできるので、その方法でもよいかと思ってますが、UMPCでもかさばるので優先順として
●1月末までは
XbeeとM5Stickで組んでみて、フィールドでの実験で使い勝手を評価して、ダメならUMPC、マイコンなどの方法にしてみようと思います。
●Xbee双方向通信実験結果
Xbeeで実験してみたのですが、写真のように、LEDが点灯します
【設定条件】Xbee115200bps CTS有
XbeeのCoordoinator側:PC接続してUcenterからNTRIP送信でRTCM3データを送信
XbeeのRouter側:SimpleRTK2B上UART2に接続
UART2 UBX>CFG>PRT設定は、IN=RTCM3 OUT=UBX+NMEA
◆LEDの結果表
LED名称 | 上記設定の場合の状態 | 設定IN=noneにした場合 |
GPS FIX | 点滅 | 点滅 |
NO RTK | 点灯(RTKしてない) | 点滅or消灯(RTK計算できてる) |
Xbee->GPS | 点滅 | 消灯 |
GPS->Xbee | 点滅 | 点滅 |
①この写真は、XbeeでIN=RTCM3、OUT=UBX+NMEA設定の場合
NO RTKは、ずっと点灯したままでRTK計算無しです。
➁この写真は、XbeeでIN=none、OUT=UBX+NMEA設定の場合
GPS FIX点滅 GPS-<Xbee点滅 他は消灯
●原因は
①送受信データが大きすぎるから?
以前、データバイト数をカウントしたのですが、1KB以上あるので
通常のIOT無線ではありえない大きさです。
データサイズを測定した記事
➁通信タイミング観察した記事から考察
オシロでUSBケーブル接続でのTXRXを観察するとLOGが長いが空きがあります。RTCM3受信とLOGデータ送信が重複してますがケーブルだから可能であって無線では不可能です、これが原因かもしれません。
タイミング的にこの関係でないとRTK計算ができない理由が在るのかもしれません。バッファが大きければRTCM3のタイミングをずらせるのではないかとも思うのですが、通信処理ですべてのCPU時間を食ってしまうとRTK計算時間がなくなってしまうので、半分くらいは残しておかないといけないみたいなことがMovingBaseマニュアルに書いてありましたので、
送受信が重複するタイミングで通信できるIFが必要なのではないかと思います。無線を2CH使ってTXRX同時通信可能にすれば、USBケーブルと同じ使い方ができるはずですが、結局無線モジュールば倍必要になるということです。
●以後
2CHのF9Pセットを一つにまとめて、NTRIPは、M5STICK1個で2台分まかなってXbeeは、F9P上に送信用として2個装着するという構成で組んでみます。なぜXBEEかというと、距離が長い数百m、各種設定がXCTUで簡単に細かくできる115200bpsと遅いけどハードウェアフロー制御で、データ落ちが少なくできる点があります。
ロギングはNOTE PCかWIN10タブレットでucenterもしくは
自作のプログラムで受信するので、Xbeeで受信したほうがやりやすいです。
※2020年6月20日記
6か月経過して、無線方式を大きく変更しようとしてます。
既存のBlueToothとかXbeeでは遅すぎる、WIFIでは、高速だが
リアルタイム性で遅延が発生する点で、どれも使いずらいのですが
ESP-NOWというESP32専用のWIFIの無線規格があります。
これだと低遅延(1msec以下)で高速1MPBPSですので、今ある
無線規格ではなしえない性能をもってます。欠点としては、距離が
あまりでないのでXbeeのように数百mは無理です。電流もWIFIですので
200-300mAくらい食います。WIFIですが、ポケットWIFIなどの
INTERNET接続がなくてもESP-NOW間で自由に送受信ができます。
ESP-NOWを使えば、1個の無線モジュールで送受信が可能だと
思います。記事群はこちらにあります。
Arduinoの簡単なプログラムで高速無線が多端末間で自由にできます。
http://shinshu-makers.net/shinshu_makers/?s=ESP-NOW