Global Navigation Satellite Systems


External Global Navigation Satellite Systems (GNSS), i.e. GPS, GLONASS and Galileo, are required for some flight controllers.

External GPS

From ArduPilot – What do I need, a GPS is required (66 channel MediaTek MT3329 GPS or Ublox LEA-6H GPS module).

Ublox NEO-6M
Ublox NEO-M8N

Data Sheet (link), Product Summary (link), Hardware integration (link), Protocol description (link)

There is the Ublox NEO-M8N GPS Module w/Compass for APM Pixhawk PX4 – ArduPilot FPV NEO-6M 7M for £19

Cheaper still (on offer, normally £10.75):

See also 3DR UBlox GPS + Compass Module (as recommended by Ardupilot).

What is the difference between the various Ublox modules?

From Differences between NEO 6M and LEA 6H GPS

Short answer : Lea-6H is better than Neo-6M.

10Hz vs 5 Hz refresh rate, acquires satellites faster, works with GLONASS not just GPS, and slightly better positional accuracy.

I have seen variations of the Lea-6H with larger batteries (allows it to “guess” where satellites are if it was recently powered up for faster acquisition), larger patch antennas (stronger signal reception) and ground shields (reduction of background EMI). These all add some weight penalty though for improved performance.

Really, unless you’re flying missions, you’re fine with whatever is cheapest. The new Neo-7M and M8M are the new generation leaving the Neo-6M and Lea-6H behind.

Comparing the Flight controllers and GPS, from Best controller for Return to Home (GPS)?

I have asked this question about NEO-6M vs LEA-6H before. Key difference is the UBLOX LEA-6H’s ability to use Galileo, GPS/QZSS, GLONASS, compared to NEO-6M GPS only. Both are from the same company
and family of products and of similar accuracy. Guess there’s some marketing pitch in trying to promote the LEA-6H 😉 For the price of the LEA, I have bought 2 x NEO!

Guess you have ditched the WiiPRO/MTK ya? I’m not trying to put it down so badly. As a true beginner into multicopter, MultiWii is indeed the easiest to setup n get airborne. Plus plug in a bluetooth module and you can tune it using a smartphone on the field. Just that the accuracy is not too good in long run.

Back to your original and first question… “ease of setup”… nothing beats HKPilot Mega V2.5 (also known as APM v2.5 board)

Ease getting into the air with GPS n RTH/RTL function:
– connect GPS module (NEO or LEA) to board
– connect baord to PC via USB
– download and fire up Mission Planner
– choose frame type, load the firmware
– setup radio calibration
– do board gyro/accelerometer calibration
– GO FLY!! (disconnect USB n plug in Lipo of cos)

You can fly mostly with default parameters for quad but can fine-tune once you get it flying. Nothing simpler than this!

Cheaper option with MegaPirate AIO:
– connect GPS module (NEO or LEA) to board via the UART distribution board (
– download both Arduino program MegaPirateNG
– unzip both into PC, overwriting the default Arduino library folder with that from MegaPirateNG
– open Arduino and load MegaPirateNG project
– change a few parameters, compile and load the firmware into the board via USB
– open Mission Planner to setup radio calibration
– do board gyro/accelerometer calibration
– GO FLY!! (disconnect USB n plug in Lipo of cos)

Difference being everytime you want to update/upgrade components and firmware, you have to update and compile via Arduino as the AIO board does not update directly from Mission Planner, unlike the Mega/APM v2.5

Both are similarly simple to get it flying, though as a beginner, the Mega/APM v2.5 is more idiot/tweak-proof.
Both are running APM codes in fact, only major difference is how they update/upload the firmware.
Both are equally expandable to include Telemetry, Sonar, Buzzer, Leds, OSD, etc. (If you don’t get all the add-ons at one short, you will be compiling and loading firmware as you add components)

As for the GPS, you decide…. to me no difference other than the price…

See also:

GPS Accessories

GPS Code

Code thread, GPS U-Blox Neo M8N parser, gives three Arduino libraries/code:

In order to read the GLONASS messages, en lieu of the GPS messages,

For anyone else landing here, you could also modify TinyGPS.cpp to accept these messages by changing these lines:

Code: [Select]

#define _GPRMC_TERM   "GNRMC"
#define _GPGGA_TERM   "GNGGA"

Other libraries have similar literals that could also be modified.

The Bad News: they will then ignore the normal GPRMC and GPGGA sentences.  If the receiver is not tracking any GLONASS satellites, it would emit GPRMC instead.  Adding a check for “GNRMC” or “GPRMC” is not very difficult.

The changes to TinyGPS.cpp are as follows:

#include "TinyGPS.h"

#define _GPRMC_TERM   "GPRMC"
#define _GPGGA_TERM   "GPGGA"

#define _GNRMC_TERM   "GNRMC" // *** added
#define _GNGGA_TERM   "GNGGA" // *** added


and also,

  // the first term determines the sentence type
  if (_term_number == 0)
    if (!gpsstrcmp(_term, _GPRMC_TERM) || !gpsstrcmp(_term, _GNRMC_TERM))      //modified
      _sentence_type = _GPS_SENTENCE_GPRMC; // *** modified
    else if (!gpsstrcmp(_term, _GPGGA_TERM) || !gpsstrcmp(_term, _GNGGA_TERM)) //modified
      _sentence_type = _GPS_SENTENCE_GPGGA; // *** modified
      _sentence_type = _GPS_SENTENCE_OTHER;
    return false;

66 lines of code

This is a very informative video. The UBlox u-center application is introduced, and explains how to access messages, turn on and off messages, structure of messages, etc. (PDF: u-blox8-m8_receiverdescrprotspec_ubx-13003221_public)

The video mentions I2C-GPS sub processor/board and the code. This is essentially a second Arduino (Atmel processor): 1PCS CRIUS MultiWii MWC I2C-GPS NAV Navigation Plate Navigation Module GPS Board, £2.85

I2C-GPS board
I2C-GPS board

There is also a follow up video

One thought on “Global Navigation Satellite Systems”

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s