Working Principle
The u-blox NEO-6M receives signals from GPS satellites orbiting at ~20,200 km. Each satellite broadcasts its precise time and position. By measuring the time-of-flight from 4+ satellites, the receiver calculates its latitude, longitude, and altitude through trilateration.
Analogy: Imagine standing in a dark field with three fog horns. By measuring how long each blast takes to reach you, you can calculate your exact position. GPS does this with radio waves from space.
Electrical Characteristics
| Parameter | Value |
|---|---|
| Supply Voltage | 2.7 V – 3.6 V (module accepts 5 V via regulator) |
| Position Accuracy | 2.5 m CEP (horizontal) |
| Cold Start Time | ~27 seconds |
| Hot Start Time | ~1 second |
| Update Rate | 1–5 Hz |
| Interface | UART (9600 baud default) — NMEA 0183 protocol |
| Channels | 50 (tracking), 22 (acquisition) |
Code Example
/*
* NEO-6M GPS NMEA Parser — Arduino
* Requires: TinyGPSPlus library
* Wiring: TX → Pin 4 (SoftSerial RX), RX → Pin 3, VCC → 5V
*/
#include <SoftwareSerial.h>
#include <TinyGPSPlus.h>
SoftwareSerial gpsSerial(4, 3); /* RX=4, TX=3 */
TinyGPSPlus gps;
void setup() {
Serial.begin(9600);
gpsSerial.begin(9600);
Serial.println("Waiting for GPS fix...");
}
void loop() {
while (gpsSerial.available() > 0) {
if (gps.encode(gpsSerial.read())) {
if (gps.location.isValid()) {
Serial.print("Lat: ");
Serial.print(gps.location.lat(), 6);
Serial.print(" | Lon: ");
Serial.print(gps.location.lng(), 6);
Serial.print(" | Alt: ");
Serial.print(gps.altitude.meters());
Serial.print("m | Sats: ");
Serial.print(gps.satellites.value());
Serial.print(" | Speed: ");
Serial.print(gps.speed.kmph());
Serial.println(" km/h");
} else {
Serial.println("Acquiring satellites...");
}
}
}
}
Real-World Applications
Fleet Vehicle Tracking
Logistics companies embed GPS modules in every vehicle, transmitting coordinates via cellular (SIM800L) to a cloud dashboard. Geofence alerts trigger when trucks deviate from planned routes, improving delivery efficiency and security.
NEO-7M: The Upgraded Module
The u-blox NEO-7M is the successor to the NEO-6M, offering improved performance while remaining pin-compatible and using the same NMEA protocol:
| Feature | NEO-6M | NEO-7M |
|---|---|---|
| Channels | 50 tracking / 22 acquisition | 56 tracking / 22 acquisition |
| Constellations | GPS only | GPS + GLONASS (concurrent) |
| Sensitivity (tracking) | –161 dBm | –162 dBm |
| Cold Start | ~27 s | ~26 s |
| Position Accuracy | 2.5 m CEP | 2.5 m CEP (improved urban) |
| Max Update Rate | 5 Hz | 10 Hz |
| Supply Voltage | 2.7–3.6 V | 2.7–3.6 V |
| Power (continuous) | ~45 mA | ~40 mA |
When to choose NEO-7M over NEO-6M:
- Urban or obstructed environments where extra satellites improve fix reliability
- Applications needing 10 Hz update rate (e.g., high-speed vehicle tracking)
- Northern latitudes where GLONASS coverage supplements GPS
Limitations
- No indoor fix: Signals cannot penetrate buildings; use WiFi or BLE for indoor positioning.
- Cold start delay: First fix takes 26–27 seconds; keep the backup battery connected for hot starts.
- Multipath errors: Urban canyons reflect signals off buildings, degrading accuracy to 10+ metres (GLONASS on NEO-7M partially mitigates this).
- Power consumption: ~40–45 mA continuous; use sleep modes for battery-powered trackers.