長野ー松本間でログの試験結果でRTKはOKだったのですが、BNOのデータ落ちが10%もありました。
●ESP32プログラムデバッグ
①ESP32シリアル遅延発生しやすい
●ESP32のやっていること
BNO085のRVCモードは、10msec周期で12バイト、BNOのデータを細切れに送るわけにはいかないので、172byteにまとめて、UDPで送信します。F9Pのデータも別途100msec周期で172byte入ったらUDPで送信します。
●BNOデータのロス現象
BNOデータには1バイトのINDEX番号がついてますが、10回に一度抜けが発生して9個になってしまってました。
つまり、172byteまとめてUDPで送信するときに異常が発生しているということです。
●検証
ESP32のプログラムBNOデータのESP32 Serial.print出力とUDP受信データを比較して原因をみてみました。
ESP32の場合は、Serial.printで172byteをHEXダンプをUDP送信部にいれるとUDPで遅延が発生してデータが10%おちました。
●対策
ESP32は、Teensyと違って、シリアル通信処理をソフトウェアでやっているので、どうしても遅くなります。
ということで、ESP32のUDPプログラムは一切余計なこと(Serial.printでモニター等)をさせずに、シリアルで受信したらUDPに送るだけの機能にしぼって、モニター系の機能は一切いれないことにしました。
②RELPOSNEDの異常
RELPOSNEDでヘッダーから10数バイトはきちんと出て、それ以降がいつまでたっても⓪もしくはFFになってしまう現象が長野ー松本間でずっと続いてました。F9Pの出力をUCENTERでみるとキチンと出力されていたので
ESP32のプログラムの問題ということになります。シリアル出力とUDP受信データみるとUDPで化けてました。
static uint8_t f9pdata[172];と宣言したきりで、初期化を行ってませんでした。
通常は、自動的に初期化してくれるとおもっていたのですが、初期化いれたら、
RELPOSNEDのデータ化けがなくなりました。
●ポケットWiFiを2個使う
NTRIP CASTER受信用のポケットWiFiと
UDP WiFiルーターの2個にしました。
電池寿命を2個で分散するのと、設定の煩雑さを軽減しました。
①UDPで受信端末を変えたときのIPアドレスの扱い方
デバッグはノートPCで行いますが、本番のスキー計測では、タブレットを使います。
マイコン側のUDPプログラムでは、宛先IPを固定してあります。
ですので、WiFiルーター内で、端末のIPを変更できれば便利です。
現在使っているRAKUTEN B03ポケットWiFiルーターには、DHCP固定機能が
ついてないので、DHCP固定機能のついているポケットWiFiをさがすと
Aterm MR03Lという古い機種がありました。
https://www.aterm.jp/product/atermstation/product/mobile/mr03ln/
Wifiルーターとして使うので、モバイル通信無しでよいので、古い機種でも問題ないです。
②DHCP固定設定のしかた
UDP受信したい端末からWiFiルーターへ接続このときは、自動的にDHCPで適当なIPがわりつけられます。
接続したらブラウザーから192.168.179.1 と入力してパスワードいれれば、Atermの設定窓がでてきます。
詳細設定ーDHCP固定割当設定 をひらいて、端末のMACアドレスとUDPの送信先のIPをいれて設定します。
設定終わったらブラウザを閉じて、WiFi接続も切って、再度Atermに接続します。
すると、固定割り当てで設定したIPに割り当てられてます。
確認は、コマンドプロンプトでipconfigでみてもいいし、Win10設定のネットワークの状態ーアダプタのオプション変更ー詳細で
現在のIPがわかります。
③C#受信Consoleプログラム
STA24では、モニタープログラムはコンソールプログラムでいきます。
●理由
1:速いので、貧弱なCPUのタブレットでも高速で走るので、データログの信頼性があがります。
2:プログラムがシンプルなので現場で即修正がしやすい点がフォームプログラムより勝ってます。
●制御
リモートは、SPLASH TOP Personalが他社品より具合良いです。個人で1つのルーター内なら無料です。C
●C#コンソールプログラム
1:設定の自由度を高めるために、設定ファイルmyip.txtを読み込んで、自分のIPを設定するようにしました。
2:バイナリーログしたファイルをUBX変換とBNOデータに変換する機能をつけて、その中に
データ欠落率を計算させる機能をいれました。これからいろいろな機能を埋め込みます。
プログラム
C#:https://gist.github.com/dj1711572002/a04608c7aa09206b2e1e49d6731eaed4/edit
EDP32:https://gist.github.com/dj1711572002/22de22eef41aebca6d2b50108ec055cc
●以後
ブーツにとりつけて、初期動作測定して、OKならスキー場で初測定にはいります。