mosaic X5 (mosaic HAT)で RTK 測位

少し使い方もわかってきたところで、RTK接続を。 でも、場所的には最悪なんだが、実現するかどうか。。。 ここ数年、自宅ではなかなかFixしなかったり、Fixしてもすぐに落ちたりしてており、結局屋外に出かけていたので正直設定と1度でもFixして動作確認ができればいいと思っていた。

しかし、結果はそれなりのFIXを得られて満足。 測位精度は屋外での実験を待ちたいが、現状では期待以上の結果が出ている。

さて、まず環境の紹介。

環境としては最悪かも。 次にシステム構成は下記。 PCを除くと写真の通り。

Wifi-Routerとmosaic HATとM5Stack Core2

今回の目的は、M5Stack Core2とmosaic X5をつかったRTKの実現である。

まずは、Core2が20km以上離れた場所のNtrip Serverに接続し、RTCM3の情報を得て、mosaicへ送信。mosaicからは、RTKのFix状態と位置情報を確認する。

まずは、RTKの設定をしない状態。

SBASが1衛星だけ補足していたが、単独測位との表示で±80cmといったところか。

衛星を半球しか捕まえていないところを見ると、かなり良い。 もしかしたらSBASが効いている可能性があるのだろうか。

従来の受信機ではこの状態だと軽く10mぐらいずれてしまっていた。次に、RTK測位を行っている場合、下記を見ると特にmosaic側での設定は不要のようである。

見ると、COM2にRTCM3が毎秒1kB程度づつ送られているのがわかる。

RTKもFloat解が出だした。

その後、Fixになり、それなりにほおっておいた状態が下の図である。

半球しか見えていないことと、これまでの実績を加味すると、このデータは結構よさそう。

その後、NMEAの出力を100mSに変えたが、Fix率が悪くなった。また、トレースで見切れていないのだが、(ここはu-centerが便利)RTKの送信が間に合わないのではないかという想像もしている。

どちらにせよ、個々のあたりはほかのアプリも組み込んだうえで調整が必要である。

また、少し気になるところとしては、Fixed RTKからStand-Aloneに落ち、Float解を経由してFix解となったときに、アンテナの位置は移動していないのだが、同じ場所を示さないという現象がある。

±15cm程度の誤差ではあるが、さらに良い環境で確かめる必要がある。

半球というところと、Ntrip Serverまでの距離が長いことと、Ntrip Serverの位置情報を入れていない事も十分考えられる。

今回は、M5がWifi-Router経由でNtrip Serverからのデータを受信し、mosaic X5に転送し、ちゃんとFix解が出るかどうかという実験だったので、それに関しては完了!

M5Stack Core2がリスタートできない。

最近使っていなかったが、考えれば手元にあるM5Stick Cは、ともかくM5Stack Core2はモータとステアリング操作に、I2C、GPSとの通信にUART、RTKにWi-Fi、アピールに音、操作関係にはタッチパネル。

ちょっとパフォーマンスの心配はあるが、サーボをI2Cでやってしまえば可能性ありかと。

本当はパフォーマンスを考慮してRaspberry pi PICO Wを使いたかったんですが、まだ技適前。自分で研究用で申請してしまうのもありだが、そのものが手に入らない。 Arduino IDEでアプリ組めるし。 と思っていたが、また次回のお遊び用に。

さて、M5StackCore2のリハビリを兼ねて数字を表示するスケッチを。

#include <M5Core2.h>

static int i;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);  //USB to PC
  delay(100);
  M5.begin(); 
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setTextColor(GREEN , BLACK);
  M5.Lcd.setTextSize(2);
  M5.Lcd.println("M9 Started");
  Serial.println("M9 Started");
}

void loop() {
  i = i + 1;
  M5.Lcd.setCursor(0,15);
  M5.Lcd.println(i);
  M5.Lcd.println("123456");
  Serial.println(i);
  delay(500);
}

あれ? うまくいくときもあるが、再書き込みで止まったり、リスタートボタンの横のLEDが消えていたり、動作がおかしい。 リスタートボタンをおしてもウンスンではないか。。。

もしや、ESP32やUnoで時々苦しめられたRSTの信号不安定か?

ググってみると。 Core2においては、同現象に悩まされている人もいるが、それほど多くはない。

過去のセオリー通りにRSTとGND間にコンデンサをつけている人も確かにいる。

幸いCore2には端子もある。。。 おもちゃオシロで見てみるべきか。。。

こんな時にはリビング行ったり、冷蔵庫空けたり、、、、そういえば、Fall Guysが無料になっているんですよね。 なんとなく、Fall Guysの名前が覚えられなくて、Whole Foodsが頭の中に出てくることこの頃。

ってなことを考えながら、再度PCの前に。。。 Delayを増やしたり、カーソル処理を外したり。。。 あれ? ダウンロードするときに Time Out起こすことも、ますますCore2がひねくれている。

こうゆうときは、一度工場出荷へ。 EasyLoader_M5Core2_FactoryTest.exe を使って、最初のアプリをロード。 あれ? 動くじゃん。 リスタートも何度やっても問題ない。 これのアプリ部分だけ入れ替えたいなぁ。。。

ん? 

OSが原因か? ボード情報を取得してみると、対象外? んん? M5StackのCore2のボードと設定しているが、中身がこっそり変わっていたか??? ファームのスタイルが変わっていてIDEと一致していなかったのかも。

さっそく、ボードマネージャでM5Stackを検索。 インストールは1.0.6 最新は2.0.3。 これかぁ。。

最新に上げて、ダウンロードして事なきを得た。 コンパイルが長くてたまらん。 PCの性能もあるが、何とかしてくれ!!! 昔もコンパイル間に仮眠をとっていた時代が懐かしい。 これが原因だったのね。

すると、これまでESP32でトラブっていたのもこれが原因だったのでは??? と疑ってしまう。

動作確認して良好を確かめ一安心。 念のためにライブラリのM5Core2も0.1.2から0.1.4に挙げておいた。

再度動作確認して問題のないことを再確認してComplete!

IDEの設定とM5Stack Core2の工場出荷 への戻し方確認

ここでは、基本として覚えておきたい部分のメモ
(このページでは保証できないので、各自の責任において実施してください。)

M5StackのHomePage
https://docs.m5stack.com/#/
上記からCORE2をクリックする。 チュートリアル、機器仕様、ピンアサインなどなど

工場出荷のソフトに戻す方法
1.上記URLからEASYLOADERを選択し、WINDOWSを選択。
インストーラがダウンロードされるので、セキュリティを気にしつつ実行!
Comポートを選んで Burn ボタンを押す。

2.Arduino IDEの設定方法
私の使っているIDEは1.8.13ということを前提に置いておいて。
先のM5StackのHomePageからQUICK-STARTを選択しArduino IDEを選択。
ここで、ボードマネージャに指定するURLをコピーペースとしておく。
IDEのファイルメニューー>環境設定から
追加のボードマネージャに先ほど指定したURLをペースト。
ただし、すでに追加されている場合は、右のボタンを押してURLを追加する。
念のためIDEを再起動し、ツールメニューのボードのボードマネージャを選択。
ここでInternetから情報を集めてきているはずなので、少し待ってから検索バーのようなところにM5Stackと入力すると、インストールできる状態になる。 ここで何も出てこなかったらネットワーク接続や、先ほど設定したURLを疑うのが妥当。
インストールが完了したらダイアログを閉じて、再度ツールメニューのボードマネージャから
M5Stack ArduinoからM5Stack-Core2を選択。
次にライブラリとしてスケッチメニューからライブラリをインクルードのライブラリマネージャを選択しM5Core2で検索。
私の場合、M5Core2とESP32-Chimera-Coreが出てきたがM5Core2のみインストールした。

動作確認としてスケッチ例でM5StackCore2のTouchを選択してダウンロード。
無事にダウントードが終了し、タッチをするとしたところが白くなることを確認できた。

試しに ここでOFF/ON。 OFFは電源ボタンを3-4秒押し続けてリセットボタン横のLEDが消えることを確認。
再度ここでON。 画面変化がなく寂しいがタッチすると白くなることを確認。

本題はここから、ここでEASYLOADRをつかってBURNしてみる。

おぉぉ 買った状態に戻った。 これで一安心!