【STA24】RTK2GO基準局自動切換えPgm作った<予備の基準局に自動切換え>

3連休で、メインで使わせていただいているNC_NAGANO様のNTRIPサーバーがお休み状態になってました。
現在1日10時間以上接続させていただいてデバッグしているので、1日でもダウンは困るのですが、
善意の基準局様なので、お忙しいときにあれこれお願いできない事情もあります。
そこで、近場でRTK2GOに登録してある基準局様を予備局として、メインの基準局がダウンしているときは
自動切換えするNTRIPレシーバープログラムを急遽作成しました。半日でできました。

●原理
ESP32SPIFFS内のinit.txt ファイルにメイン基準局の番号を登録しておいて万一エラーがでたら、予備局の番号にinit.txtファイルの番号を変更してから、ESP32をリスタートさせて、init.txtから読みこむと予備局へ接続して、更に、init.txtの番号をメイン局の番号に書き換えておく。
両方の局がダウンしていたらダメですけど、どちらかが生きていればNTRIP接続が無事できます。
通電開始時には、常にメイン局から接続を開始して、ダメなら予備局に切り替わります。
●動作説明図

●プログラム備忘録
①最初にinit.txtファイルをSPIFFSに書き込むツールが必要なので、こちらのページを参考にしてダウンローダを
ArduinoIDEにインストールしてください。作者の方に感謝します。
 https://www.mgo-tec.com/spiffs-filesystem-uploader01-html

SPIFFSを使うには、ライブラリーは、特別にいりません。#include “FS.h”//デフォルトのFS.hでSPIFFS使えます
gistにコードおいてあります。ESp8266でArduinoIDEつかいます。参考ページ
②接続する基準局を決める部分のコード

//SET UP 内でファイル読み込んで接続する基準局名を決める
if(!SPIFFS.begin())
{
Serial.println(“SPIFFS Mount Failed”);
return;
}

     File file = SPIFFS.open(“/init.txt”, “r”);//読み込みOPEN
              Serial.println();
              Serial.print(“SPIFFS init.txt read No.=:”);
              c = file.read();
              Serial.println(c);
            file.close();
            }
if(c==’1′)//予備局へ切り替え

     {
          mntpnt = “JP_FREESCALE”;
          Serial.println(“SET mountpoint=JP_FREESCALE”);
     }
     else//メイン局のまま
     {
         mntpnt = “NC_NAGANO”;
         Serial.println(“SET mountpoint=NC_NAGANO”);
     }

③接続エラーの場合の場合のコード
//万一接続エラーの場合は、予備局番号へ書き換えてリスタート

if(!ntrip_c.reqRaw(host,httpPort,mntpnt,user,passwd)){
    delay(10000);
    Serial.print(“===================NTRIP Connection Failed====================at=”);
    Serial.println(c);
    if(c==’0′){//番号0でエラーだったら番号を1に切り替え
      mes=’1′;
    }
    else{//番号1でエラーだったら番号0に切り替え
      mes=’0′;
    }
    Serial.print(“CHANGE SPIFFS init.txt=”);
    Serial.println(mes);
    File fw = SPIFFS.open(“/init.txt”, “w”);//init.txtを書き込み用にOPEN
    if(!fw)
    {
      Serial.println(“fw Open errore”);
    }
    else{
      fw.write(mes);
      fw.close();
    }
     ESP.restart();
  }
  else//エラー無しで正常接続できたらメイン局設定に戻しておく。毎回メイン局から開始
  {
    File fw1 = SPIFFS.open(“/init.txt”, “w”);
    if(!fw1)
    {
      Serial.println(“fw Open errore”);
    }
    else{
      mes=’0′;
      fw1.write(mes);
      fw1.close();
    }
  }
  Serial.println(“Requesting MountPoint is OK”);
●以後
これで、長野県北部全域でRTK2GO基準局メインと予備局で網羅できます。
長野県は、農業 林業がさかんなので、各業界で、基準局を運用していらっしゃるので、RTK先進県だと思います。松本には、国産RTKガジェットでトップメーカーのBIZSTATION社もあります。
長野では、NC_NAGNAO様という熱心な善意の基準局様がいらっしゃります。

 

 

 

コメントを残す

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