【RTK22】超高速マイコンCortex-M7搭載Teensy4.1いじる その4<MovingBaseをUSBHOSTでまとめる>

※Teensy 備忘録シリーズ
★Teensyいじるシリーズ
その1(導入とSD速度) その2(USBHOST初め) その3(USBHOST3ポート)
その4(USBHOST事例) その5(ハードウェアシリアル便利)

Teensy動作実験最終回は、2022年で採用する薄型2分割MovingBaseでのUSBHOSTでのUBXバイナリデータが
Ucenterで読めるかを実験してみました。
BaseのSimpleRTK2Bです。今回は、簡単に済ますために、WiFi NTRIP MASTERを載せてあります。
左下の白いXHコネクタがUART1のTXに刺さっていて、Roverに460800bpsでRTCM3(MB)を送信してます。

下図はRoverのF9Hですが、UART2にBaseからのRTCM3を入力してます。

下図のUSBハブにBaseとRoverのUSB端子からのケーブルを差し込みます。ハブからTeensy4.1のUSB HOST
コネクタへデータを流し込みます。

Teensyからは、USBシリアルでPCのUcenterへBaseのPVTとRoverのRELPOSNEDを送信します。

●Ucenter接続の意味
従来は、F9PとPCをUSBシリアルで接続して、Ucenterでモニターしてきたのですが、
F9PとF9Hのデータをマイコン(Teensy4.1 USB HOST)で受信合体させて、更にPCへ送信するというマイコンでUSB中継をするというやり方をした場合、UBXデータがばらばらにならずに、きちんとucenterで解読されるかを確認する意味です。

●サンプルプログラムちょい変更
サンプルプログラムはGISTにアップしてありますが、これの ヘッダ(SB:,SB2:)print部分をコメントアウトするだけです。
https://gist.github.com/dj1711572002/aabdaf3b9cbd848d28a2bef1e15522d3

Serial.write(userial.read())となっているので、バイナリーのままUSBシリアルに送信されます。
問題は、userialbがBase接続で、NAV-PVTを送信してきて、userialb2がRover接続でNAV-RELPOSNEDを
送信してきます。この2個のデータを順番に並べてUSBシリアルで送信してUcenterで読めるかです。
=>Serial.print(userialb.read(),HEX)とやって、画面にHEXダンプ表示してみたのですが、print時間がmsec台なので
データ落ちが多くて、データの確認ができませんでしたので、Ucenterに送ってバイナルをHEX変換してもらって確認することにしました。

●結果
①View-BinaryConsoleでみると
“B562013C”は72バイトのRELPOSNEDです。
”B5620107″は、100バイトのPVTです。

②View-PacketConsoleをみると
たまに、PVTが2個連続で並んでました。
これをどうするか、プログラムで修正してみます。Serial1.addMemoryForRead(buffer,size)というコマンドをつかえば指定データ数だけバッファできるので、保存しておいて、順序よく出力できるのではないかと思います。
=>順序が狂うと、時々UcenterのFix Floatがまばたくことがあるので、よろしくないと思うので、ログプログラムを作るときに、順序を整えてUcenterへ送信できるように作ります。


 

③測位結果はOK
BaseとRoverでちっとも収束しなかったのでおかしいなと思って設定チェックしたら、衛星の設定
Generation 9 Configuration ViewでBase側設定でBeiduが抜けていたので、直したら即FIXしました。
F9HのRoverの場合は、Relative Position Normalizedとなっていて、Lenghtは常に1mで、正規化されてるので
実質的にHeading角しかわかりません。相対位置を知るには、アンテナ間の距離を予め測定しておいて祖距離に1mをかければLengthがでます。F9Hの場合は、BaseとRoverのアンテナ間は固定させる必要があります。

 

コメントを残す

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