Maker.io main logo

MicroMod GNSS Carrier Board (ZED-F9P) Hookup Guide

60

2025-05-23 | By SparkFun Electronics

License: See Original Project GPS Arduino ESP32 MicroMod Qwiic

Courtesy of SparkFun

‎Guide by bboyho, Elias The Sparkiest

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.‎

 

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 GNSS Carrier Board (ZED-F9P) Wishlist

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.‎

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.‎

Note: If you want to try different GNSS antennas, the following antennas will work but are ‎limited to L1 frequencies so they will not enable the full L1/L2 capabilities of the ZED-F9P.

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.‎

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.‎

Tools

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

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_1

MicroMod Ecosystem

qwiic_2

Qwiic Connect System

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

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.‎

gps_3

What is GPS RTK?‎

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

guide_4

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.‎

hookup_5

GPS-RTK2 Hookup Guide

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.‎

bands_6

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.‎

board_7

MicroMod Processor General Pins

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

pins_8

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.‎

power_9

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.‎

batteries_10

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.‎

reset_11

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.‎

swd_12

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.‎

ports_13

Note: With the MicroMod M.2 connector, the ZED-F9P's UART1, UART2, SPI, I2C ports are ‎available without soldering! Other SparkFun ZED-F9P offerings have this capability, but only ‎after you solder hookup wires appropriately.‎

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.‎

usb_14

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.‎

i2c_15

The only I2C address for this and all u-Blox GPS products is 0x42, though each can have ‎their address changed through software.‎

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_16

Top View

bottom_17

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.‎

config_18

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).‎

spi_19

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.‎

antenna_20

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.‎

plane_21

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.‎

leds_22

Jumpers

Note: If this is your first time working with jumpers, check out the How to Work with Jumper ‎Pads and PCB Traces tutorial for more information.‎

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.‎

jumpers_23

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.‎

side_24

Note: The MEAS jumper has PTH pins. You will need to disconnect the PTH pads on the top ‎side of the board before you are able to measure the current from the bottom of the board ‎effectively.‎

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.‎

connect_25

Note: For those that need to connect a SMA connector to the PPS pin, the RTK-SMA includes ‎a footprint so that you can manually solder the connector to the board for your application. ‎The PPS output is helpful as a clock source correction when synchronizing equipment (not ‎‎1 Hz but in many MHz). The PPS output can be configured to output a very accurate clock ‎which scientists use to correct less accurate, but much faster clocks. To configure, you can ‎use the u-center to adjust The NEO-F9P's setting under View > Configuration View > TP ‎‎(TimePulse).

Hardware Pinout

  • GNSS ZED-F9P Carrier Pinout Table

table_26

  • MicroMod General Pinout Table

table_27

  • MicroMod General Pin Descriptions

table_28

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".‎

dimension_29

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_30

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!‎

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.‎

setup_31

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.‎

antenna_32

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.‎

outdoors_33

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.‎

plate_34

USB-C Cable

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

connector_35

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.‎

update_36

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.‎

Note: We support two versions of the SparkFun u-blox GNSS library. Version 2 and Version ‎‎3. Version 3 uses the u-blox Configuration Interface (VALSET and VALGET) to configure the ‎module, instead of the deprecated UBX-CFG messages. For modules like the F9 and M10, ‎we recommend upgrading to Version 3. However, older modules like the M8 do not support ‎the Configuration Interface. For those you will need to keep using Version 2 of the library. ‎We will continue to support both.‎

The SparkFun u-blox Arduino library can be downloaded with the Arduino library manager ‎by searching 'SparkFun u-blox GNSS v3' or you can grab the zip here from the GitHub ‎repository to manually install.‎

SparkFun u-blox Arduino Library v3 (ZIP)‎

Once you have the library installed checkout the various Basics 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.‎

  • Example7: Demonstrates how to increase the output rate from the default 1 per ‎second to many per second; up to 30Hz on some modules!‎

  • Example8: Older modules like the SAM-M8Q utilize an older protocol (version 18) ‎whereas the newer modules like the ZED-F9P deprecate some commands using the ‎latest protocol (version 27). This sketch shows how to query the module to get the ‎protocol version.‎

  • Example9: 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.‎

  • Example10: 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.‎

  • Example11: 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.‎

  • 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 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!‎

SparkFun u-blox GNSS Arduino Library: ZED-F9P

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.‎

build_37

How to Build a DIY GNSS Reference Station

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_38

Setting up a Rover Base RTK System

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

Not working as expected and need help?

If you need technical assistance and more information on a product that is not working as ‎you expected, we recommend heading on over to the SparkFun Technical Assistance page ‎for some initial troubleshooting.

SparkFun Technical Assistance Page

‎If you don't find what you need there, the SparkFun Forums are a great place to find and ask ‎for help. If this is your first visit, you'll need to create a Forum Account to search product ‎forums and post questions.

Create New Forum Account Log Into SparkFun Forums

Resources and Going Further

Ready to get hands-on with GPS?‎

We've got a page just for you! We'll walk you through the basics of how GPS works, the ‎hardware needed, and project tutorials to get you started.‎

Take me there!‎

gps_39

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:

Mfr Part # 17722
MICROMOD GNSS CARRIER ZED-F9P
SparkFun Electronics
$2,222.23
View More Details
Mfr Part # 16781
MICROMOD ESP32 PROCESSOR
SparkFun Electronics
$169.58
View More Details
Mfr Part # 16402
MICROMOD TEENSY PROCESSOR
SparkFun Electronics
$205.39
View More Details
Mfr Part # 16791
MICROMOD SAMD51 PROCESSOR
SparkFun Electronics
$156.00
View More Details
Mfr Part # 16401
MICROMOD ARTEMIS PROCESSOR
SparkFun Electronics
$150.32
View More Details
Mfr Part # 15192
GNSS MULTI-BAND MAGNETIC MOUNT A
SparkFun Electronics
$1,038.38
View More Details
Mfr Part # 15081
QWIIC CABLE KIT
SparkFun Electronics
$113.52
View More Details
Mfr Part # 15096
SPARKFUN SERIAL BASIC BREAKOUT -
SparkFun Electronics
Add all DigiKey Parts to Cart
Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.