Public Lab Research note

U-blox GPS board

by cfastie | March 31, 2017 23:09 31 Mar 23:09 | #14074 | #14074

Above: I walked this loop which is about two miles long. The route in the upper and upper left part of the image is in a steep valley where reception from many GPS satellites could be blocked.

I have been working on a data logger to record GPS location and altitude information and data from other sensors. My goal is to fly the logger on a KAP or balloon rig to document the location and environment where each photo is taken. I have been using a GPS board from Adafruit which was handy because they have good online documentation about how it works. But it costs $40 which makes the parts for the logger as expensive as some commercial GPS loggers. So I ordered one of cheapest GPS boards I could find on eBay to see if it was an acceptable substitute.

Above: The Adafruit Ultimate GPS Breakout Board (left) costs $40 and performs well. The u-blox Neo-7M (right) costs less than $15. The square antenna on the u-blox is considerably bigger than the Adafruit antenna. I guess that's a good thing.

I didn't know anything about the u-blox Neo-7M GPS board I ordered. I just picked one that an eBay seller wanted to mail to me from China. I did not expect it to be a drop-in replacement for the friendly Adafruit board, but it is. I swapped out the Adafruit board on my existing logger, turned on the power, and it started writing GPS data to the microSD card. I didn't make any changes to the sketch on the Arduino Nano. This little success turned out to be a lot luckier than it seems because unlike the Adafruit board, the u-blox board runs on 3 volts, not the 5 volts supplied by my data logger. But I don't think any damage was done even during a hour long field test. [Update: The u-blox NEO-7M board can be powered with either 3.3 or 5 volts. See the third comment below.]

To see whether the data from the u-blox board were any good, I took a walk with my Garmin GPSmap76CSx and my phone running the Geo Tracker app. All three devices were recording new GPS data about every four seconds. The antennae of the u-blox and Garmin were exposed on my backpack and the phone was in my coat pocket.

Above: This Google Earth animation of the route was made with the help of a utility here.

In general it appears that the new GPS board is about as good as any other GPS device I have used. Three tracks were recorded and differed from each other by as much as 100 feet for short sections, but that was mostly when I was in a steep valley where satellite reception should be poor. The u-blox board produced results which appeared to be accurate when mapped in Google Earth.

Above: I walked in a circle around a couple of features that I knew could be seen in Google Earth. The u-blox board seems to have done a slightly better job recording my route than the other two devices.

It seems that the new GPS board is is as good or better than the Adafruit board. I learned that u-blox boards are popular with drone makers and very capable. There is a lot of information about them online and u-blox supplies very good documentation and a comprehensive utility for configuring the board. I have not used that utility, but a YouTuber has described how he used it to dramatically reduce the Arduino memory needed to get the data he needed. So the u-blox board seems to be a solid and well supported product.

Above: The elevation data from three GPS devices and a barometric pressure sensor (BMP180) on the SkyPod logger.

I was curious to compare the elevation results from the three devices. The results confirmed my findings from the last trial that the Garmin GPS receiver seems to base the elevation result it reports primarily on barometric pressure, not satellite GPS data. The Garmin GPSr has a barometer and a clever algorithm for automatically calibrating its elevation result using both pressure and GPS information. This is an important lesson for kite and balloon photographers who want to know the altitude of their camera. Especially for short flights, a $3.00 pressure sensor will provide much better altitude data than a GPS receiver.


Above: During the walk, the BMP pressure/temperature sensor was inside a backpack pocket and took a long time to equilibrate to the outside air temperature. The DHT22 sensor was exposed and gave noisier but presumably more accurate data on air conditions.

The next step is to replace the $8.00 Adafruit microSD board with a $1.00 version from an eBay seller in China. Then replace the two temperature/humidity/pressure sensors with a single BME280 sensor. Also, I really should remember next time to hook up the u-blox board to the 3 volt output on the Nano.


Hi Chris! That was good luck with the voltage tolerance! Based on what happened, do you think the u-blox is protected against higher voltages by converting excess voltage to heat? Thanks for such a thorough research note!

Is this a question? Click here to post it to the Questions page.

Reply to this comment...

I guess I demonstrated that the u-blox is protected someway or another from voltage over the stated 3.6v max. I was using four eneloop AAA (4 x 1.2v = 4.8v) which were maybe about half discharged (therefore, < 4.8v), and the Nano voltage regulator tried to make 5v with that. I don't know what the actual voltage was on the "5v" pin.

I have found that when running the u-blox from the 3V3 (3.3v) pin on the Nano, the Nano cannot be programmed via USB when the u-blox antenna is plugged in. The Arduino IDE cannot communicate with the Nano. If I unplug the antenna or if I supply battery power to the Nano, the communication via USB is normal. When the u-blox was (mistakenly) powered by the 5v pin on the Nano, USB communication was normal with the antenna connected. So the u-blox seems to work better on the 5v pin than on the 3V3 pin. The 3V3 pin does not seem to supply enough juice to keep everything happy when the antenna is powered up. But maybe that's because I fried something running the u-blox on 5v.

Gotta love Arduino.


Reply to this comment...

Update: The u-blox NEO-7M board can be powered with either 3.3 or 5 volts. The GPS module itself is not tolerant of more than 3.6 v, but the board has a voltage regulator so input to the board can be 3.3v or 5v. All of the eBay sellers that include specs say that the board is 3.3v, but that must be a mistaken repetition of information about the module. I found a few other sellers that clearly state that the board is either 3.3v or 5v.

That explains why the board was happy with 5 volts. It has been operating well on 3.3v, except for the programming issue. I just did an endurance test while running the board at 3.3v. Time to do some rewiring and repeat that test at 5v.


Reply to this comment...

Just a questions, How do I program in order for me to get the GPS to work with Arduino Nano or Arduino Pro Mini.

I had some trouble getting to work. I don't know how to write a program for Arduino to get the Nano or Pro Mini to work functionally.

Thank you, Damian

Reply to this comment...

Login to comment.