D9CX1はu-bloxのQZSS(みちびき)のL6バンド受信用IC「NEO-D9C」を搭載していて、CLASやMADOCAの補正データを受信する事ができます。
受信した補正データをZED-F9Pに転送すればセンチメータ精度の測位が可能となります。
次の画像はその外観ですが、GNSSアンテナ接続用のSMAコネクタと、RFスプリッタからの分配出力のMCXコネクタ、I2C用Groveコネクタ、およびマイクロUSBコネクタが付いています。

1.アンテナ

この開発ボードにはL1,L2およびL6バンド(1278.75MHz)が受信できるアンテナが必要です。
当ショップで販売しているアンテナでは次のアンテナで受信確認ができています。
1.JCA228E
2.JCA228
3.GGB0710
4.HX-CSX601A
5.BT-345AJ

2.アンテナの接続

この開発ボードは通常はZED-F9Pが搭載されたモジュールと組み合わせて使用します。
その場合、アンテナからのケーブルはこの開発ボードのSMAコネクタに接続して下さい。
そして、この開発ボードのMCXコネクタに付属のMCX-SMAケーブルを接続し、ケーブルのSMAコネクタをZED-F9Pモジュールのアンテナコネクタに接続して下さい。
もし、ZED-F9PモジュールのアンテナコネクタがSMAコネクタでない場合は、別途変換コネクタをご用意して下さい。

この開発ボード単体で使用する場合や、ZED-F9Pモジュールとは別々のアンテナを使う場合は、アンテナへの電源供給が必要となります。
工場出荷時、アンテナへの電源供給ピンは、次の左側の画像のように、オープンの状態になっています。
その状態ではアンテナへは電源が供給されませんので、この開発ボード単体で使用する場合などでは、右側の画像のようにショートの状態にして下さい。

[ご注意]
スプリッタ出力のMCXコネクタとZED-F9Pモジュールのアンテナ端子を接続するとアンテナへの電源供給はZED-F9Pモジュール側から行なわれます。
もし、上記の電源供給ピンがショートの状態だと、電源供給が2つのモジュールから行なわれることになります。
最悪の場合、どちらかのモジュールが故障するかもしれませんので、ZED-F9Pモジュールと組み合わせて使用する場合は必ずオープンの状態でご使用下さい。

3.ZED-F9Pモジュールとの接続

この開発ボードで受信したデータはいくつかの通信方法でZED-F9Pモジュールに転送できます。

UARTによる転送

一番簡単で効率的な方法はUARTによる転送で、ZED-F9Pモジュールとは次の図の配線を行います。
実際の電源はZED-F9Pモジュールに接続し、その電源からD9CX1に電源を供給します。
D9CX1側の電源端子としては、ZED-F9Pモジュール側の電圧が4V以下の場合はPWR端子に接続し、4V以上の場合はV5V端子に接続して下さい。

通常は上記の接続で問題ないですが、u-bloxのNEO-D9CのマニュアルにはZED-F9PモジュールからNEO-D9Cに位置データを送るように書いてあります。NEO-D9Cでの衛星捕捉の時間を短縮するためですので、もしNEO-D9Cの衛星捕捉時間が長い場合はZED-F9PモジュールのTX2とD9CX1のRX2も接続して下さい。

USBによる転送

パソコン経由でデータ転送を行うには次の図のようにUSBケーブルで接続します。

パソコンでは転送のためのアプリが必要ですが、Windowsではu-bloxのu-centerが使えます。
u-centerの設定はu-centerを使った、NEO-D9C から ZED-F9PへのCLASデータ転送を御覧下さい。

I2Cによる転送

このボードにはGroveコネクタがありますので、ESPrなどのGroveコネクタを搭載しているマイコンとは半田付け無しで接続できます。
通信はI2Cで行います。
NEO-D9CのI2Cのアドレスは0x42(工場出荷時)で、ZED-F9Pのアドレスと競合するので、NEO-D9Cのアドレスをu-centerを使って別のアドレスに変更して下さい。

ESP32と接続した場合、次のコードで正常にFixする事が確認されています。NEO-D9Cのアドレスは0x41にしてあります。

#include <Wire.h>  

#define SAVE_BUFF_MAX 1024

#define D9C_ADDR 0x41
#define F9P_ADDR 0x42

char saveBuff[ SAVE_BUFF_MAX ];
int saveBuffBytes = 0;
int saveIndex;

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

    // I2C
	//Wire.begin();	// default
	Wire.begin(19,21);	// SDA:19,SCL:21 Switch Science Espr developer
	
	//Wire.setClock( 100000 );
	//Wire.setClock( 400000 );
	delay(3000);	// Short wait time cause error

}

void loop() {
	
	char buff[17];
	int bytes;

	// F9Pからのデータを表示
	Wire.beginTransmission(F9P_ADDR);
	Wire.write(0xFF);
	Wire.endTransmission(false);
	Wire.requestFrom(F9P_ADDR, 16, true);
	bytes = Wire.available();
	if ( bytes > 0 ){
		for( int i=0; i < bytes; i++ ){
			buff[i] = Wire.read();
		}
		buff[bytes] = '\0';
		if ( buff[0] != 0xff ) Serial.printf( buff );
	}

	// D9CからのデータをF9Pに転送
	Wire.beginTransmission(D9C_ADDR);
	Wire.write(0xFF);
	Wire.endTransmission(false);

	Wire.requestFrom(D9C_ADDR, 16, true);
	bytes = Wire.available();
	if ( bytes > 0 ){
		for( int i=0; i < bytes; i++ ){
			buff[i] = Wire.read();
		}
		Wire.beginTransmission(F9P_ADDR);
		for( int i=0; i < bytes; i++ ){
			Wire.write(buff[i]);
		}
		Wire.endTransmission(false);
	}
}

4.設定

ZED-F9Pモジュールの設定

CLASによる補正は、ZED-F9PのファームウェアのバージョンがHPG1.30以降で対応しています。
使用するZED-F9Pモジュールのバージョンを確認して、HPG1.30より前のバージョンの場合はファームウェアのバージョンアップを行って下さい。
バージョンアップの方法は「ZED-F9P ファームウェアのバージョンアップ」をご覧下さい。

ファームウェアの確認後、使う通信方法に関して次の設定を行って下さい。
1.UBXプロトコルの入力を可能にする。
2.UARTの場合、出力はUBXのみとする。

NEO-D9Cの設定

使う通信方法に関して、UBXプロトコルの出力を可能にして下さい。
UARTの場合はZED-F9Pモジュールのボーレートの値と同じ値に設定して下さい。
工場出荷時の設定ではZED-F9PモジュールのUARTボーレートは38400bpsです。

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

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

11ピン(JP1)

番号基板上の符号項目入出力内容
1GNDグラウンド入出力グラウンド
2V5V電源入出力約5Vの電源の入出力端子
3TXTX出力NEO-D9CのTXD1/SPI_MISO端子
4RXRX入力NEO-D9C のRXD1/SPI_MOSI端子
5SDASDA入出力NEO-D9C のSDA/SPI_CS_N端子
6 SCL SCL 入力NEO-D9C のSCL/SPI_SLK端子
7RV2RESERVE2出力NEO-D9C のANT_SHORT端子
8RSTRESET入力NEO-D9C のRESET_N端子
9INTEXTINT入力NEO-D9C のEXTINT端子
10RV1RESERVE2出力NEO-D9C のANT_DETECT端子
11SAFSAFEBOOT入力NEO-D9C のSAFEBOOT_N端子

7ピン(JP3)

番号基板上の符号項目入出力内容
1 GND グラウンド 入出力 グラウンド
2PWR電源入力1.8~4Vの電源の入力端子
3 V5V電源入出力4V~5Vの電源の入出力端子
4無接続
5無接続
6TX2TX2出力NEO-D9CのTXD2端子
7RX2RX2入力NEO-D9CのRXD2端子

6.電源供給

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

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

V5V端子に電源が供給されると、基板上の電源オンLEDが点灯します。

7.SPIでの接続

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

8.その他

8.1 資料

回路図
NEO-D9Cデータシート
NEO-D9C Integration Manual
NEO-D9C Interface Description

9.保証について

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