MOSAIC HAT (MOSAIC X5)の接続

さて、今度は、Septentrio社 の mosaic を試してみる。 X5という話なのだが、シルクにはmosaicとしかかない。

でも、ここに二次元バーコードが付いているので、読んでみると(URLかと期待した。) MOSAIC-X5GRB….

となっており、ちょっと安心。 mosaic-X5として扱っていける。
Webをみると、結構情報がある。 これまでubloxを使っているのはu-centerがわかりやすいという面がおおきかったが、どちらかというとマニア向けか。

ちょっと見たところでは、

データシートやマニュアル類、最新バージョンのファームの情報などは下記ある。

https://www.septentrio.com/en/products/gnss-receivers/receivers-module/mosaic#resources

そのほか、githubにもかなりの情報が公開されている。

https://github.com/septentrio-gnss/mosaicHAT

また、各種コンフィグレーションなどはRxToolsによって行われるが、下記からDownloadができる。

https://www.septentrio.com/en/products/software/rxtools#resources

ドライバも一緒にインストールされるので、あまり困ることはない。

さて、私のWindows環境にRxToolsをダウンロードし、ドライバと一緒にインストール。

そしてボードを見てみて、ANTとFTDI(USB/シリアル変換)で電源設定があるので、とりあえず両方とも3.3Vに指定して二周波のアンテナとUSBを接続。

一応動き出したが、場所の関係もあり、1GPS,1GLONASS.1BeiDou,1NavICしか入らない。 

ちょっと少し移動せざるを得ないか。。。

部屋の反対側に来て、作業性は悪いものの、半球は開放。さすがにあっという間に衛星を確保。

4GPS,7GLONASS,4Galileo,7BeiDou,1QZSSとなった。

方位が半円しか見えないためか、Main Signalの評価は半分以下しかあてにできない。 まぁ。しょうがないか。

まぁ、ほとんど設定も必要なくここまで来た。

そういえば、入江先生がWebで設定していたような雰囲気で話していたので、もしかしてと思い、pcの設定を確かめてみると、USB経由でLAN接続されているみたい。 また、192.168.3.1が怪しいので、さっそくChromeで接続してみると、これで十分設定できそうな画面が出てくる。

なんとなく感触はつかめた。 ふむ。 これは面白い。 

では次にGPSロボットカーのGPS部に使えるかどうか考えてみる。

まず、素材としてやらなけてばならないのは、

MOSAICの立ち上げ (この投稿部分が該当)

ロボットカー CPUへのNMEA送信(接続含む)

RTKの実現

というところか。

今回はMOSAICからシリアル通信でカーCPU ( M5 Stack Core2 ) へ通信。 

カーCPUというのもめんどくさいので、今使っているM5Stack Core2で実験。 ← ちょっとの遊びには結構高いんだよねぇ。。。 

まずは、Core2のアプリを作成。

要はMOSAICから受信したデータを画面に出すことと、USBでPCに送ること。

Core2上の画面では制御文字が出るとどうなるかわからないので、一か所にAscii CodeがHexで表示されるようにした。

また、Core2からPCにシリアルを送るのは、データを見たいだけではなく、トレースデータを見たいのだが、設定Webではそのような機能を探しきれなかったので、u-centerを使ってしまおうという考え。

Core2で作ったスケッチは下記。

#include <M5Core2.h>

#define RXD2 13 //HardwareSerial Serial2;
#define TXD2 14 //HardwareSerial Serial2;

static int i;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);  //USB to PC
  delay(100);
  Serial2.begin(115200, SERIAL_8N1, RXD2, TXD2);  // UART for GPS module
  delay(100);
  M5.begin(true, false, true, true); //LCD:Yes, SD:No, Seria:Yes, I2C:Yes
//  M5.Power.begin(); // Power ON for GPIO21,GPIO22 and I2C
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setTextColor(GREEN , BLACK);
  M5.Lcd.setTextSize(2);
  M5.Lcd.println("M5 Started");
}

void loop() {  
  i = i + 1;
  if(Serial2.available() > 0) { 
    int data = Serial2.read();     
    Serial.write(data); 
    M5.Lcd.setCursor(0,20);
    M5.Lcd.println(data,HEX);
    M5.Lcd.println(i); 
  } 
}

何をやっているかというと、端子の定義とシリアルの定義(USBと端子)。

SerialのBufferに何かデータが来たら、そのままUSBに送信。 M5にはAscii Codeの16進数表示とLoop Counterの表示。

次にMOSAICとCore2の接続は下記。

Jumperスイッチとして3V3とVCCを接続。 ESP32のUARTは3.3V系のため。

シルクをみると、PWR SRCとあるので、VCCの電圧設定だけかもしれないが、念のため。

(こんな時にジャンクでとってあるJumper Switchが役に立つ)

CORE2側は

MOSAICもCore2もたぶんどちらもDCE側(端末側)。 なので、TXとRXD、RXとTXDを接続する。

ここは、ベンダーによってさまざまなので、だめなら逆に。 というレベル。

GNDはGND同士で接続。 MOSAICにはRTS/CTSの制御線があり、設計者のきちんとした意図が感じる。

でも、ごめんなさい。 使わないです。 Core2に無いし。 (仕事だと使うんですけどね)

つぎはMOSAIC-X5の設定。 Core2とMOSAIC-X5をともにUSBにつなげて電源ON。

192.168.3.1にアクセスして

Serial Portを指定して「Next」で次に

COM2を指定して、

好きなメッセージを選択してFinish!

最後にOK!!!! うーん。 簡単。 簡単。 

さらに、この更新周期に関しては期待大!

では、Core2の画面。

よさげ。

IDEのシリアルモニタの画面。

Good!

さらに、シリアルモニタを終了してu-centerでの画面。

Very Good!