Steve August 14, 2020

You’ve built a brand new project, and it’s a wonderful little thing that’s out and about in the world. The only problem is, you need to know its location to a decent degree of accuracy. Thankfully, GPS is a thing! With an off-the-shelf module, it’s possible to get all the location data you could possibly need. But how do you go about it, and what parts are the right ones for your application? For the answers to these questions, read on!

All The Same, But Totally Different

Working with GPS may seem daunting, but thanks to the efforts of industry and individuals, these days, it’s remarkably straightforward. Most modules on the market all work in a similar way. They most commonly  communicate over a standard serial interface, usually at 9600 baud, though I2C and SPI interfaces are also available. The messaging format is also standardised, with data being output in the NMEA-0183 format. This standard is well-documented for those wishing to parse the data. However, for those truly in a hurry, it’s possible to find code for many microcontroller platforms that will do the work for you. Projects like NeoGPS, Adafruit GPS, and minmea will take an incoming serial data stream, and spit out all the geographic location data you could possibly ask for. So is a GPS just a GPS?

Depending on your application, you may require different things out of your GPS module. Fast-moving platforms relying on GPS to guide an autopilot will benefit from a fast update rate, while a passive location tracking device may do perfectly well updating just once per second. Accuracy requirements are varied, with some applications requiring resolution down to the centimeter range. There are also additional features that help in edge cases, like dead reckoning and multi-constellation fixes. A clear understanding of your use-case and budget are key to picking the right hardware for the job.

I Just Need To Know Roughly Where It Is!

For applications where you’re looking for accuracy down to a few meters at low update rates, a basic GPS module will do. Available for under $20, they generally offer refresh rates of 1-5 Hz, and few bells and whistles. For many projects, this is enough for indicating the location of a person, robot, or vehicle. Basic autopilots can also get by at these refresh rates.  Power draw of such modules is usually below 50mA, and communication is over serial.

Devices based on the GP-20U7 and the now-superseded uBlox NEO-6M fall into this range. Cheap and cheerful, they’re a great way to build your first GPS project on a budget.

I Need A Signal At All Times!

If losing a fix is unacceptable, or you’re trying to pull a lock in difficult urban environments, it pays to source a module capable of operating in such conditions. In these cases, features like external antenna connectors can help, allowing bigger antennas to be fitted. An important note is that the common PCB U.FL connectors are only rated for a handful of cycles, and break easily – so consider getting a U.FL to SMA pigtail to avoid this. Antennas come in many shapes and sizes, but most dedicated parts will be an improvement on the standard small ceramics that come with many modules.

A quality antenna with a dedicated ground plane can boost reception significantly. Source: Orolia

Getting an accurate location fix depends on having a clear signal from a multitude of satellites – so having more to choose from makes this easier. Modules that can also pick up signals from alternative constellations are more likely to “see” enough satellites to get a fix. With China’s BEIDOU, Europe’s Galileo, and Russia’s GLONASS systems in orbit, having a module that can pick up these additional signals can be a huge benefit when working in complex environments with limited view of the sky.

Sometimes, though, no matter what, you’re going to be out of reach of even a single satellite. Things like tunnels can make it impossible to get a fix. In these cases, modules that feature dead-reckoning come in handy. When signals drop out, the module uses onboard inertial measurement hardware to update the location fix until reception is resumed. This can make a big difference in usability, particularly for turn-by-turn guidance applications.

These added features can improve the availability of a fix, but come at a cost. Modules like the XA1110 and ublox NEO-M8U ship in the $50-100 range. However, for the price, they also often pack in additional interface options like USB-serial and I2C, along with higher update rates.

I Need Fast Updates!

Drone autopilots often benefit from faster update rates. Source: Krista Almanzan

If you’re building something that moves at rapid speeds, 5 Hz updates might be a little slow for your tastes. Faster modules update anywhere from 10Hz to 25Hz, providing much better guidance for whatever you’re building that might have cause to travel so quickly. Of course, if you’re building a cruise missile, you’re probably not shopping at Sparkfun, but hey, go off queen! These devices generally communicate at higher baud rate serial or I2C to provide quicker location updates.

Modules offering this capability can still be had fairly cheaply, falling anywhere from $20-100. Look out for units like the SAM-M9N or BN-880Q for your high-speed projects.

I Need Accuracy Down To The Centimeter!

For some applications, accuracy is everything. If you’re piloting a combine harvester and don’t wish it to drive through a fence, a fix down to the meter simply isn’t good enough. In these cases, receivers using Real Time Kinematics (RTK) technology are just the ticket. They pair the received satellite signals with local correction data sourced from a base station, ideally within a 10 km radius of their position.

RTK works by supplying local correction data from base stations to the mobile unit. Source: GPS for Land Surveyors

This data can be provided over the Internet or via a LoRa radio link, and allows the module to deliver a fix accurate down to the centimeter in ideal conditions. Some operators run base stations for public use, but it’s possible to run your own with the right hardware. Many high-end modules can be set up to act as a base station for other units operating in the area.

The cost of this accuracy is complexity and, of course, price. RTK-capable GPS modules come in at around the $200-300 mark, featuring modules like the NEO-M8P and ZED-F9P. A base station is also required to provide correction data, and you’ll have to provide your own if one isn’t available locally. You’ll need to get the data into the module too, either over the internet or other radio data link. Be sure to account for these requirements when costing the design!


We are blessed to have access to a wide variety of GPS modules aimed at the maker market, spanning a broad spectrum of capability and price. Where high performance once cost thousands of dollars and was only available at the industrial level, now it can be had for much less from a variety of retailers online. Use your project requirements as a guide, and set forth to complete your now location-aware project. As always, happy hacking!

Read More