Contact Sales & After-Sales Service

Contact & Quotation

  • Inquire: Call 0086-755-23203480, or reach out via the form below/your sales contact to discuss our design, manufacturing, and assembly capabilities.
  • Quote: Email your PCB files to Sales@pcbsync.com (Preferred for large files) or submit online. We will contact you promptly. Please ensure your email is correct.
Drag & Drop Files, Choose Files to Upload You can upload up to 3 files.

Notes:
For PCB fabrication, we require PCB design file in Gerber RS-274X format (most preferred), *.PCB/DDB (Protel, inform your program version) format or *.BRD (Eagle) format. For PCB assembly, we require PCB design file in above mentioned format, drilling file and BOM. Click to download BOM template To avoid file missing, please include all files into one folder and compress it into .zip or .rar format.

Adafruit GPS Modules: Ultimate GPS & PA1010D Setup Guide

After working with dozens of GPS modules over the years, I’ve learned that not all positioning solutions are created equal. Some modules take forever to get a fix, others drift wildly, and many just can’t handle indoor environments. That’s why the Adafruit GPS lineup has become my go-to for projects ranging from high-altitude balloon trackers to vehicle data loggers.

This guide covers everything you need to know about the Adafruit Ultimate GPS breakout and the PA1010D mini module, including wiring, configuration, and real-world tips that tutorials often miss. Whether you’re building with Arduino, Raspberry Pi, or CircuitPython, you’ll find the setup details here.

Understanding the Adafruit GPS Module Lineup

Adafruit offers several GPS options, each targeting different use cases. The two most popular are the Ultimate GPS breakout (based on the MTK3339/PA1616S chipset) and the PA1010D mini module (MTK3333 chipset). Both deliver excellent performance, but their form factors and interfaces differ significantly.

Adafruit GPS Module Comparison

FeatureUltimate GPS BreakoutPA1010D Mini GPSUltimate GPS HAT
ChipsetMTK3339/PA1616SMTK3333MTK3339/PA1616D
Channels66 (22 tracking)99 (33 tracking)66 (22 tracking)
Update RateUp to 10 HzUp to 10 HzUp to 10 Hz
Sensitivity-165 dBm-165 dBm-165 dBm
InterfacesUARTUART + I2CUART (via Pi GPIO)
Size25.5mm x 35mm25mm x 25mmPi HAT form factor
Built-in AntennaYes (patch)Yes (patch)Yes (patch)
External AntennauFL connectorNouFL connector
Data Logging16 hours (LOCUS)No16 hours (LOCUS)
Power Consumption~20mA~30mA~25mA
Price Range~$30~$30~$45

The Ultimate GPS remains the workhorse for most projects—its built-in LOCUS datalogging stores 16 hours of position data without requiring an SD card. The PA1010D’s I2C interface makes it attractive for projects where UART pins are scarce or you’re already using I2C for other sensors.

Adafruit Ultimate GPS Features and Specifications

The Adafruit Ultimate GPS breakout earned its name through a combination of features that actually matter in real-world applications. The MTK3339 chipset provides reliable positioning with a -165 dBm tracking sensitivity—sensitive enough to work near windows in many buildings.

Ultimate GPS Technical Specifications

SpecificationValue
Position Accuracy3 meters (typical)
Velocity Accuracy0.1 m/s
Cold Start TTFF~32 seconds
Warm Start TTFF~1 second
Hot Start TTFF~1 second
Operating Voltage3.0-5.5V DC
Logic Levels3.3V (5V tolerant inputs)
Default Baud Rate9600 bps
NMEA OutputGGA, GSA, GSV, RMC, VTG
Operating Temperature-40°C to +85°C

The version 3 modules include a PPS (Pulse Per Second) output—a precise timing signal synchronized to GPS time. This proves invaluable for time-sensitive applications or syncing multiple devices. The PPS signal goes high for 50-100ms exactly once per second when the module has a fix.

Ultimate GPS Pinout Reference

PinFunctionNotes
VINPower Input3.0-5.5V DC, use clean supply
GNDGroundPower and signal ground
TXSerial Out3.3V logic, NMEA data output
RXSerial In5V tolerant, accepts commands
FIXFix IndicatorHigh when fix acquired
PPSPulse Per Second3.3V pulse, 1Hz when locked
ENEnablePull low to disable module
VBATBackup BatteryFor RTC, connect to coin cell
3.3VRegulator Output100mA available

Setting Up the Adafruit Ultimate GPS with Arduino

Getting the Adafruit Ultimate GPS running on Arduino takes about ten minutes if you follow the right steps. The module communicates via standard serial at 9600 baud by default, making it compatible with virtually any Arduino board.

Arduino Wiring for Ultimate GPS

GPS PinArduino UNOArduino MegaFeather M0/M4
VIN5V5V3.3V
GNDGNDGNDGND
TXPin 8 (Software RX)Pin 19 (RX1)RX (hardware)
RXPin 7 (Software TX)Pin 18 (TX1)TX (hardware)

For Arduino UNO and similar boards without spare hardware serial ports, the Adafruit GPS library uses SoftwareSerial on pins 7 and 8 by default. Boards with multiple hardware serial ports (Mega, Feather, Metro M4) should use hardware serial for better reliability at higher update rates.

Arduino Code Example

cpp

#include <Adafruit_GPS.h>#include <SoftwareSerial.h>SoftwareSerial mySerial(8, 7);  // RX, TXAdafruit_GPS GPS(&mySerial);void setup() {  Serial.begin(115200);  GPS.begin(9600);    // Output RMC and GGA sentences only  GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);  // Set 1Hz update rate  GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ);}void loop() {  char c = GPS.read();    if (GPS.newNMEAreceived()) {    if (GPS.parse(GPS.lastNMEA())) {      if (GPS.fix) {        Serial.print(“Location: “);        Serial.print(GPS.latitudeDegrees, 6);        Serial.print(“, “);        Serial.println(GPS.longitudeDegrees, 6);      }    }  }}

GPS HAT Setup for Raspberry Pi

The GPS HAT provides the cleanest integration for Raspberry Pi projects. It plugs directly onto the 40-pin GPIO header and uses the Pi’s hardware UART for communication. The tradeoff is that you lose console access over the serial pins—plan to use SSH or a monitor/keyboard for login.

Raspberry Pi Serial Configuration

Before using the GPS HAT, disable the serial console and enable the serial port hardware:

bash

sudo raspi-config# Navigate to: Interfacing Options → Serial Port# Login shell over serial: No# Serial port hardware enabled: Yes# Reboot when prompted

After rebooting, test raw GPS output:

bash

stty -F /dev/serial0 raw 9600 cs8 clocal -cstopbcat /dev/serial0

You should see NMEA sentences streaming if the module has power. The red LED blinks once per second while searching for satellites, then once every 15 seconds after acquiring a fix.

Installing gpsd for Raspberry Pi

The gpsd daemon provides a clean interface between your applications and the GPS hardware:

bash

sudo apt updatesudo apt install gpsd gpsd-clients# Disable the default systemd socketsudo systemctl stop gpsd.socketsudo systemctl disable gpsd.socket# Start gpsd manually pointing to serial portsudo gpsd /dev/serial0 -F /var/run/gpsd.sock# Test with cgps clientcgps

The cgps tool displays a text-based dashboard showing satellites, position, and fix quality. Press ‘q’ to exit.

PA1010D Mini GPS Module with I2C

The PA1010D offers something unique in Adafruit’s GPS lineup: I2C connectivity. This simplifies wiring significantly, especially on boards where you’re already using I2C for displays or sensors. The module occupies address 0x10 on the I2C bus.

PA1010D I2C Wiring

PA1010D PinArduinoRaspberry PiFeather
VIN5V3.3V3.3V
GNDGNDGNDGND
SDAA4 (SDA)GPIO 2 (SDA)SDA
SCLA5 (SCL)GPIO 3 (SCL)SCL

The STEMMA QT connector on the PA1010D makes solderless connections possible with compatible boards. Just plug in a STEMMA QT cable and you’re ready to go.

PA1010D Arduino I2C Example

cpp

#include <Adafruit_GPS.h>#include <Wire.h>Adafruit_GPS GPS(&Wire);void setup() {  Serial.begin(115200);  GPS.begin(0x10);  // I2C address    GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);  GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ);}void loop() {  char c = GPS.read();    if (GPS.newNMEAreceived()) {    if (GPS.parse(GPS.lastNMEA())) {      if (GPS.fix) {        Serial.print(“Lat: “);        Serial.print(GPS.latitudeDegrees, 6);        Serial.print(” Lon: “);        Serial.println(GPS.longitudeDegrees, 6);        Serial.print(“Altitude: “);        Serial.println(GPS.altitude);      }    }  }}

Understanding GPS NMEA Sentences

All Adafruit GPS modules output NMEA 0183 sentences—standardized text strings containing position, time, and satellite information. The two most useful sentences are GPRMC and GPGGA.

NMEA Sentence Quick Reference

SentenceContainsUse Case
$GPRMCTime, date, position, speed, courseGeneral navigation
$GPGGATime, position, altitude, fix quality, satellitesAltitude-critical applications
$GPGSADOP values, active satellitesFix quality assessment
$GPGSVSatellites in view, signal strengthDebugging reception
$GPVTGSpeed and course over groundVehicle tracking

Parsing GPRMC Sentence

A typical GPRMC sentence looks like this:

$GPRMC,194530.000,A,4042.6142,N,07400.4168,W,0.12,309.62,120525,,,A*72

FieldValueMeaning
194530.00019:45:30.000UTC time
AActiveFix status (V=void/invalid)
4042.6142,N40°42.6142’NLatitude
07400.4168,W74°00.4168’WLongitude
0.120.12 knotsSpeed over ground
309.62309.62°Course over ground
120525May 12, 2025Date (DDMMYY)

Note that coordinates are in degrees and decimal minutes, not decimal degrees. To convert 4042.6142 to decimal degrees: 40 + (42.6142 / 60) = 40.71024°.

Backup Battery and Warm Start

Both the Ultimate GPS and GPS HAT include a footprint for a CR1220 coin cell. This backup battery powers the real-time clock when main power is removed, enabling warm starts that acquire a fix in about one second instead of 30+ seconds for a cold start.

Backup Battery Installation

For v3 modules (current production), simply insert the CR1220 battery—a built-in diode prevents backfeeding. Older v1/v2 modules require cutting a trace on the PCB before installing the battery:

  1. Locate the RTC solder jumper on the back
  2. Cut the trace between the two pads with a hobby knife
  3. Verify continuity is broken with a multimeter
  4. Insert CR1220 battery

The backup circuit draws only 7µA, so a CR1220 (40mAh) lasts approximately 240 days of continuous backup operation.

External Antenna Options

The built-in patch antenna works well outdoors with a clear sky view. For indoor installations or enclosures, an external active antenna dramatically improves reception. The Ultimate GPS and GPS HAT include a uFL connector for this purpose.

External Antenna Setup

ComponentPurpose
Active GPS Antenna3-5V, SMA connector, ~15-25mA draw
uFL to SMA AdapterConnects module to antenna
Antenna Ground PlaneImproves reception if antenna is isolated

Active antennas include a built-in LNA (Low Noise Amplifier) and require power. The GPS module provides this automatically through the antenna connection. Passive antennas don’t require power but provide less gain.

Troubleshooting Common GPS Issues

No Fix After Extended Time

GPS modules need a clear view of the sky. If the red LED keeps blinking at 1Hz after several minutes:

  1. Move outdoors or near a window with sky visibility
  2. Ensure the antenna points upward (patch side up)
  3. Check for sources of RF interference nearby
  4. Verify power supply is stable and adequate

NMEA Data But No Position

If you see NMEA sentences with empty fields (commas with no data between them), the module is working but hasn’t acquired enough satellites. Fields populate as satellites are tracked.

Incorrect Position Reading

A common mistake is misinterpreting the coordinate format. GPS outputs degrees and decimal minutes (DDMM.MMMM), not decimal degrees. Dividing the minutes portion by 60 and adding to degrees gives decimal degrees suitable for mapping applications.

Essential Resources and Downloads

ResourceURLDescription
Ultimate GPS Tutoriallearn.adafruit.com/adafruit-ultimate-gpsComplete guide with examples
PA1010D Tutoriallearn.adafruit.com/adafruit-mini-gps-pa1010d-moduleI2C and UART setup
GPS HAT Tutoriallearn.adafruit.com/adafruit-ultimate-gps-hat-for-raspberry-piRaspberry Pi setup
Adafruit GPS Librarygithub.com/adafruit/Adafruit_GPSArduino library
CircuitPython GPS Librarygithub.com/adafruit/Adafruit_CircuitPython_GPSPython library
MTK3339 Datasheetcdn-shop.adafruit.com/datasheets/PA6H.pdfModule specifications
PMTK Command Referencecdn-shop.adafruit.com/datasheets/PMTK_A11.pdfConfiguration commands
gpsd Projectgpsd.gitlab.io/gpsdLinux GPS daemon

Frequently Asked Questions

How long does it take for the Adafruit Ultimate GPS to get a fix?

Cold start (no backup battery, first use) takes approximately 32 seconds under ideal conditions with clear sky visibility. Warm start (backup battery installed, used within past few hours) takes about 1 second. Hot start (module briefly lost power) also takes approximately 1 second. Indoor environments or urban canyons with limited sky view can extend these times significantly—sometimes to several minutes or more.

Can I use the Adafruit GPS modules for high-altitude balloon projects?

Yes, the Ultimate GPS works well for high-altitude balloon (HAB) projects. Users have reported successful operation up to approximately 32km altitude. The GPS theoretically supports up to 40km, though this approaches COCOM limits that restrict civilian GPS above 18km and 515 m/s simultaneously. For HAB applications, ensure the module has clear antenna exposure and consider an external antenna for the payload enclosure.

What’s the difference between UART and I2C GPS modules?

UART (serial) modules like the Ultimate GPS require dedicated TX/RX pins and operate at a fixed baud rate (9600 default). I2C modules like the PA1010D share the I2C bus with other devices and use addressed communication. UART provides faster raw throughput and simpler parsing; I2C saves pins when you’re already using I2C peripherals. Performance is essentially identical for position accuracy and fix time.

Why does my GPS show a position that’s 5-10 meters off from my actual location?

Standard GPS accuracy is 3-5 meters under ideal conditions, but multipath reflections from buildings, atmospheric effects, and satellite geometry can increase error to 10+ meters. This is normal behavior. For higher accuracy, consider modules supporting SBAS (Satellite-Based Augmentation System) corrections, which can improve accuracy to 1-3 meters. The Adafruit modules support SBAS when correction signals are available in your region.

Can I increase the GPS update rate above 1Hz?

Yes, the Adafruit GPS modules support update rates up to 10Hz. Send the command GPS.sendCommand(PMTK_SET_NMEA_UPDATE_10HZ) in your code. However, higher rates generate more data—at 10Hz with full NMEA output, the 9600 baud default may not keep up. Either increase the baud rate to 57600 or reduce NMEA sentence output to only RMC. Higher update rates also increase power consumption proportionally.

Practical Applications for Adafruit GPS

The Adafruit GPS ecosystem supports a wide range of projects. Vehicle trackers benefit from the built-in LOCUS datalogging on the Ultimate GPS—16 hours of position data stored without an SD card. Drone projects appreciate the 10Hz update rate for responsive navigation. Time synchronization applications use the PPS output for microsecond-accurate timing.

For Raspberry Pi projects, the GPS HAT integrates cleanly while providing prototyping space for additional components. The combination of precision timing (via PPS) and accurate position makes it suitable for scientific data collection where both location and timestamp matter.

The PA1010D’s compact size and I2C interface fit perfectly into wearable projects or space-constrained enclosures. Its STEMMA QT connector enables rapid prototyping without soldering—plug in, write code, and iterate.

Whatever your application, proper antenna placement matters more than any other factor. Point the patch antenna at the sky, minimize obstructions, and give the module time to acquire satellites. Once locked, these modules deliver reliable positioning that rivals units costing several times more.

Leave a Reply

Your email address will not be published. Required fields are marked *

Contact Sales & After-Sales Service

Contact & Quotation

  • Inquire: Call 0086-755-23203480, or reach out via the form below/your sales contact to discuss our design, manufacturing, and assembly capabilities.

  • Quote: Email your PCB files to Sales@pcbsync.com (Preferred for large files) or submit online. We will contact you promptly. Please ensure your email is correct.

Drag & Drop Files, Choose Files to Upload You can upload up to 3 files.

Notes:
For PCB fabrication, we require PCB design file in Gerber RS-274X format (most preferred), *.PCB/DDB (Protel, inform your program version) format or *.BRD (Eagle) format. For PCB assembly, we require PCB design file in above mentioned format, drilling file and BOM. Click to download BOM template To avoid file missing, please include all files into one folder and compress it into .zip or .rar format.