All Posts (29)

1"x1" Centimeter-Level Accuracy RTK Module

updated September 5, 2015

25mm x 25mm S2525F8-BD-RTK single-frequency cm-level accuracy RTK module is nearly ready.

Below is a test board that allows receiving base-station RTCM 3.0 data from Bluetooth 4.0 over smartphone's 3G/4G network running ntrip, the rover module receives global positioning satellite signal, performs on-board RTK processing to generated cm-level accuracy position data by itself, and output the result over Bluetooth 4.0 to other applications. 

Alternatively another carrier phase raw measurement module can be used in place of the base station for high-accuracy relatively positioning applications such as precision farming, grass cutting, or UAV multi-rotor precise landing.

A new evaluation board is being prepared with interface options of Bluetooth 4.0 or USB 2.0 or pin-header for both input and output. The UART pin-headers can be used to connect to other wireless interface modules when needed.

Dynamic Testing

Antenna: Harxon HX-CSX601A
Baseline: 1.7Km
Max Speed: 81.2Km/hr (due to speed limit of the road, not capability of the receiver)
Blue point: single solution
Yellow point: float solution
Green point: fixed solution

The dynamic test on the road, being able to maintain fixed solution at speed over 80Km/hr, shows promising result for precision navigation guidance beyond low speed agricultural and data collection applications.

We are setting up fixed IP for our base-station, to allow more robust RTCM 3.0 transmission over the Internet for longer baseline faster speed dynamic testing.

Aug 27, 2015

Below is test result we got earlier showing performance of our single frequency RTK receiver in terms of baseline distance. 

= = = = = = = = = = = = = = = = = = = =

The rain is pouring heavily today. Not knowing how single frequency RTK would perform under such condition, our engineer went out and did some testing.

Rover Antenna: HX-CSX601A
Test Environment: Road with open sky view

Static Testing with 4.5Km Baseline: It took slightly more than 4 minutes to get fixed solution; which is much longer time than earlier results on a sunny day.  

Dynamic Testing with 4.5Km Baseline: On section A the car drove on adjacent 3 lanes separated roughly 2 meters apart, on section B the car drove on the same lane on each pass. The result shows mostly float solution with small number of fixed solution. What's remarkable is that the 3 tracks on section A are distinctively on separate lanes roughly 2 meters apart running in parallel, and the 3 tracks on section B roughly overlap; a result similar to getting all fixed solution while actually it's float solution most of the time. It's operation under such non-ideal conditions that typical users will encounter and pushing to get good performance out of single-frequency RTK that we have been spending time optimizing.

Sep 5, 2015

We received a compact active helix antenna sample for high precision application. Incredibly when mounted on roof top for preliminary testing, it does receive signal very well and can get RTK fixed solution. This antenna + S2525F8-BD-RTK module + Bluetooth + battery configuration, receiving RTK correction data via NTRIP over smartphone's Internet connection and make the NMEA output position data available to other smartphone App, might be able to serve as a portable RTK receiver for anyone seeking 100X better position accuracy than what their smartphone offers (from meters to centimeters), or for data collection usage as mentioned in this interesting "democratization accuracy" article by Brent Jones.

More testing will be done later with this interesting antenna. Below is how it might fit with SMA connector device:

Read more…

I2C Improvement

Along with latest Windows and Linux Board Manager support update, the NavSpark I2C library has been improved to allow easier adoption of other vendor's example code when using their break board.

Using Adafruit's 10DOF break board and BNO055 break board, below list modification guidelines needed to make them work with NavSpark:

1. Change all #include <Wire.h> to #include <TwoWire.h>     click below image to zoom

2. Change all Wire. function calls to twMaster. function calls. This is due to NavSpark can act as I2C master or I2C slave.

3. In setup(), need to add initialization code: GnssConfig.init(), Serial.config(), twMaster.config()

4. Change all Serial.print(F(".....")) to Serial.print(".....")

That's all ! contains Adafruit 10DOF original example code and modified version, encompassing above described guidelines, that works with NavSpark.

Read more…

Window & Linux Board Manager Support

Board Manager support for Windows and Linux version Arduino is now available. Add following line to File --> Preferences --> Additional Board Manager URLs:

It still need compiler,, be manually installed under "c:\opt", or there will be compile error. We haven't figured out how to avoid manual install of this yet.

Existing 1.5.6 users already have this "c:\opt" contents do not need to reinstall. 

Hope this make things easier when updating library !

Read more…

L1 GPS RTK Availability

Some customers asked about availability of getting fixed RTK solution with NS-RAW. Although the answer may vary depending on location, we did a 12 hour experiment using host-based RTK receiver we are developing, it sheds some light on possible fixed solution availability using other RTK software.

For GPS-only, we see average of 73% fixed solution availability over 12 hour GPS satellite orbit period. The setup uses HX-CSX601A antenna.


Read more…

NS-RAW Firmware Update

An important firmware update has been released for NS-RAW fixing RTKLIB FIXED solution ocassionally dropping to FLOAT solution when running for a prolonged period of time. It's available here:

We just introduced a tiny 7mm x 7mm GNSS receiver module capable of running your NavSpark user customized code if it just uses I2C, SPI and UART:

Cheers !

Read more…

Why Is Speed Noisy at Higher Update Rate ?

SkyTraq's GPS/GNSS has fastest update rate in the low-cost consumer/industrial segment.

GPS modules has 50Hz maximum update rate.

NavSpark has 10Hz maximum update rate, reserving enough throughput for application development. Firmware at bottom of NavSpark product page on the web-store also supports 50Hz maximum update rate for NavSpark, 20Hz for NavSpark-BD and NavSpark-GL.

Often users want to use highest update rate regardless of application, and sometimes this gives unsatisfactory result. It's a misconception that highest update rate fits all applications; below link explains why. Hope it clarifies the concept and enables users to better choose update rate suitable for their application.

Read more…

More NS-T Programmable Frequency Testing

Although NS-T generated frequency lock accuracy is better than 10^-11, there is phase jitter. This experiment tries to clean up phase jitter with $2 PLL : PLL used has output minimum of 2X input frequency, so 10MHz input will have 20MHz output, 19.2MHz input will have 38.4MHz output. Jumping wire to test, there is severe ringing on the output signal, but will see phase jitter cleaned up. PLL properly mounted on PCB with impedance matched should greatly reduce ringing. If using this PLL, NS-T need to be programmed with 1/2 intended frequency, so PLL output will be 1X intended.

PLL Setup

Original 10MHz output having jitter

20MHz output after passing PLL

Original 19.2MHz output having jitter:

 38.4MHz output after passing PLL:

Read more…

1PPS Phase-Locked Programmable Frequency Output

If anyone is interested in 1PPS phase-locked programmable frequency output of NS-T precision timing mode receiver, below are videos for 10kHz, 100kHz, and 10MHz.

Key difference from above low-cost DDS generator module is: Low cost DDS generator uses 125MHz +/-20ppm crystal oscillators, synthesized 10MHz still has +/-20ppm variation, that is +/-2E-5 accuracy. NS-T generated 10MHz clock signal has measured pulse difference on order of +/-5 pulse over 16 hours for example, that is +/-1E-11 accuracy (5/3600/16/10e6) while GPS is operating. Thus frequency accuracy is quite different between these two product.

10kHz Output Phase-Locked to 1PPS

100kHz Output Phase-Locked to 1PPS

10MHz Output Phase-Locked to 1PPS

Read more…

Single Frequency Receiver RTK Result Comparison

We have been working on Beidou carrier phase raw measurement output for some time. Below is exciting test comparison showing for single frequency low-cost receiver, more satellites has higher ambiguity-resolved fixed rate. GPS L1 + Beidou B1 combination gets more satellites, helpful especially in urban environment. The test is done using not yet released RTKLIB with Beidou capability, collaborating with Tokyo university.

Receiver Module: S1722F8-BD-RAW

Antenna: HX-CSX601A (base and rover)

Post-Processing Software: RTKLIB

Test A: roof-top, baseline 13 meter, time = 5 minutes

Test B: baseline 800 meter, time = 15 minutes
There are 2 high buildings in front of rover, blocking some satellites in this direction.

At any time, GPS + Beidou combination has more satellites available in Asia Pacific region, giving higher ambiguity resolved fixed solution availability.


Some customers ask us for precision timing mode NavSpark. We added NS-T to web-store, It has additional 1Hz ~ 19.2MHz programmable frequency output phase-locked to 1PPS.

Read more…

UART1 to 900MHz Radio

Wanting to have a mobile wireless base station, I took a Hextronik 900MHz radio and connected it to my SD adapter board as follows:

Radio      SD Board

5v           5v Out

Gnd        Gnd

Rx          Tx1

It works fine talking wirelessly to my receiver radio plugged into USB on PC, but if I want to change any configuration on the board I have to plug in directly to the USB on the module. What is the reasoning behind not providing a Rx1?

Read more…

SD Card Library for Adapter Board

SD card library with example code is available here:

It is modified from:

The example code do below actions:

  1. Open a directory
  2. Write a text file
  3. Write a binary file
  4. Read text file and output to serial
  5. Read 8 byte from binary file and output to serial

To run example, from Arduino IDE Tools pull-down menu, Board option select correct NavSpark board, Processor option select LEON3 with GNSS library. Compile and upload to NavSpark.

When reset button clicked, will do above 5 actions. Since no debouncing implemented, could perform multiple times of above 5 actions with single button click.

After reset button clicked, Message Window show as below, printing out action result of 4 and 5.

Take a look at SD card, will see directory created. Without reset button debouncing, processor sees reset signal 2 times and created 2 directories in my case. 

Inside the directory, there are 2 files, a binary file and a text file.

Binary files is 0x00 ~ 0xFF written 2 times.

Text file is 20 lines of text.

The SD card library also work for Processor option of LEON3 without GNSS library.

Hope it will be useful for using Adapter Board SD card.

Read more…

FlexGPS : Flexible GPS Development Platform

From numerous requests in the past, we are now working on something that hopefully would address those wished items in a uniform way.

FlexGPS is a small 19mm x 19mm core module with below major functional parts:

SE4150 + Venus822 (A) GPS receiver: Capable of running standard 1Hz ~ 50Hz standard GPS firmware, Arduino programmable up to 10Hz, and running GPS raw measurement firmware up to 20Hz.

FXOS8700CQFS: 3-axis accelerometer and 3-axis magnetometer.

L3GD20: 3-axis gyroscope

BMP180: barometric pressure sensor and temperature sensor

W25Q80BL: 8Mbit SPI Flash Memory, capable of storing 125,000 points of position / velocity / time data.

A 2nd Venus822 (B) : Depending on how the users program this Venus822 chip, it may be possible to do below in a compact 19mm x 19mm size:

  1. High-rate sensor measurement and processing, forming a high-performance GPS + AHRS system
  2. Perform sensor-fusion of GPS and sensor data, forming a high-performance GPS aided INS + AHRS system
  3. Run raw measurement processing RTK software, forming a true RTK GPS receiver
  4. Run autopilot software, forming an autopilot board for robot and flying projects
  5. Do nothing, forming a GPS and 10-DOF sensor measurement board, with GPS having options of max 50Hz NMEA update rate, or max 20Hz raw measurement update rate, user selectable.

The two Venus822 and MEMS sensors are I2C connected. The two Venus822 are UART2 connected for passing of data. Both UART1 and SPI interface of the two Venus822 are available on the header pins. Additional GPIO pins of Venus822 (B) are also available on the header pins.

SE4150 GPS RFIC support dual RF input, one RF input with LNA for passive antenna connection, the other without LNA for active antenna connection, automatically switched from LNA path to non-LNA path when active antenna is connected. We are currently prototyping with GPS chip antenna. Hope could have acceptable results, and later include GPS chip antenna on-board FlexGPS, forming a complete GPS receiver on its own, and have external active antenna option via U.FL connector.


FlexGPS Adapter interfaces FlexGPS core module (the brain) to other hardware. It has below major functional parts:

PCA9685: 16-channel 12bit PWM generator, to drive motors.

PL2303: UART-to-USB bridge chip, for programming the two Venus822 chips or interface via USB port.

SC806: Lithium-Ion and Lithium-Polymer battery charger

nRF8001: Bluetooth low energy 4.0 connectivity chip, for wireless control from BLE4.0 capable smartphone and tablet devices.

The IO_SEL jumper determines whether UART1 of the two Venus822 go to header pins or to PL2303 USB; AB_SEL jumper further determines which of the Venus822 is connected to PL2303. BOOT_SELA and BOOT_SELB are for putting Venus822 in ROM recovery mode when programming if needed, as for NavSpark.

Raspberry Pi Adapter interfaces FlexGPS core module or NavSpark to Raspberry Pi, when using either one as GPS sensor board. It has below major functional parts:

PCA9685: 16-channel 12bit PWM generator, to drive motors.

PL2303: UART-to-USB bridge chip, for programming the two Venus822 chips.

Arduino Due Adapter interfaces FlexGPS core module or NavSpark to Arduino Due, when using either one as GPS sensor board. It has below major functional parts:

PCA9685: 16-channel 12bit PWM generator, to drive motors.

PL2303: UART-to-USB bridge chip, for programming the two Venus822 chips.

We are in early stage of the design, let us know if we missed something. Comments and suggestion welcome !

Reminder: Latest firmware downloadable from the NavSpark webstore already supports maximum update rate of 50Hz for NavSpark, and 20Hz for NavSpark-BD, NavSpark-GL, NS-RAW. Arduino GNSS library kept at 10Hz to have enough throughput for user programming.

Read more…

Shipping of NavSpark perk for backers that didn't choose FedEx shipping, we used postal air mail to deliver. Our logic for not choosing registered postal air mail is that someone must be at the receiving place for registered mail delivery, or the recipient will need to go to the post office during weekday to pick it up, which might be troublesome for working singles.

As a few backers seem not have received NavSpark yet, we are re-assessing our shipping method for future web-store shipments, whether to use registered postal air mail so that it will arrive either at customer's designated place or at their local post office. Or stay with regular postal air mail that don't require someone at shipping address to receive, but may have very slight chance of getting lost at the other end.

Comments welcome. Thank you.

Read more…