MicroMod GNSS Carrier Board (ZED-F9P) Hookup Guide

Pages
Contributors: bboyho, Elias The Sparkiest
Favorited Favorite 0

Introduction

The SparkFun MicroMod GNSS Carrier Board (ZED-F9P) combines high-precision GPS and the flexibility of MicroMod onto one board. Utilizing u-blox's ZED-F9P module, MicroMod GNSS Carrier Board is capable of 10mm 3 dimensional accuracy. Yes, you read that right, these boards can output your X, Y, and Z location that is roughly the width of your fingernail. With great power comes a few requirements: high precision GPS requires a clear view of the sky (sorry, no indoor location) and a stream of correction data from an RTCM source. We’ll get into this more in a later section but as long as you have two ZED-F9P breakout boards, or access to an online correction source, your ZED-F9P can output lat, long, and altitude with centimeter grade accuracy.

SparkFun MicroMod GNSS Carrier Board (ZED-F9P)

SparkFun MicroMod GNSS Carrier Board (ZED-F9P)

GPS-17722
$324.95

Required Materials

To follow along with this tutorial, you will need the following materials at a minimum to get started. You may not need everything though depending on what you have. Add it to your cart, read through the guide, and adjust the cart as necessary. To get the most out of the ZED-F9P, you will need a correction source. Depending on your setup, you may need a second ZED-F9P or access to an online correction source.

MicroMod Processor Board

You'll need a Processor Board with the MicroMod GNSS Carrier Board. We recommend using the MicroMod ESP32 Processor to connect to the cloud. Depending on your setup, you may need a transceiver to pass the correction data.

SparkFun MicroMod Teensy Processor

SparkFun MicroMod Teensy Processor

DEV-16402
$21.50
4
SparkFun MicroMod SAMD51 Processor

SparkFun MicroMod SAMD51 Processor

DEV-16791
$18.95
1
SparkFun MicroMod ESP32 Processor

SparkFun MicroMod ESP32 Processor

WRL-16781
$16.95
1
SparkFun MicroMod Artemis Processor

SparkFun MicroMod Artemis Processor

DEV-16401
$14.95

Antenna

We recommend using a GNSS multi-band magnetic mount antenna for the full RF reception. The length of the antenna cable was also useful in mounting it.

GNSS Multi-Band Magnetic Mount Antenna - 5m (SMA)

GNSS Multi-Band Magnetic Mount Antenna - 5m (SMA)

GPS-15192
$72.95
1
GNSS Multi-Band L1/L2 Surveying Antenna (TNC) - TOP106

GNSS Multi-Band L1/L2 Surveying Antenna (TNC) - TOP106

GPS-17751
$133.95
9
GNSS  Multi-Band L1/L2 Helical Antenna (SMA) BT-560

GNSS Multi-Band L1/L2 Helical Antenna (SMA) BT-560

GPS-17383
$90.95
1
MagmaX2 Active Multiband GNSS Magnetic Mount Antenna - AA.200

MagmaX2 Active Multiband GNSS Magnetic Mount Antenna - AA.200

GPS-17108
$83.50

GPS Antenna Accessories

You can use the GPS antenna ground plate to improve your GPS antenna's performance. If you are using the GNSS Multi-Band L1/L2 Surveying Antenna (TNC) - TOP106, you'll need to grab the interface cable.

Interface Cable - SMA Male to TNC Male (300mm)

Interface Cable - SMA Male to TNC Male (300mm)

CAB-17833
$10.95
GPS Antenna Ground Plate

GPS Antenna Ground Plate

GPS-17519
$6.95

Accessories

At a minimum, you will need a USB C cable to power and program the boards. Depending on your application, you may want to grab a Qwiic cable to connect a Qwiic-enabled device.

SparkFun Qwiic Cable Kit

SparkFun Qwiic Cable Kit

KIT-15081
$8.95
13
USB 3.1 Cable A to C - 3 Foot

USB 3.1 Cable A to C - 3 Foot

CAB-14743
$5.50
3

Tools

You will need a screw driver to tighten the screw between the processor board and carrier board.

SparkFun Mini Screwdriver

SparkFun Mini Screwdriver

TOL-09146
$1.05
3

Suggested Reading

If you aren't familiar with the MicroMod ecosystem, we recommend reading here for an overview. We recommend reading here for an overview if you decide to take advantage of the Qwiic connector.

MicroMod Logo Qwiic Connect System
MicroMod EcosystemQwiic Connect System

If you aren’t familiar with the following concepts, we recommend checking out these tutorials before continuing.

I2C

An introduction to I2C, one of the main embedded communications protocols in use today.

Getting Started with U-Center for u-blox

Learn the tips and tricks to use the u-blox software tool to configure your GPS receiver.

Getting Started with MicroMod

Dive into the world of MicroMod - a compact interface to connect a microcontroller to various peripherals via the M.2 Connector!

MicroMod ESP32 Processor Board Hookup Guide

A short hookup guide to get started with the SparkFun MicroMod ESP32 Processor Board.

This tutorial is based on the GPS-RTK2's ZED-F9P. Make sure to check out the breakout boards for more information on GPS-RTK. Be sure to checkout our What is GPS RTK? tutorial.

What is GPS RTK?

September 14, 2018

Learn about the latest generation of GPS and GNSS receivers to get 14mm positional accuracy!

GPS-RTK Hookup Guide

September 13, 2018

Find out where you are! Use this easy hook-up guide to get up and running with the SparkFun high precision GPS-RTK NEO-M8P-2 breakout board.

GPS-RTK2 Hookup Guide

January 14, 2019

Get precision down to the diameter of a dime with the new ZED-F9P from u-blox.

Hardware Overview

One of the key differentiators between the ZED-F9P and almost all other low-cost RTK solutions is the ZED-F9P is capable of receiving both L1 and L2 bands.

L1 and L2 GNSS reception on the ZED-F9P

MicroMod Processor Board Socket

The MicroMod GNSS Carrier Board (ZED-F9P) includes a location for a MicroMod Processor Board. Here is where your chosen Processor Board will reside.

alt text

MicroMod Processor General Pins

Next to the MicroMod Processor Board are extra pins if you need to use a digital or analog pin.

alt text

Power

There are a few ways to power the board. Voltage is regulated down to 3.3V with the AP7361 voltage regulator. The square IC next to the USB C labeled as processor is where you will find the AP7361.

  • USB C Connector - You can connect a USB Type C cable from your computer's USB port to the board through either of the USB Type C connectors labeled as u-center and processor. There are protection diodes connected to the voltage lines so you can connect two USB cables at the same time to power the board. The AP7361 voltage regulator will regulate the 5V from the USB port down to 3.3V for the system voltage.
  • VIN - If you decide to connect to the VIN pin, we recommend a voltage between 3.3V to 6.0V. The AP7361 voltage regulator will regulate the voltage down to 3.3V for the system voltage.
  • 3V3 - If you decide to power the board through the 3.3V pin, you could connect a regulated 3.3V to this pin. Otherwise, you could use this to power any peripherals attached to the board.
  • Qwiic Connector - The Qwiic connector connects to 3.3V and GND to power any Qwiic-enabled devices. Depending on your application, you could connect a regulated 3.3V through this port as well.
  • GND - Of course, you'll need to connect the ground plane to your power source. This pin is available should you decide to power the board through the any of the PTH pins.

alt text

Backup Batteries

There are two built-in backup batteries (ML414H) on the board. The backup battery has a 1mAh capacity and requires 20 minute to charge. The battery near the SMA connector is for the Processor Board's RTC and helps keep the RTC running when the external power is removed. Depending on the processor, it may not be connected.

alt text

The other one that is closest to the USB C connector labeled as u-center is for the ZED-F9P module. The rechargeable battery maintains the battery backed RAM (BBR) on the GNSS module. This allows for much faster position locks (a.k.a. hot start). The BBR is also used for module configuration retention. The battery is automatically trickle charged when power is applied and should maintain settings and GNSS orbit data for up to two weeks without power.

Reset and Boot Buttons

The reset button will reset the processor. The boot button will put the processor into a special boot mode. Depending on the processor board, this boot pin may not be connected.

alt text

SWD Programming Pins

For advanced users, we broke out the SWD programming pins to connect to a MicroMod Processor Board. Note that this is not populated so you will need a compatible header and compatible JTAG programmer to connect.

alt text

Communication Ports

The ZED-F9P is unique in that it has five communication ports which are all active simultaneously. You can read NMEA data over I2C while you send configuration commands over the UART and vice/versa. The only limit is that the SPI pins are mapped onto the I2C and UART pins so it’s either SPI or I2C+UART. The USB port is available at all times.

alt text

USB

As stated earlier, there are two USB ports: one for u-center and another for processor. The USB C connector labeled as u-center makes it easy to connect the ZED-F9P to u-center for configuration and quick viewing of NMEA sentences. It is also possible to connect a Raspberry Pi or other single board computer over USB. The ZED-F9P enumerates as a serial COM port and it is a separate serial port from the UART interface. See Getting Started with U-Center for more information about getting the USB port to be a serial COM port. The USB connector labeled as processor is available to program your MicroMod Processor Board. Make sure to check your respective Processor Board to install the USB-to-serial drivers.

alt text

A 3.3V regulator is provided to regulate the 5V USB down to 3.3V the module requires. External 5V can be applied or a direct feed of 3.3V can be provided. Note that if you’re provide the board with 3.3V directly it should be a clean supply with minimal noise (less than 50mV VPP ripple is ideal for precision locating).

The 3.3V regulator is capable of sourcing 600mA from a 5V input and the USB C connection is capable of sourcing 2A.

I2C (a.k.a DDC)

The u-blox ZED-F9P has a “DDC” port which is really just an I2C port (without all the fuss of trademark issues). These pins are shared with the SPI pins. By default, the I2C pins are enabled. Be sure the SPI jumper on the rear of the board is open. The MicroMod GNSS Carrier Board also includes one Qwiic connector to make daisy chaining this GPS receiver with a large variety of I2C devices. Checkout Qwiic for your next project.

alt text

UART/Serial

The classic serial pins are available on the ZED-F9P but are shared with the SPI pins. By default, the UART pins are enabled. Be sure the SPI jumper on the rear of the board is open.

  • TXO/SDO = TX out from ZED-F9P
  • RXI/SDI = RX into ZED-F9P
Top View Bottom View

There is a second serial port (UART2) available on the ZED-F9P that is primarily used for RTCM3 correction data. By default, this port will automatically receive and parse incoming RTCM3 strings enabling RTK mode on the board. In addition to the TXO2/RXI2 pins we have added an additional ‘RTCM Correction’ port where we arranged the pins to match the industry standard serial connection (aka the 'FTDI' pinout). While we label this as "Bluetooth" on the back of the board, you can still connect any transceiver or serial-to-USB converter to this port. This pinout is compatible with our Bluetooth Mate and Serial Basic so you can send RTCM correction data from a cell phone or computer. Note that RTCM3 data can also be sent over I2C, UART1, SPI, or USB if desired.

The RTCM correction port (UART2) defaults to 38400bps serial but can be configured via software commands (checkout our Arduino library) or over USB using u-center. Keep in mind our Bluetooth Mate defaults to 115200bps. If you plan to use Bluetooth for correction data (we found it to be easiest), we recommend you increase this port speed to 115200bps using u-center. Additionally, but less often needed, the UART2 can be configured for NMEA output. In general, we don’t use UART2 for anything but RTCM correction data, so we recommend leaving the in/out protocols as RTCM.

UART2 configuration inside u-center

If you’ve got the ZED-F9P setup for base station mode (also called survey-in mode) the UART2 will output RTCM3 correction data. This means you can connect a radio or wired link to UART2 and the board will automatically send just RTCM bytes over the link (no NMEA data taking up bandwidth).

SPI

The ZED-F9P can also be configured for SPI communication. By default, the SPI port is disabled. To enable SPI close the SPI jumper on the rear of the board. Closing this jumper will disable the UART1 and I2C interfaces (UART2 will continue to operate as normal).

alt text

Antenna

The ZED-F9P requires a good quality GPS or GNSS (preferred) antenna. For a secure connection, we include an SMA female connector. To make the most out of the ZED-F9P, you'll need a multi-band GNSS antenna and an SMA male connector to mate.

alt text

Low-cost magnetic GPS/GNSS antennas can be used (checkout the u-blox white paper) but a 4” / 10cm metal disc is required to be placed under the antenna as a metal ground plane.

GPS Antenna with Ground Plane

LEDs

The board includes five status LEDs as indicated in the image below.

  • PPS: The pulse per second LED will illuminate each second once a position lock has been achieved.
  • GEO: The GEO LED can be configured to turn on/off for geofencing applications.
  • RTK: The RTK LED will be illuminated constantly upon power up. Once RTCM data has been successfully received it will begin to blink. This is a good way to see if the ZED-F9P is getting RTCM from various sources. Once an RTK fix is obtained, the LED will turn off.
  • VIN: The VIN LED will illuminate when there is voltage applied to the VIN pin or over USB.
  • 3V3: The power LED will illuminate when 3.3V is activated either over USB or via the Qwiic bus.

alt text

Jumpers

There are jumpers located throughout the board. Below are the jumpers on the top side of the board.

  • Bypass (BYP): By default, the BYP is left open. Adding a solder jumper bypasses the 2A resettable fuse on the back of the board should you decide to pull more than 2A from your USB source. Proceed with caution should you decide to bypass the jumper.
  • Enable (EN): By default, the EN jumper is left open. This jumper is connected to a processor board's GPIO pin. The processor board can control the ATP's voltage regulator. Depending on the processor, this may not be connected.
  • Current Measurement (MEAS): By default, the MEAS is closed. Cutting the jumper and soldering to the PTH pads will allows you to insert a current meter and precisely monitor the how much current your application is consuming.

alt text

Below are the jumpers on the bottom side of the board.

  • 3V3 LED: By default, the 3V3 LED is closed. Cutting this jumper will disable the LED when there is 3.3V.
  • VIN LED: By default, the VIN LED is closed. Cutting this jumper will disable the LED whenever there is an input voltage.
  • RTK: By default, the RTK is closed. Cutting this jumper will disable the RTK LED. This LED indicates when there is an RTK fix.
  • GEO: By default, the GEO is closed. Cutting this jumper will disable the GEO LED. This LED is used for geofencing applications.
  • PPS: By default, the PPS is closed. Cutting this jumper will disable the PPS LED whenever a position lock has been achieved.
  • SPI: By default, the SPI is open. Closing SPI with solder enables the SPI interface and disables the UART and I2C interfaces. USB will still function.

alt text

Control Pins

These pins are used for various extra control of the ZED-F9P:

  • TX READY: Transmit ready output pin. Can be configured using U-Center to indicate that the transmit buffer is full and ready to be transmitted. This is connected to D0 on the MicroMod Processor Board.
  • ZED RESET: Reset input pin. Pull this line low to reset the module.
  • SFBOOT: Safeboot input pin. This is required for firmware updates to the module and generally should not be used or connected.
  • INT: Interrupt input/output pin. Can be configured using U-Center to bring the module out of deep sleep or to output an interrupt for various module states.
  • PPS: Pulse-per-second output pin. Begins blinking at 1Hz when module gets basic GPS/GNSS position lock.

alt text

Hardware Pinout

AUDIO UART GPIO/BUS I2C SDIO SPI Dedicated
Function Bottom
Pin
   Top   
Pin
Function
(Not Connected) 75 GND
3.3V 74 73 G5 / BUS5
RTC_3V_BATT 72 71 G6 / BUS6
SPI_CS1# SDIO_DATA3 (I/O) 70 69 G7 / BUS7
SDIO_DATA2 (I/O) 68 67 G8
SDIO_DATA1 (I/O) 66 65 G9 ADC_D- CAM_HSYNC
SPI_CIPO1 SDIO_DATA0 (I/O) 64 63 G10 ADC_D+ CAM_VSYNC
SPI COPI1 SDIO_CMD (I/O) 62 61 SPI_CIPO (I)
SPI SCK1 SDIO_SCK (O) 60 59 SPI_COPI (O) LED_DAT
AUD_MCLK (O) 58 57 SPI_SCK (O) LED_CLK
CAM_MCLK PCM_OUT I2S_OUT AUD_OUT 56 55 SPI_CS#
CAM_PCLK PCM_IN I2S_IN AUD_IN 54 53 I2C_SCL1 (I/O)
PDM_DATA PCM_SYNC I2S_WS AUD_LRCLK 52 51 I2C_SDA1 (I/O)
PDM_CLK PCM_CLK I2S_SCK AUD_BCLK 50 49 BATT_VIN / 3 (I - ADC) (0 to 3.3V)
G4 / BUS4 48 47 PWM1
G3 / BUS3 46 45 GND
G2 / BUS2 44 43 CAN_TX
G1 / BUS1 42 41 CAN_RX
G0 / BUS0 40 39 GND
A1 38 37 USBHOST_D-
GND 36 35 USBHOST_D+
A0 34 33 GND
PWM0 32 31 Module Key
Module Key 30 29 Module Key
Module Key 28 27 Module Key
Module Key 26 25 Module Key
Module Key 24 23 SWDIO
UART_TX2 (O) 22 21 SWDCK
UART_RX2 (I) 20 19 UART_RX1 (I)
CAM_TRIG D1 18 17 UART_TX1 (0)
I2C_INT# 16 15 UART_CTS1 (I)
I2C_SCL (I/0) 14 13 UART_RTS1 (O)
I2C_SDA (I/0) 12 11 BOOT (I - Open Drain)
D0 10 9 USB_VIN
SWO G11 8 7 GND
RESET# (I - Open Drain) 6 5 USB_D-
3.3V_EN 4 3 USB_D+
3.3V 2 1 GND
Function Bottom
Pin
   Top   
Pin
Function
(Not Connected) 75 GND
3.3V 74 73
RTC_3V 72 71
70 69
66 65
64 63
62 61 TXO SDO
60 59 RXI SDI
58 57 SCL SCK
56 55 SDA CS
54 53
52 51
50 49 VIN/3
48 47
46 45 GND
44 43
42 41
D2 G0 40 39 GND
A1 38 37
GND 36 35
A0 34 33 GND
32 31
30 29
28 27
26 25
24 23 SWDIO
RXI2 22 21 SWDCK
TXO2 20 19 TXO SDO
D1 18 17 RXI SDI
INT 16 15
SCK SCL 14 13
CS SDA 12 11 BOOT
TX_READY 10 9 VIN
8 7 GND
RESET 6 5 USB_D-
3.3V_EN 4 3 USB_D+
3.3V 2 1 GND
Signal Group Signal I/O Description Voltage
Power 3.3V I 3.3V Source 3.3V
GND Return current path 0V
USB_VIN I USB VIN compliant to USB 2.0 specification. Connect to pins on processor board that require 5V for USB functionality 4.8-5.2V
RTC_3V_BATT I 3V provided by external coin cell or mini battery. Max draw=100μA. Connect to pins maintaining an RTC during power loss. Can be left NC. 3V
3.3V_EN O Controls the carrier board's main voltage regulator. Voltage above 1V will enable 3.3V power path. 3.3V
BATT_VIN/3 I Carrier board raw voltage over 3. 1/3 resistor divider is implemented on carrier board. Amplify the analog signal as needed for full 0-3.3V range 3.3V
Reset Reset I Input to processor. Open drain with pullup on processor board. Pulling low resets processor. 3.3V
Boot I Input to processor. Open drain with pullup on processor board. Pulling low puts processor into special boot mode. Can be left NC. 3.3V
USB USB_D± I/O USB Data ±. Differential serial data interface compliant to USB 2.0 specification. If UART is required for programming, USB± must be routed to a USB-to-serial conversion IC on the processor board.
USB Host USBHOST_D± I/O For processors that support USB Host Mode. USB Data±. Differential serial data interface compliant to USB 2.0 specification. Can be left NC.
CAN CAN_RX I CAN Bus receive data. 3.3V
CAN_TX O CAN Bus transmit data. 3.3V
UART UART_RX1 I UART receive data. 3.3V
UART_TX1 O UART transmit data. 3.3V
UART_RTS1 O UART ready to send. 3.3V
UART_CTS1 I UART clear to send. 3.3V
UART_RX2 I 2nd UART receive data. 3.3V
UART_TX2 O 2nd UART transmit data. 3.3V
I2C I2C_SCL I/O I2C clock. Open drain with pullup on carrier board. 3.3V
I2C_SDA I/O I2C data. Open drain with pullup on carrier board 3.3V
I2C_INT# I Interrupt notification from carrier board to processor. Open drain with pullup on carrier board. Active LOW 3.3V
I2C_SCL1 I/O 2nd I2C clock. Open drain with pullup on carrier board. 3.3V
I2C_SDA1 I/O 2nd I2C data. Open drain with pullup on carrier board. 3.3V
SPI SPI_COPI O SPI Controller Output/Peripheral Input. 3.3V
SPI_CIPO I SPI Controller Input/Peripheral Output. 3.3V
SPI_SCK O SPI Clock. 3.3V
SPI_CS# O SPI Chip Select. Active LOW. Can be routed to GPIO if hardware CS is unused. 3.3V
SPI/SDIO SPI_SCK1/SDIO_CLK O 2nd SPI Clock. Secondary use is SDIO Clock. 3.3V
SPI_COPI1/SDIO_CMD I/O 2nd SPI Controller Output/Peripheral Input. Secondary use is SDIO command interface. 3.3V
SPI_CIPO1/SDIO_DATA0 I/O 2nd SPI Peripheral Input/Controller Output. Secondary use is SDIO data exchange bit 0. 3.3V
SDIO_DATA1 I/O SDIO data exchange bit 1. 3.3V
SDIO_DATA2 I/O SDIO data exchange bit 2. 3.3V
SPI_CS1/SDIO_DATA3 I/O 2nd SPI Chip Select. Secondary use is SDIO data exchange bit 3. 3.3V
Audio AUD_MCLK O Audio master clock. 3.3V
AUD_OUT/PCM_OUT/I2S_OUT/CAM_MCLK O Audio data output. PCM synchronous data output. I2S serial data out. Camera master clock. 3.3V
AUD_IN/PCM_IN/I2S_IN/CAM_PCLK I Audio data input. PCM syncrhonous data input. I2S serial data in. Camera periphperal clock. 3.3V
AUD_LRCLK/PCM_SYNC/I2S_WS/PDM_DATA I/O Audio left/right clock. PCM syncrhonous data SYNC. I2S word select. PDM data. 3.3V
AUD_BCLK/PCM_CLK/I2S_CLK/PDM_CLK O Audio bit clock. PCM clock. I2S continuous serial clock. PDM clock. 3.3V
SWD SWDIO I/O Serial Wire Debug I/O. Connect if processor board supports SWD. Can be left NC. 3.3V
SWDCK I Serial Wire Debug clock. Connect if processor board supports SWD. Can be left NC. 3.3V
ADC A0 I Analog to digital converter 0. Amplify the analog signal as needed to enable full 0-3.3V range. 3.3V
A1 I Analog to digital converter 1. Amplify the analog signal as needed to enable full 0-3.3V range. 3.3V
PWM PWM0 O Pulse width modulated output 0. 3.3V
PWM1 O Pulse width modulated output 1. 3.3V
Digital D0 I/O General digital input/output pin. 3.3V
D1/CAM_TRIG I/O General digital input/output pin. Camera trigger. 3.3V
General/Bus G0/BUS0 I/O General purpose pins. Any unused processor pins should be assigned to Gx with ADC + PWM capable pins given priority (0, 1, 2, etc.) positions. The intent is to guarantee PWM, ADC and Digital Pin functionality on respective ADC/PWM/Digital pins. Gx pins do not guarantee ADC/PWM function. Alternative use is pins can support a fast read/write 8-bit or 4-bit wide bus. 3.3V
G1/BUS1 I/O 3.3V
G2/BUS2 I/O 3.3V
G3/BUS3 I/O 3.3V
G4/BUS4 I/O 3.3V
G5/BUS5 I/O 3.3V
G6/BUS6 I/O 3.3V
G7/BUS7 I/O 3.3V
G8 I/O General purpose pin 3.3V
G9/ADC_D-/CAM_HSYNC I/O Differential ADC input if available. Camera horizontal sync. 3.3V
G10/ADC_D+/CAM_VSYNC I/O Differential ADC input if available. Camera vertical sync. 3.3V
G11/SWO I/O General purpose pin. Serial Wire Output 3.3V

Board Dimension

The board is about 2.24"x2.60" and includes four mounting holes on each corner. If you include the length of the connectors sticking out from the edge of the board, the overall size of the board is about 2.52"x2.60".

alt text

Hardware Assembly

If you have not already, make sure to check out the Getting Started with MicroMod: Hardware Hookup for information on inserting your Processor Board to your Carrier Board. Just insert the MicroMod Processor Board at an angle of about 25° into the M.2 socket, push down, and secure with the screw.

Getting Started with MicroMod

October 21, 2020

Dive into the world of MicroMod - a compact interface to connect a microcontroller to various peripherals via the M.2 Connector!

At a minimum, your setup should look like the image below. In this case, we had the MicroMod ESP32 Processor Board secured in the M.2 connector.

alt text

GNSS Multi-band Antenna

As stated earlier, you'll need a multi-band antenna and a metal ground plate to make the best use of the ZED-F9P. Connect the two SMA connectors together and tighten the nut. You'll simply need the nut to be finger tight.

alt text

If you’re indoors you must run a SMA extension cable long enough to locate the antenna where it has a clear view of the sky. That means no trees, buildings, walls, vehicles, or concrete metally things between the antenna and the sky. Be sure to mount the antenna on a 4”/10cm metal ground plate to increase reception.

GPS antenna in grass

Of course, you could also attach the ground plate on a camera tripod. Just make sure to secure it with weights if there are heavy winds when using the ZED-F9P.

GPS Antenna with Ground Plane

USB-C Cable

To program and power the microcontroller, insert the USB-C cable into the USB-C connector labeled as Processor.

alt text

To update the ZED-F9P's firmware or configure the module, insert the USB-C cable into the USB-C connector labeled as u-center.

alt text

You can have both USB cables connected at the same time since there are protection diodes connected on the voltage lines.

Software Installation

Note: This example assumes you are using the latest version of the Arduino IDE on your desktop. If this is your first time using Arduino, please review our tutorial on installing the Arduino IDE. If you have not previously installed an Arduino library, please check out our installation guide.

The SparkFun u-blox Arduino library enables the reading of all positional datums as well as sending binary UBX configuration commands over I2C. This is helpful for configuring advanced modules like the ZED-F9P but also the NEO-M8P-2, SAM-M8Q and any other u-blox module that use the u-blox binary protocol.

The SparkFun u-blox Arduino library can be downloaded with the Arduino library manager by searching 'SparkFun u-blox GNSS' or you can grab the zip here from the GitHub repository:

Once you have the library installed checkout the various examples.

  • Example1: Read NMEA sentences over I2C using u-blox module SAM-M8Q, NEO-M8P, etc
  • Example2: Parse NMEA sentences using MicroNMEA library. This example also demonstrates how to overwrite the processNMEA function so that you can direct the incoming NMEA characters from the u-blox module to any library, display, radio, etc that you prefer.
  • Example3: Get latitude, longitude, altitude, and satellites in view (SIV). This example also demonstrates how to turn off NMEA messages being sent out of the I2C port. You’ll still see NMEA on UART1 and USB, but not on I2C. Using only UBX binary messages helps reduce I2C traffic and is a much lighter weight protocol.
  • Example4: Displays what type of a fix you have the two most common being none and a full 3D fix. This sketch also shows how to find out if you have an RTK fix and what type (floating vs. fixed).
  • Example5: Shows how to get the current speed, heading, and dilution of precision.
  • Example6: Demonstrates how to increase the output rate from the default 1 per second to many per second; up to 30Hz on some modules!
  • Example7: Older modules like the SAM-M8Q utilize an older protocol (version 18) whereas the newer modules like the ZED-F9P depricate some commands using the latest protocol (version 27). This sketch shows how to query the module to get the protocol version.
  • Example8: u-blox modules use I2C address 0x42 but this is configurable via software. This sketch will allow you to change the module’s I2C address.
  • Example9: Altitude is not a simple measurement. This sketch shows how to get both the ellipsoid based altitude and the MSL (mean sea level) based altitude readings.
  • Example10: Sometimes you just need to do a hard reset of the hardware. This sketch shows how to set your u-blox module back to factory default settings.
  • NEO-M8P
    • NEO-M8P Example1: Send UBX binary commands to enable RTCM sentences on u-blox NEO-M8P-2 module. This example is one of the steps required to setup the NEO-M8P as a base station. For more information have a look at the u-blox manual for setting up an RTK link.
    • NEO-M8P Example2: This example extends the previous example sending all the commands to the NEO-M8P-2 to have it operate as a base. Additionally the processRTCM function is exposed. This allows the user to overwrite the function to direct the RTCM bytes to whatever connection the user would like (radio, serial, etc).
    • NEO-M8P Example3: This is the same example as NEO-M8P's Example2. However, the data is sent to a serial LCD via I2C.
  • ZED-F9P
    • ZED-F9P Example1: This module is capable of high precision solutions. This sketch shows how to inspect the accuracy of the solution. It’s fun to watch our location accuracy drop into the millimeter scale.
    • ZED-F9P Example2: The ZED-F9P uses a new u-blox configuration system of VALGET/VALSET/VALDEL. This sketch demonstrates the basics of these methods.
    • ZED-F9P Example3: Setting up the ZED-F9P as a base station and outputting RTCM data.
    • ZED-F9P Example4: This is the same example as ZED-F9P's Example3. However, the data is sent to a serial LCD via I2C.

This SparkFun u-blox library really focuses on I2C because it's faster than serial and supports daisy-chaining. The library also uses the UBX protocol because it requires far less overhead than NMEA parsing and does not have the precision limitations that NMEA has.

Arduino Examples

Example 1: Positional Accuracy

As a quick test, we will be using the first example in the ZED-F9P folder (located in File Examples > SparkFun u-blox GNSS Arduino Library > ZED-F9P > Example1_GetPositionAccuracy).

If you have not already, select your Board (in this case the SparkFun ESP32 MicroMod), and associated COM port. Upload the code to the board and and set the Arduino Serial Monitor to 115200 baud. Give the ZED-F9P a few minutes to get a satellite lock. The GPS coordinates and the accuracy will be output in the Serial Monitor.

More Examples!

Now that you got it up and running, check out the other examples located in the ZED-F9P folder!

Of course, to get the most out of the ZED-F9P, you will need an RTCM correction source. Depending on your setup, you will probably need a second ZED-F9P for a correction source. The following project tutorials allow you to set up the ZED-F9P as a reference station or rover.

How to Build a DIY GNSS Reference Station

October 15, 2020

Learn how to affix a GNSS antenna, use PPP to get its ECEF coordinates and then broadcast your own RTCM data over the internet and cellular using NTRIP to increase rover reception to 10km!

Setting up a Rover Base RTK System

October 14, 2020

Getting GNSS RTCM correction data from a base to a rover is easy with a serial telemetry radio! We'll show you how to get your high precision RTK GNSS system setup and running.

Troubleshooting

Resources and Going Further

Now that you've successfully got your MicroMod GNSS Carrier Board (ZED-F9P) up and running, it's time to incorporate it into your own project! For more information, check out the resources below:

Need some inspiration for your next project? Check out some of these related tutorials:

Alphanumeric GPS Wall Clock

This is a GPS controlled clock - a clock you truly never have to set! Using GPS and some formulas, we figure out what day of the week and if we are in or out of daylight savings time.

ESP32 Thing Motion Shield Hookup Guide

Getting started with the ESP32 Thing Motion Shield to detect movements using the on-board LSM9DS1 IMU and adding a GPS receiver. Data can be easily logged by adding an microSD card to the slot.

GPS-RTK Hookup Guide

Find out where you are! Use this easy hook-up guide to get up and running with the SparkFun high precision GPS-RTK NEO-M8P-2 breakout board.

GNSS Timing Breakout - ZED-F9T (Qwiic) Hookup Guide

Follow this guide to add up to 5 nanosecond timing accuracy under clear skies with no external GNSS correction with the GNSS Timing Breakout - ZED-F9T (Qwiic).

Or check out this blog post for inspiration.