さて、今度は、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!