SparkFun
SparkFun GPS-RTK Dead Reckoning pHAT for Raspberry Pi
· MPN: GPS-21305
The SparkFun GPS-RTK Dead Reckoning pHAT brings high-precision GNSS positioning with automotive dead reckoning to the Raspberry Pi. Built around the u-blox Z...
Get notified when back in stock
The SparkFun GPS-RTK Dead Reckoning pHAT brings high-precision GNSS positioning with automotive dead reckoning to the Raspberry Pi. Built around the u-blox ZED-F9R module, it fuses GNSS measurements with an integrated 3D IMU (accelerometer and gyroscope), wheel ticks, and a vehicle dynamics model to maintain accurate positioning even under poor signal conditions.
The 184-channel ZED-F9R receives GPS, GLONASS, Galileo, and BeiDou signals on L1 and L2 bands, achieving 10 mm horizontal accuracy with RTK corrections. Position updates run at up to 30 Hz, and dead reckoning maintains continuous positioning through tunnels, parking garages, and urban canyons where satellite signals are blocked or degraded.
Pre-soldered headers allow the pHAT to stack directly onto a Raspberry Pi or any single-board computer with a 2×20 GPIO header (including NVIDIA Jetson Nano and Google Coral). Communication uses the Pi's serial UART by default. A Qwiic (I²C) connector and additional 2.54 mm breakout pins are also available.
Key Features
- u-blox ZED-F9R Module – 184-channel multi-constellation GNSS receiver with integrated 3D IMU for dead reckoning
- 10 mm RTK Accuracy – Centimetre-level horizontal positioning with correction data (rover only; requires base station)
- Dead Reckoning – Continuous positioning through signal loss using sensor fusion
- 30 Hz Navigation Rate – High-rate position updates for real-time applications
- Dual-Band Reception – L1C/A and L2C for improved accuracy and faster convergence
- Pre-Soldered Headers – No soldering required; stacks directly onto the Pi GPIO header
- Onboard RTC Battery – Reduces time-to-first-fix from ~24 s (cold) to ~2 s (hot start)
- U.FL Antenna Connector – Use with an external active GNSS antenna
- Qwiic Connector – I²C interface for additional peripherals
Specifications
- Constellations – GPS, GLONASS, Galileo, BeiDou (concurrent)
- Horizontal Accuracy – 10 mm with RTK
- Velocity Accuracy – 0.5 m/s
- Heading Accuracy – 0.2°
- Time Pulse Accuracy – 30 ns
- Max Navigation Rate – 30 Hz
- Operational Limits – ≤ 4 G, 80 km altitude, 500 m/s velocity
- Protocols – NMEA, UBX, and RTCM over UART
- Voltage – 5 V or 3.3 V (all logic is 3.3 V)
- Current Draw – ~85–130 mA (varies with constellation tracking)
- Board Dimensions – 65.0 × 56.5 mm
- Weight – 20.7 g
Software Features
- Configurable via u-blox u-center (Windows)
- Geofencing, odometer, and spoofing detection
- External interrupt and pin control
- Low power mode
Ideal For
- Autonomous robotics and vehicle navigation
- Precision positioning in urban environments
- Fleet tracking with dead reckoning through tunnels and covered areas
- Raspberry Pi-based GNSS data logging
Package Contents
- 1× SparkFun GPS-RTK Dead Reckoning pHAT (v1.1)
Resources
Jargon buster
Plain-language definitions for the technical terms used above.
- Active GNSS antenna
- An active GNSS antenna has a built-in amplifier that needs power from the board. It can improve satellite signal reception, but you need to use an antenna that matches the board’s powered antenna connection.
- breakout
- A breakout board carries a small or fine-pitched component and brings its connections out to standard, breadboard- and header-friendly pins. Describing a part as a breakout means it can be wired into a project without soldering directly to the component's tiny contacts.
- Galileo
- Europe’s satellite navigation system. Galileo support can improve satellite availability and accuracy, especially when combined with GPS and other constellations.
- GLONASS
- Russia’s satellite navigation system. A receiver that can also use GLONASS has more satellites to choose from, which can improve positioning reliability when the sky view is partly blocked.
- GNSS
- GNSS stands for Global Navigation Satellite System, an umbrella term for satellite positioning networks such as GPS, GLONASS, Galileo and BeiDou. Receivers use these satellites to determine position, and high-precision units can output a steady stream of serial position data.
- GPIO
- General-purpose input/output pins are microcontroller pins you can set in software to read signals, switch devices on and off, or connect to peripherals. The number of GPIO pins matters because it limits how many buttons, LEDs, sensors, and other parts you can wire directly to the board.
- GPS
- The US satellite navigation system used by GNSS receivers to calculate position and time. Support for GPS is important because it is widely available and often used together with other constellations for more reliable positioning.
- Gyroscope
- A gyroscope measures rotation, such as how fast a board is turning around its X, Y, and Z axes. This matters for projects like gesture controls, balancing robots, and motion tracking where tilt or rotation changes need to be detected.
- Headers
- Rows of connector contacts on a fixed pitch (commonly 2.54 mm) used to link a board to a breadboard, jumper wires, or another board. They come as male pin headers and female socket headers; when a module ships with pre-soldered headers it can be used straight away, whereas bare pads require soldering the pins yourself.
- IMU
- An IMU (Inertial Measurement Unit) combines motion sensors, typically an accelerometer and gyroscope and sometimes a magnetometer, to measure movement and orientation. It can sense motion, tilt, vibration, rotation, and changes in direction, which is useful for tasks such as navigation, stabilisation, gesture detection, and asset tracking.
- L1C/A
- A GPS signal band used by many GNSS receivers for standard positioning. Support for this band helps determine which satellite signals the receiver can use and how well it can maintain a location fix.
- L2C
- A second GPS signal band used by dual-band GNSS receivers to improve precision and reduce errors caused by the atmosphere. It matters for RTK and high-accuracy applications because using two bands can produce faster and more reliable centimetre-level fixes.
- NVIDIA Jetson Nano
- The NVIDIA Jetson Nano is a compact NVIDIA computing module used for camera, robotics and machine-learning projects at the edge. A compatible carrier board can host the module, though the module itself is usually sold separately.
- pHAT
- A smaller add-on board format for Raspberry Pi, similar in idea to a HAT but usually not full-sized. It matters because pHAT compatibility can affect how neatly a board stacks or fits into a Raspberry Pi project.
- Qwiic
- Qwiic is a plug-in connector system for I2C devices that uses small 4-pin cables, so you can connect compatible sensors without soldering. It matters because your controller or adapter also needs Qwiic, or you will need a cable or breakout to wire it up.
- RTC
- A Real-Time Clock keeps track of time even when the main processor is asleep or powered down, usually with a small backup battery. It matters for data logging and tracking projects that need accurate timestamps.
- RTK
- Real-Time Kinematic positioning is a GNSS technique that uses correction data from a base station to greatly improve location accuracy. It matters if you need centimetre-level positioning for robotics, mapping, surveying, or tracking rather than ordinary metre-level GPS accuracy.
- single-board computer
- A complete computer built onto one circuit board, usually including the processor, memory, ports, and connectors. This matters because accessories like heatsinks must match the board’s layout and mounting holes to fit properly.
- u.FL
- u.FL is a tiny snap-on antenna connector often used on compact wireless boards. A board with u.FL usually needs an external antenna, which matters if the product will be inside an enclosure or needs better antenna placement.
- UART
- UART is a simple asynchronous serial interface that sends data over separate transmit and receive wires, usually labelled TX and RX, with both ends set to the same baud rate. It is a common way for microcontrollers and other serial devices to exchange data.
Find this product in
Brands
Sensors & Input
GPS-RTK Dead Reckoning pHAT Schematic
Schematic · 443.1 KB · Click any page to view full size
u-blox ZED-F9R Datasheet
Datasheet · 2.6 MB · Click any page to view full size
u-blox ZED-F9R Product Summary
Product Brief · 115.7 KB · Click any page to view full size
u-blox ZED-F9R Integration Manual
User Guide · 11.6 MB · Click any page to view full size
u-blox F9 Interface Description
User Guide · 3.3 MB · Click any page to view full size
u-blox ECCN Document
Compliance · 27.8 KB · Click any page to view full size
Supplier page — sparkfun.com
Supplier Description · 811.8 KB · Click any page to view full size
Resources & Downloads
Guides, code examples, and more
Source Code
Open-source libraries, firmware & example projects for this product
bab7abe
over 1 year ago
· 160 commits
- __pycache__ Create module_constants.cpython-38.pyc about 6 years ago
- docs Fixes readthedocs text on examples almost 6 years ago
- examples Updates licensing and adds better attribution in README and the core scripts (not just core) over 5 years ago
- ublox_gps Adds documentation and fixes field. almost 3 years ago
- .gitignore Update .gitignore over 5 years ago
- .readthedocs.yml Adds files for readthedocs, moves core scripts to their own folder almost 6 years ago
- DESCRIPTION.rst Sets up /doc files, moves main module script to parent directory over 6 years ago
- LICENSE Updates licensing and adds better attribution in README and the core scripts (not just core) over 5 years ago
- README.md Update README.md over 1 year ago
- setup.cfg Initial commit - file structure mostly almost 7 years ago
- setup.py Rolls version to v1.1.4 to reflect minor changes to library over 5 years ago
- test_script.py Adds files for readthedocs, moves core scripts to their own folder almost 6 years ago
f906b7a
over 2 years ago
· 86 commits
- Documents Update u-blox Integration Manual and Interface Descriptions for ZED-F9R-01B about 3 years ago
- Hardware Renames design files almost 4 years ago
- Production Adds new production files almost 4 years ago
- .gitignore Add file names in .gitignore to ignore about 6 years ago
- CONTRIBUTING.md Initial Commit over 6 years ago
- ISSUE_TEMPLATE.md Initial Commit over 6 years ago
- LICENSE.md Initial Commit over 6 years ago
- README.md Update README.md over 2 years ago