F9PX1はu-bloxの2周波RTK受信用IC「ZED-F9P」を搭載していて、基準局や移動局等、RTKのシステムを開発するのに便利なボードです。
次の画像はその外観ですが、GNSSアンテナ接続用のSMAコネクタと、I2C用Groveコネクタ、およびマイクロUSBコネクタが付いています。

このSMAコネクタにアンテナを接続し、USBケーブルをパソコンに接続すると、u-centerというWindowsのアプリでZED-F9Pからの測位データを取得する事が可能です。

1.アンテナ

F9PX1を使用するにはGPS/GNSSアンテナを接続する必要があります。
RTKはセンチメータ(cm)精度の測位ができる技術ですが、アンテナにより精度が出ない場合があります。
そのため、利用環境に合わせてアンテナを選択して下さい。。

cmの精度が出るためには、RTK受信機での測位演算でFix解が得られなければなりません。
このFix解が得られるかどうか、またどの程度早く得られるかは、GNSS衛星からの電波の数、受信強度、受信した電波の安定性など、アンテナの性能により変わってきます。

弊社のWEBショップではRTK用のアンテナを販売していますが、価格は千円台から2万円程度まで幅があります。
基本的にはアンテナの大きさが大きいほど受信感度が良くFix解が得られやすくなります。
しかし、移動局としては小型のアンテナの方がいいので、用途や予算により選択する必要があります。

下記のテスト結果も参考にして頂いて、F9PX1で使用するアンテナをご購入下さい。
ZED-F9PのRTK初期化時間 TTFF
アンテナ別 ZED-F9Pの受信強度

2.パソコンとの接続

F9PX1を使ってRTK-GNSS測位を行う基本的な方法は、パソコンと接続しu-centerというWindowsのアプリで行う方法です。
この方法は 「2周波RTKモジュール u-blox ZED-F9Pの設定方法」を御覧下さい。

3.ステータスLED

ボードにはLEDが4個取り付けてあり、次の状態を表しています。

基板上の符号項目内容
PWR電源Onモジュールに電源が供給されている時に点灯します。
TPS 1秒毎パルスGNSSの電波が受信できている時に1秒毎に点滅します。
RTKRTKの状態消灯:FIXしています。
点滅:補正データは受信しているがFixしていません。
点灯:補正データが来ていないなどです。
GEOジオフェンス設定した円の範囲に入った時に点灯もしくは消灯します。
どちらにするかはユーザが定義できます。

4.I2C用Groveコネクタでの接続

ボードにはI2C用のGroveコネクタを搭載しています。
最近はGroveコネクタを搭載しているマイコンボードも増えていて、半田付けしなくてもケーブルを接続するだけで使う事ができます。
次の画像はスイッチサイエンスのESPr Branchと接続した例です。

この接続では、次の簡単なコードで動作確認を行う事ができます。
実行するとZED-F9PからのNMEAセンテンスがシリアルモニタに表示されます。

Arduino IDE用ソースコード

#include <Wire.h>
#define MAX 256
char buff[MAX];

void setup() {
	// serial
	Serial.begin(115200);
	Serial.printf("i2c test start\r\n");    

	// I2C
	Wire.begin(19,21);	// SDA:19,SCL:21 Switch Science Espr developer
}

void loop() {
	byte bytes[2];
	int nret = i2cRead( 0x42, 0xFD, 2, (char*) bytes, 2 );
	if ( nret != 2 ) return;
	
	int numBytes = bytes[0] * 256 + bytes[1];
	if ( numBytes >= MAX ) numBytes = MAX - 1;
	if ( numBytes > 0 ){
		nret = i2cRead( 0x42, 0xFF, numBytes, buff, MAX-1 );
		if ( nret > 0 ){
			buff[ nret ] = '\0';
			Serial.printf( buff );
		}
	}
}
int i2cRead( int address, int registerNum, int numBytes, char* buffer, int maxBytes )
{
	int nret;
	if ( registerNum >= 0 ){
		Wire.beginTransmission( address );
		Wire.write( registerNum );
		Wire.endTransmission(false);
	}
	Wire.requestFrom( address, numBytes );
	int bytes = Wire.available();
	if ( bytes > maxBytes ) bytes = maxBytes;
	if ( bytes == 0 ) nret = 0;
	else {
		for( int i=0; i < bytes; i++ ){
			buffer[i] = Wire.read();
		}
		nret = bytes;
	}
	return nret;
}

i2C用のGroveコネクタの電源や信号の電圧は3.3Vと5Vの2種類あります。
このボードではどちらでも使えるようにGroveコネクタの電源端子にはDC-DCコンバータを入れてあります。
電圧が5V以下の場合はDC-DCコンバータが働いて5Vに昇圧した後、低雑音レギュレータで3.3Vにし、ZED-F9Pに供給しています。

5.外部接続用ピンヘッダ

基板には11ピン(JP4)と7ピンのピンヘッダ(JP3)用端子があり、マイコン等とZED-F9Pを直接接続できます。

11ピン(JP4)

番号基板上の符号項目入出力内容
1GNDグラウンド入出力グラウンド
2V5V電源入出力約5Vの電源の入出力端子
3TXTX出力ZED-F9PのTXD/SPI_MISO端子
4RXRX入力ZED-F9PのRXD/SPI_MOSI端子
5SDASDA入出力ZED-F9PのSDA/SPI_CS_N端子
6 SCL SCL 入力ZED-F9PのSCL/SPI_CLK端子
7RDYTX_READY出力ZED-F9PのTX_READY端子
8RSTRESET入力ZED-F9PのRESET_N端子
9INTEXTINT入力ZED-F9PのEXTINT端子
10TPSTIMEPULSE出力ZED-F9PのTIMEPULSE端子
11SAFSAFEBOOT入力ZED-F9PのSAFEBOOT_N端子

7ピン(JP3)

番号基板上の符号項目入出力内容
1 GND グラウンド 入出力 グラウンド
2PWR電源入力1.8~4Vの電源の入力端子
3 V5V電源入出力4V~5Vの電源の入出力端子
4GEOGEO_STAT出力ZED-F9PのGEO_STATI端子
5RTKRTK_STAT出力ZED-F9PのRTK_STAT端子
6RX2RX2入力ZED-F9PのRX2端子
7TX2TX2出力ZED-F9PのTX2端子

6.電源供給

USBコネクタまたはGroveコネクタによる接続では電源電圧は気にしなくていいのですが、ピンヘッダでマイコン等と接続する際は電圧により接続する端子が異なります。

供給電圧接続端子説明
1.8~約4VPWRDC-DCコンバータで5Vに昇圧し、ダイオードを通してV5Vに供給されます。
約4V~5VV5Vダイオードを通して、ZED-F9P用の3.3Vレギュレータに接続されます。

7.SPIでの接続

外部接続用ピンヘッダとマイコンをSPIインターフェースで接続する場合は基板上での半田付けが必要です。
基板にあるSJ1の端子をショートする事により、ZED-F9PのSPI端子が有効になります。

8.その他

8.1 資料

回路図
2周波RTKモジュール u-blox ZED-F9Pの設定方法
ZED-F9PをUSB接続した時の問題
ZED-F9Pデータシート
ZED-F9P Integration Manual
ZED-F9P Interface Description
ZED-F9PのTX_READYピン

9.保証について

この製品の保証期間は1年で、不具合があった場合は無償で修理もしくは交換致します。
但し、ピンヘッダーを通して電源供給やマイコンとの接続を行った場合、使用状況によっては保証できませんので接続には十分ご注意下さい。