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秒毎に点滅します。 |
RTK | 赤 | RTKの状態 | 消灯: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)
番号 | 基板上の符号 | 項目 | 入出力 | 内容 |
1 | GND | グラウンド | 入出力 | グラウンド |
2 | V5V | 電源 | 入出力 | 約5Vの電源の入出力端子 |
3 | TX | TX | 出力 | ZED-F9PのTXD/SPI_MISO端子 |
4 | RX | RX | 入力 | ZED-F9PのRXD/SPI_MOSI端子 |
5 | SDA | SDA | 入出力 | ZED-F9PのSDA/SPI_CS_N端子 |
6 | SCL | SCL | 入力 | ZED-F9PのSCL/SPI_CLK端子 |
7 | RDY | TX_READY | 出力 | ZED-F9PのTX_READY端子 |
8 | RST | RESET | 入力 | ZED-F9PのRESET_N端子 |
9 | INT | EXTINT | 入力 | ZED-F9PのEXTINT端子 |
10 | TPS | TIMEPULSE | 出力 | ZED-F9PのTIMEPULSE端子 |
11 | SAF | SAFEBOOT | 入力 | ZED-F9PのSAFEBOOT_N端子 |
7ピン(JP3)
番号 | 基板上の符号 | 項目 | 入出力 | 内容 |
1 | GND | グラウンド | 入出力 | グラウンド |
2 | PWR | 電源 | 入力 | 1.8~4Vの電源の入力端子 |
3 | V5V | 電源 | 入出力 | 4V~5Vの電源の入出力端子 |
4 | GEO | GEO_STAT | 出力 | ZED-F9PのGEO_STATI端子 |
5 | RTK | RTK_STAT | 出力 | ZED-F9PのRTK_STAT端子 |
6 | RX2 | RX2 | 入力 | ZED-F9PのRX2端子 |
7 | TX2 | TX2 | 出力 | ZED-F9PのTX2端子 |
6.電源供給
USBコネクタまたはGroveコネクタによる接続では電源電圧は気にしなくていいのですが、ピンヘッダでマイコン等と接続する際は電圧により接続する端子が異なります。
供給電圧 | 接続端子 | 説明 |
1.8~約4V | PWR | DC-DCコンバータで5Vに昇圧し、ダイオードを通してV5Vに供給されます。 |
約4V~5V | V5V | ダイオードを通して、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ピン
8.2 Groveコネクタのピン配置
9.保証について
この製品の保証期間は1年で、不具合があった場合は無償で修理もしくは交換致します。
但し、ピンヘッダーを通して電源供給やマイコンとの接続を行った場合、使用状況によっては保証できませんので接続には十分ご注意下さい。