【RTK2021】F9P出力にM5ATOM lite をシリアル接続して無線通信<ESP-NOW安定してる>

2021年版の新たなMovingBaseシステムを組み始めてます。
●M5ATOMを使う目的

データ出力用に使っていたマイコンがNucleoF446REでデカすぎるし、無線モジュールも別付けなのでシステム小型化のために、超小型マイコンのESP32 picoD4M5 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でしのぎます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です