Coder Social home page Coder Social logo

nnog / neogps Goto Github PK

View Code? Open in Web Editor NEW

This project forked from slashdevin/neogps

0.0 0.0 0.0 1.12 MB

NMEA and ublox GPS parser for Arduino, configurable to use as few as 10 bytes of RAM

License: GNU General Public License v3.0

C 33.49% C++ 66.51%

neogps's Introduction

NeoGPS

This fully-configurable Arduino library uses minimal RAM, PROGMEM and CPU time, requiring as few as 10 bytes of RAM, 866 bytes of PROGMEM, and less than 1mS of CPU time per sentence.

It supports the following protocols and messages:

NMEA 0183

  • GPGGA - System fix data
  • GPGLL - Geographic Latitude and Longitude
  • GPGSA - DOP and active satellites
  • GPGST - Pseudo Range Error Statistics
  • GPGSV - Satellites in View
  • GPRMC - Recommended Minimum specific GPS/Transit data
  • GPVTG - Course over ground and Ground speed
  • GPZDA - UTC Time and Date

The "GP" prefix usually indicates an original GPS source. NeoGPS parses all Talker IDs, including

This means that GLRMC, GBRMC or BDRMC, GARMC and GNRMC from the latest GPS devices (e.g., ublox M8N) will also be correctly parsed. See discussion of Talker IDs in Configurations.

Most applications can be fully implemented with the standard NMEA messages above. They are supported by almost all GPS manufacturers. Additional messages can be added through derived classes (see ublox and Garmin sections below).

Most applications will use this simple, familiar loop structure:

NMEAGPS gps;
gps_fix fix;

void loop()
{
  while (gps.available( gps_port )) {
    fix = gps.read();
    doSomeWork( fix );
  }
}

For more information on this loop, see the Usage section on the Data Model page.

(This is the plain Arduino version of the CosaGPS library for Cosa.)

Goals

In an attempt to be reusable in a variety of different programming styles, this library supports:

  • resource-constrained environments (e.g., ATTINY targets)
  • sync or async operation (reading in loop() vs interrupt processing)
  • event or polling (deferred handling vs. continuous calls in loop())
  • coherent fixes (merged from multiple sentences) vs. individual sentences
  • optional buffering of fixes
  • optional floating point
  • configurable message sets, including hooks for implementing proprietary NMEA messages
  • configurable message fields
  • multiple protocols from same device
  • any kind of input stream (Serial, NeoSWSerial, I2C, PROGMEM arrays, etc.)

Inconceivable!

Don't believe it? Check out these detailed sections:

Section Description
License The Fine Print
Installing Copying files
Data Model How to parse and use GPS data
Configurations Tailoring NeoGPS to your needs
Performance 37% to 72% faster! Really!
RAM requirements Doing it without buffers!
Program Space requirements Making it fit
Examples Programming styles
Troubleshooting Troubleshooting
Extending NeoGPS Using specific devices
ublox ublox-specific code
Garmin Garmin-specific code
Tradeoffs Comparing to other libraries
Acknowledgements Thanks!

neogps's People

Contributors

close2 avatar flokas avatar paulstoffregen avatar per1234 avatar slashdevin avatar sle118 avatar yngndrw avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.