Maker.io main logo

MicroMod GNSS Carrier Board (ZED-F9P) Hookup Guide

54

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:

制造商零件编号 17722
MICROMOD GNSS CARRIER ZED-F9P
SparkFun Electronics
制造商零件编号 16781
MICROMOD ESP32 PROCESSOR
SparkFun Electronics
制造商零件编号 16402
MICROMOD TEENSY PROCESSOR
SparkFun Electronics
制造商零件编号 16791
MICROMOD SAMD51 PROCESSOR
SparkFun Electronics
制造商零件编号 16401
MICROMOD ARTEMIS PROCESSOR
SparkFun Electronics
制造商零件编号 15192
GNSS MULTI-BAND MAGNETIC MOUNT A
SparkFun Electronics
制造商零件编号 15081
QWIIC CABLE KIT
SparkFun Electronics
制造商零件编号 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.