【L-RTK】MovingBase用無線回路組んだ<Serialコネクションが5か所>

MovingBaseでフィールド測定するために、回路を組んで、無線化しました。シリアル接続部が5か所もあって、間違い易いので、RX-TXを間違っても交換して確認できるように圧着コネクタで接続しました。
無線モジュールは、WIFIがESP Wroom32 DevkitとXbeeです。

基板裏面に配置しました。 

●結線仕様

デバイス SimpleRTK2B SimpleRTK2Blite ESP-Wroom32 Dev Xbee ZB-S2C Router
役割 MovingBaseモードでのRoverとなる MovingBaseモードでのBaseとなる WIFIポケットルーター経由でNTRIP Casterにインターネット接続して基準局からのRTCM3データを受信して、Baseに配信 MovingBaseの結果をRoverから受信してロガー側XbeeCoordinatorへ送信
電源 メイン電源:
バッテリーからの入力はXbee用USBマイクロからいれる。3.3VOUT
とGNDから各デバイスへ供給
UART2のコネクタから3.3VとGND入力

 

SimpleRTK2Bの
3.3VOUTからESP32の3.3Vピンへ入力GNDも同様
ESP32の3.3VとGNDから入力
Base-Rover間
接続
115200bps
UART2-TX<= <=UART1-TX
【RTCM3】
× ×
UART2-TX=>
【RTCM3】
=>UART1-TX × ×
Rover-ロガー間
接続
115200bps
UART1-TX=>
【UBX+NMEA+RTCM3】
× × =>Xbee RX
UART1-RX<= × × <=Xbee TX
【-】
NTRIP Caster
データ
通信WIFI受信
RTCM3送信RTK2go.com
JP_BIZSTATION様
× UART2TX=>
【-】
=>Serial2RX
IO017
×
× UART2RX<= <=Serial2TX
【RTCM3】
IO016
×

●個別配線
①Xbee-SimpleRTK2B (Rover)接続
Xbeeと接続するUART1を使うためには、IOREFに3.3Vをいれる。
IOREFは、1.8v~5Vまで使用するIFモジュールの通信電圧
に合わせることができる
私は、3.3V固定なので、3.3V出力端子とIOREFをはんだ付けしました。オレンジ線

UART1のTX1、RX1にL型ピンをはんだ付けして、MOLEXの圧着コネクタで接続するうにしました、ここから基板裏面のXbeeのRXTXへ接続します。


裏面のXbeeの1番ピンに3.3V、2番ピンTXにSimpleRTK2BのRX1(使ってない)3番ピンRXにSimpleRTK2BのTX1を接続します。
10番ピンはGNDです。

 

 ➁MovingBaseーRover間接続
ArduSimple社の推奨構成は、SimpleRTK2Bボード上にSimpleRTK2Blite1を差し込む2階建て仕様になってますが、アンテナ線が動くと、liteのコネクタがずれて接触不良になるリスクがあるため、私は、2階建て構造はやめました。そのため、新たにSimpleRT2BのUART2とSimpleRTK2liteのUART1との結線を作成しました。
写真左がBase用のXbeeコネクタです。秋月のXbee用2.54mmピッチ変換基板を流用してます。 電源は、5Vを3.3Vにする3端子がついてますが、3.3Vしか使わないので3端子の3.3V出力端子にSimpleRTK2BのUART2の3.3Vをいれてます。TX-TX,RX-RXで結線します。

このピンヘッダをRoverのSimpleRTK2BのUART2の1番から10番に刺す

 

●NTRIPデータ通信結線
ESp-Wroom32 DEVkitの
Serial2(RX:IO16、TX:IO17)を使ってます。



ESP32からTX-RXだけ2ピンでSimpleRTK2Blite UART2へ結線
ESP32 TX-SimpleRTK2BliteのUART2のRX
ESP32 RX-SimpleRTK2BliteのUART2のTX
間違ったら左右交換すればいいだけなので、気楽です。

●設定ファイルとプログラムは全部コピペで簡単
設定ファイルは、前回記事で解説した通りArdusimple社の推奨設定ファイルを使ってますESP Wroom32 Dev kitのNTRIP Caster受信プログラムもトラ技
10月号別冊4章で解説記事で使っているものをコピペさせていただきました。ESP-Wroom32でWIFI受信します。サンプルプログラムをそのままコピーして、ポケットWIFIのSSID名とパスワードと接続するNTRIP CasterのIPと名称をプログラム内に書き込みます。
とりあえず、ArduinoIDEソースをのせておきます。
特徴は、NTRIPデータをUSBへも出力してるので、チェックできる点です。ライブラリーが必要ですので、M5Stack記事と同じですのでそちらの記事を参考にしてください。

#include <NTRIPClient.h>

/*
* NTRIP client for Arduino Ver. 1.0.0
* NTRIPClient Sample
* Request Source Table (Source Table is basestation list in NTRIP Caster)
* Request Reference Data
*
* M5Stack=>SErial TX#17 SimpleRTK2lite
*/
//#include <ESP8266WiFi.h> //Need for ESP8266
#include <WiFi.h> //Need for ESP32
#include “NTRIPClient.h”
#include”M5Stack.h”;
const char* ssid = “30F772C87B3E-2G”;
const char* password = “2215094594340”;
int n=0;
int k=0;
int nbyte;
char* host =”RTK2go.com”;//”60.127.58.218″;//
int httpPort = 2101; //port 2101 is default port of NTRIP caster
char* mntpnt = “JP_BIZSTATION”;//”ntrip caster’s mountpoint”;
char* user = “”;//”ntrip caster’s client user”;
char* passwd =””;// “ntrip caster’s client password”;
NTRIPClient ntrip_c;

void setup() {
M5.begin();
// put your setup code here, to run once:
Serial.begin(115200);
Serial2.begin(115200,SERIAL_8N1,16,17);//*******(baudrate,config,RX,TX)*******
delay(10);
Serial.print(“Connecting to “);
M5.Lcd.print(“Connecting to “);
Serial.println(ssid);
M5.Lcd.print(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(“.”);
//Serial2.print(“.”);
M5.Lcd.print(“.”);
}
Serial.println(“WiFi connected”);
Serial.println(“IP address: “);
Serial.println(WiFi.localIP());
M5.Lcd.print(“WiFi connected”);
M5.Lcd.print(WiFi.localIP());

Serial.println(“Requesting SourceTable.”);
if(ntrip_c.reqSrcTbl(host,httpPort)){
char buffer[512];
delay(10);
while(ntrip_c.available()){
ntrip_c.readLine(buffer,sizeof(buffer));
Serial.print(buffer);
M5.Lcd.print(buffer);
}
}
else{
Serial.println(“SourceTable request error”);
M5.Lcd.print(“SourceTable request error”);
}
Serial.print(“Requesting SourceTable is OK\n”);
M5.Lcd.print(“Requesting SourceTable is OK\n”);
ntrip_c.stop(); //Need to call “stop” function for next request.

Serial.println(“Requesting MountPoint’s Raw data”);
M5.Lcd.print(“Requesting MountPoint’s Raw data”);
if(!ntrip_c.reqRaw(host,httpPort,mntpnt,user,passwd)){
delay(15000);
ESP.restart();
}
Serial.println(“Requesting MountPoint is OK”);
M5.Lcd.print(“Requesting MountPoint’s Raw data”);

}

void loop() {
// put your main code here, to run repeatedly:
Serial.println(“LOOP”);
while(ntrip_c.available()) {
//Serial.println(“NTRIP available”);
n++;
k=int(n/20)+1;
char ch = ntrip_c.read();
//Serial2.print(ch); //binary
//if (Serial2.available() > 0){nbyte=Serial2.read();}
Serial.print(ch,HEX);
M5.Lcd.setTextSize(2);
M5.Lcd.setCursor(k, n%20);
//M5.Lcd.print(nbyte);
//Serial2.print(ch,HEX);//monitor
M5.Lcd.print(ch,HEX);

}
}

 

●動作確認
①USBシリアルをRoverであるSimpleRTK2BのPower+GPS USBマイクロへいれてXbeeCordinatorが受信しているかXCTU を使って確認


データは受信できるみたいです。
本日1月25日夕方からRTK2go.comサーバーが不通になっていて、
RTK実験ができないので明日以降外にでて、MovingBase実験してみます。

 

 

カテゴリー: RTK

コメントを残す

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