2021年版の新たなMovingBaseシステムを組み始めてます。
●M5ATOMを使う目的
データ出力用に使っていたマイコンがNucleoF446REでデカすぎるし、無線モジュールも別付けなのでシステム小型化のために、超小型マイコンのESP32 picoD4のM5 Atom liteで接続して、2個間をESP-NOWで無線ネットワークを通信して、PCのVB.NETのRTKモニターでリアルタイム解析できるようにします。=>NTRIPからRTCM3入力のM5Atom化は、次回の記事でやります。
■やり方備忘録(MovingBase出力をPCに読み込んでログ解析が正常か確認するまで)
ステップを1歩1歩確認していくことが重要です。(1-2日でできます)
STEP | 接続 | 接続方式 | 内容 |
STEP0 | F9P SimpleRTK2BのMovingBaseモード が正常動作しているかUcenter受信で確認 |
USB シリアル |
アンテナを2個1m前後に離して固定して、庭先においてMovingBase出力がきちんと出てくるか 確認する。(Ntripは近くの基準局接続) ①MessageView-NAV-RELPOSNEDでLengthがアンテナ間距離±2cm程度に収まっていることを確認 hAccが2cm程度になっているか確認 ②MessageView-NVTで自分に緯度経度が正常かを 確認 緯度経度値は、小数点以下7桁目まで一定値で 8桁目が振れる程度(8桁目が1cm相当) |
SETP1 | SimpleRTK2BからM5Atom liteへBinary 172Byte送受信 | シリアル115200bps SimpleRTK2BのUART1とM5AtomのSerial2結線 |
F9PのMovingBaseモードのバイナリ出力NAV-PVT(100byte)とNAV-RELPOSNED(72byte)が確実に受信できているか検証データの先頭にNAV-PVTのヘッダがくるようにする(B5,62,01,07・・) 確認は、AtomからASCII出力(Serial.print(data,HEX)でTeraTermでF9Pバイナリを16進文字で見ます。 F9PとM5Atomのシリアル・電源接続詳細はこちらへ 電源が厳しいので別電源方式にしてます。M5シリーズはESP32を使ってWifiしているので、電流値は通信時に150-200mA近く流れますので他のボードと同じ電源では無理があるので独立電源が必要です。 |
STEP2 | M5Atom lite(子機)からESP-NOW送信 | ESP-NOW 子機:F9P側 親機:PC側 |
①2個のM5ATOM間でESP-NOW初期実験をします。 こちらのリンクのLangShip様のサンプルプログラムをM5Atom用に変更したPgmがGistにおいてあるのでこれを2個のM5Atomに書き込んでボタンを押して互いのMACアドレスが表示されるかを確認してメモします。 ②MovingBase出力送信用PgmをGistからダウンロードして F9PとつながっているM5Atomに書き込みます。 Pgmは、先頭がB5,62,01,07で始まるように組んであります。③PC側のM5Atomは①のPgmのままで受信できますので TeraTermを2つ立ち上げて受信側COMと送信側COM接続して 送信データと受信データが一致しているか確認します。 ④送信側は、B5,62,01,07・・・100byte+B5,62,01,3C・・72byteの合計172byteを繰り返し流してきます。デリミタはありませんので、B5,62,01を探して確認します。ScreenShotは下記クリック |
STEP3 | M5Atom lite(親機)からPCへのデータ転送Pgm | ESP-NOW 子機:F9P側 親機:PC側 |
①ESP-NOWは、1パケット上限が250byteなので、Movingbase172byteがすっぽり収まりますのでバイナリーで送受信します。受信したデータをバイナリで渡すのは、PCのプログラムに負担をかけるので、マイコン側でASCII変換して渡したほうが簡単で確実です。 ②親機Pgmは、バイナリをデリミタ カンマをつけてASCIIでPCへSerial.print(data,HEX)するだけですが、データ数をチェックして最後にCRLFをつけてます。 gistにおいてあるのでダウンロードして親機に書き込みます。③これで、F9Pの子機からESP-NOWで親機へデータをバイナリ送信して親機からPCへデータをASCII送信できたので PCで、親機のCOMでTeraTerm受信してみます。 |
■F9PとM5Atomのシリアル接続
● 用意する部品:
①シリアル接続コネクタ:Groveコネクタ付ケーブルセット SwitchScienceさんで売ってます。
https://www.switch-science.com/catalog/5213/
カットして、SimpleRTK2BのUART1のTX1、TX2へ接続する方法もありますが
SimpleRTK2Bに線を直付けするのが嫌な人は②で別途中継コネクタを用意します。
②シリアルケーブルを別コネクタで接続したい場合はコネクタセットが必要です。
私はMOLEXと秋月のXHを使ってますが、圧着工具が必要です。こちらの記事にあります。
●写真
Grooveを途中で切って、XHコネクタのメスに半田付け、SimpleRTK2BからはXHコネクタのオスで接続、私の場合は、SimpleRTK2Bの基板のTX1,RX1にピンヘッダを半田付けしてMOLEXのMiniLatchコネクタで接続してあります。MOLEXのほうが大きくてしっかりしてますので、
XHより信頼性が高いと思います。
●結線
注意!!
電源を別別のUSBケーブルでいれてある点です。SimpleRTK2Bの供給能力があるとなってますが、私の実験では、300mAを供給させると異常動作することがあるので、SimpleRTK2Bの電源からは、マイコンの電源は、ESP32-DEv-KItだけにしてます。M5シリーズは無線時に電源200mA近く食いますのでSimpleRTK2Bとは別電源にしてGNDだけ結線するほうが無難です。
■動作評価
VB.NETのモニタープログラムの評価もかねて長時間ログ実験しました。
VB.NET側のドライバが受信データを172byte以上で読んでしまった場合をエラーとしてカウントすると1時間半で4万7千回受信して13回エラーが発生してますので、0.027%と3σの10分の一のエラー率ですので、ESP-NOWは使える無線通信だと思います。BlueToothやXbeeだと、115200bpsで無線高速通信していると3σ(0.27%)前後まで悪化してしまいます。ですので、115200bpsでは、WiFi系の無線方式しか信頼性が確保できません。5Gの普及がマイコン無線環境に革命をもたらすと思いますので、それまでは、ESP-NOWでしのぎます。