Skip to main content

gps_neom8n

u-blox NEO-M8N high-sensitivity GPS module with multi-GNSS support.

Overview

The gps_neom8n node interfaces with the u-blox NEO-M8N high-sensitivity GNSS receiver module. It supports concurrent reception of GPS, GLONASS, Galileo, and BeiDou satellite systems for faster time-to-first-fix and better accuracy. The node provides configurable dynamic models optimized for different movement patterns, fix modes, and SBAS augmentation for improved precision.

Multi
GNSS Support
-167dBm
Sensitivity
10Hz
Max Update Rate
2.0m
CEP Accuracy

Properties

Property Type Default Description
port string * /dev/ttyS0 Serial port for the NEO-M8N module (required)
baudRate select 9600 Serial baud rate. Options: 9600, 19200, 38400, 57600, 115200
dynamicModel select portable Dynamic platform model. Options: portable, stationary, pedestrian, automotive, sea, airborne_1g, airborne_2g, airborne_4g
fixMode select auto Fix mode. Options: auto (2D/3D automatic), 2d (horizontal only), 3d (requires 4+ satellites)
sbas boolean true Enable SBAS (Satellite-Based Augmentation System) for improved accuracy

Output

{
  "latitude": 51.5074,
  "longitude": -0.1278,
  "altitude": 11.2,
  "speed": 0.52,
  "course": 215.3,
  "satellites": 12,
  "fix": "3D",
  "pdop": 1.8,
  "hdop": 1.1,
  "vdop": 1.4,
  "timestamp": 1640000000000
}

Wiring (UART)

Connection

VCC → 3.3V or 5V (module has regulator)

GND → GND

TX → GPIO 15 (RXD, Pin 10)

RX → GPIO 14 (TXD, Pin 8)

PPS → GPIO (optional, 1PPS timing)

Module includes active antenna connector for external antenna support

ASCII Wiring Diagram

  NEO-M8N          Raspberry Pi
  -------          ------------
  VCC  ─────────── 3.3V (Pin 1)
  GND  ─────────── GND  (Pin 6)
  TX   ─────────── RXD  (Pin 10 / GPIO 15)
  RX   ─────────── TXD  (Pin 8  / GPIO 14)
  PPS  ─────────── GPIO (optional)

  External antenna via U.FL/SMA connector
  on module (recommended for best reception)

Example: High-Precision Asset Tracker

Use DOP values to filter only high-quality fixes and report position with confidence metrics.

gps_neom8n function mqtt out
// Function node: Quality-filtered position reporting
var hdop = msg.hdop;
var fix = msg.fix;
var sats = msg.satellites;

// Only report when fix quality is good
if (fix !== "3D" || hdop > 2.0 || sats < 6) {
    node.status({
        fill: "yellow", shape: "ring",
        text: "Low quality: HDOP=" + hdop + " Sats=" + sats
    });
    return null;
}

var quality = "unknown";
if (hdop <= 1.0) quality = "excellent";
else if (hdop <= 1.5) quality = "good";
else quality = "moderate";

msg.payload = {
    lat: msg.latitude,
    lon: msg.longitude,
    alt: msg.altitude,
    speed: msg.speed,
    heading: msg.course,
    accuracy: {
        hdop: hdop,
        vdop: msg.vdop,
        pdop: msg.pdop,
        quality: quality,
        satellites: sats
    },
    timestamp: msg.timestamp
};

msg.topic = "tracker/position";
return msg;

Example: Speed-Based Dynamic Model Selection

Automatically select the optimal dynamic model based on current movement speed for better filtering.

// Function node: Adaptive dynamic model
var speed = msg.speed; // km/h
var currentModel = flow.get('dynamicModel') || 'portable';
var newModel = currentModel;

if (speed < 1) {
    newModel = "stationary";
} else if (speed < 6) {
    newModel = "pedestrian";
} else if (speed < 120) {
    newModel = "automotive";
} else {
    newModel = "airborne_1g";
}

// Only send config update if model changed
if (newModel !== currentModel) {
    flow.set('dynamicModel', newModel);
    msg.payload = {
        command: "setDynamicModel",
        model: newModel,
        reason: "speed=" + speed.toFixed(1) + " km/h",
        position: {
            lat: msg.latitude,
            lon: msg.longitude
        }
    };
    return msg;
}

return null;

Common Use Cases

Drone Navigation

Multi-GNSS precision positioning with airborne dynamic models for UAV flight

Marine Tracking

Sea dynamic model with SBAS augmentation for boat and vessel tracking

Precision Agriculture

High-accuracy field mapping and equipment tracking with multi-constellation support

Time Synchronization

PPS output for nanosecond-accurate time sync across distributed IoT networks

Related Nodes