TinyGPS

A Compact Arduino GPS/NMEA Parser

TinyGPS is designed to provide most of the NMEA GPS functionality I imagine an Arduino user would want – position, date, time, altitude, speed and course – without the large size that seems to accompany similar bodies of code.  To keep resource consumption low, the library avoids any mandatory floating point dependency and ignores all but a few key GPS fields.

Usage

To use, simply create an instance of an object like this:

#include "TinyGPS.h"
TinyGPS gps;

Feed the object serial NMEA data one character at a time using the encode() method. (TinyGPS does not handle retrieving serial data from a GPS unit.) When encode() returns “true”, a valid sentence has just changed the TinyGPS object’s internal state. For example:

#define RXPIN 3
#define TXPIN 2
SoftwareSerial nss(RXPIN, TXPIN);
void loop()
{
  while (nss.available())
  {
    int c = nss.read();
    if (gps.encode(c))
    {
      // process new gps info here
    }
  }
}

You can then query the object to get various tidbits of data. To test whether the data returned is stale, examine the (optional) parameter “fix_age” which returns the number of milliseconds since the data was encoded.

long lat, lon;
unsigned long fix_age, time, date, speed, course;
unsigned long chars;
unsigned short sentences, failed_checksum;

// retrieves +/- lat/long in 100000ths of a degree
gps.get_position(&lat, &lon, &fix_age);

// time in hhmmsscc, date in ddmmyy
gps.get_datetime(&date, &time, &fix_age);

// returns speed in 100ths of a knot
speed = gps.speed();

// course in 100ths of a degree
course = gps.course();

Statistics

The stats method provides a clue whether you are getting good data or not. It provides statistics that help with troubleshooting.

// statistics
gps.stats(&chars, &sentences, &failed_checksum);
  • chars – the number of characters fed to the object
  • sentences – the number of valid $GPGGA and $GPRMC sentences processed
  • failed_checksum – the number of sentences that failed the checksum test

Integral values

Values returned by the core TinyGPS methods are integral. Angular latitude and longitude measurements, for example, are provided in units of millionths of a degree, so instead of 90°30’00”, get_position() returns a longitude value of 90,500,000, or 90.5 degrees. But…

Using Floating Point

…for applications which are not resource constrained, it may be more convenient to use floating-point numbers. For these, TinyGPS offers several inline functions that return more easily-managed data. Don’t use these unless you can afford to link the floating-point libraries. Doing so may add 2000 or more bytes to the size of your application.

float flat, flon;

// returns +/- latitude/longitude in degrees
gps.f_get_position(&flat, &flon, &fix_age);
float falt = gps.f_altitude(); // +/- altitude in meters
float fc = gps.f_course(); // course in degrees
float fk = gps.f_speed_knots(); // speed in knots
float fmph = gps.f_speed_mph(); // speed in miles/hr
float fmps = gps.f_speed_mps(); // speed in m/sec
float fkmph = gps.f_speed_kmph(); // speed in km/hr

Date/time cracking

For more convenient access to date/time use this:

int year;
byte month, day, hour, minutes, second, hundredths;
unsigned long fix_age;

gps.crack_datetime(&year, &month, &day,
  &hour, &minute, &second, &hundredths, &fix_age);

Establishing a fix

TinyGPS objects depend on an external source, i.e. its host program, to feed valid and up-to-date NMEA GPS data. This is the only way to make sure that TinyGPS’s notion of the “fix” is current. Three things must happen to get valid position and time/date:

  1. You must feed the object serial NMEA data.
  2. The NMEA sentences must pass the checksum test.
  3. The NMEA sentences must report valid data. If the $GPRMC sentence reports a validity of “V” (void) instead of “A” (active), or if the $GPGGA sentence reports fix type “0” (no fix) then those sentences are discarded.

To test whether the TinyGPS object contains valid fix data, pass the address of an unsigned long variable for the “fix_age” parameter in the methods that support it. If the returned value is TinyGPS::GPS_INVALID_AGE, then you know the object has never received a valid fix. If not, then fix_age is the number of milliseconds since the last valid fix. If you are “feeding” the object regularly, fix_age should probably never get much over 1000. If fix_age starts getting large, that may be a sign that you once had a fix, but have lost it.

float flat, flon;
unsigned long fix_age; // returns +- latitude/longitude in degrees
gps.f_get_position(&flat, &flon, &fix_age);
if (fix_age == TinyGPS::GPS_INVALID_AGE)
  Serial.println("No fix detected");
else if (fix_age > 5000)
  Serial.println("Warning: possible stale data!");
else
  Serial.println("Data is current.");

Interfacing with Serial GPS

To get valid and timely GPS fixes, you must provide a reliable NMEA sentence feed. If your NMEA data is coming from a serial GPS unit, connect it to Arduino’s hardware serial port, or, if using a “soft” serial port, make sure that you are using a reliable SoftSerial library. As of this writing (Arduino 0013), the SoftwareSerial library provided with the IDE is inadequate. It’s best to use my NewSoftSerial library, which builds upon the fine work ladyada did with the AFSoftSerial library.

Library Version

You can retrieve the version of the TinyGPS library by calling the static member library_version().

int ver = TinyGPS::library_version();

Resource Consumption

Linking the TinyGPS library to your application adds approximately 2500 bytes to its size, unless you are invoking any of the f_* methods. These require the floating point libraries, which might add another 600+ bytes.

Download

The latest version of TinyGPS is available here: TinyGPS13.zip

Change Log

  1. initial version
  2. << streaming, supports $GPGGA for altitude, floating point inline functions
  3. also extract lat/long/time from $GPGGA for compatibility with devices with no $GPRMC
  4. bug fixes
  5. API re-org, attach separate fix_age’s to date/time and position.
  6. Prefer encode() over operator<<. Encode() returns boolean indicating whether TinyGPS object has changed state.
  7. Changed examples to use NewSoftSerial in lieu of AFSoftSerial; rearranged the distribution package.
  8. Greater precision in latitude and longitude.  Angles measured in 10-5 degrees instead of 10-4 as previously.  Some constants redefined.
  9. Minor bug fix release: the fix_age parameter of get_datetime() was not being set correctly.
  10. Added Maarten Lamers’ distance_to() as a static function.
  11. Arduino 1.0 compatibility
  12. Added satellites(), hdop(), course_to(), and cardinal()
  13. Improved precision in latitude and longitude rendering. get_position() now returns angles in millionths of a degree.

Acknowledgements

Many thanks to Arduino forum users mem and Brad Burleson for outstanding help in alpha testing this code. Thanks also to Maarten Lamers, who wrote the wiring library that originally gave me the idea of how to organize TinyGPS.  Thanks also to Dan P. for suggesting that I increase the lat/long precision in version 8.  Thanks to many people who suggested new useful features for TinyGPS, especially Matt Monson, who wrote some nice sample code to do so.

All input is appreciated.

Mikal Hart

Page last updated on August 31, 2013 at 7:00 pm
702 Responses → “TinyGPS”

  1. btricha2

    12 years ago

    Hi Mikal,

    I was wondering if it is possible to get any raw data using TinyGPS, for example: pseudo range, or CF data, or anything that can be used in post processing to improve on the precision of the NMEA coordinates that many gps units like the EM406a put out.

  2. Hi Mikal, Excellent work on TinyGPS! I used it to win 3rd in the 2012 Sparkfun AVC! (Ported to mbed) I don’t know if I ever related to you an issue in parse_degrees() that I and another AVC competitor ran into. I hope this is of help — we both found that the routine was truncating digits from our NMEA sentences. Here’s my fix: http://pastebin.com/NcnR96T4 I increased the precision from 5 to 7 digits after the decimal. My GPS reports to 6 decimal places; I coded TinyGPS for 7 as I was under a deadline and didn’t want to have to fix it twice :) Email me if I can provide more info, etc. You can contact me on my blog website (bot-thoughts.com) Thanks –Michael


  3. Andrew

    12 years ago

    Hi
    Just wanted to say I am using your tinyGPS and absolutely love it.

    I am on train from Newcastle to London and been trying it out and now getting this data:

    Lat/Long: 52.637878,-0.335670
    Actual Course: 112.00
    Desiredcourse: 192.00
    rotationToTarget: 80.00
    Altitude: 20.20
    The distance to go: 126.572120
    Speed in kmph: 201.28

    The “target” is my home and as you can see we are travelling at 201km/h and “off target” by 80degrees

    Planning to use this to record where our next balloon goes:
    here is last one – but we dint know what altitude we reached.
    http://www.youtube.com/watch?v=sNmiiBJzdoc

    ANyway tinyGPS works brilliantly and i wanted to say a huge Thank you

    Andrew


  4. Robert Johnson

    12 years ago

    How can I convert the time and date data to simple variables? I need to use Time and Date for other functions as well. I doubt that sprintf will work for anything but printing a buffer. The attempt is to make a clock that will be delivered both by wire and radio for alarm and timing issues. For example one of it’s many task’s is to schedule an X10 controller to control various lights and appliances.
    Robert K. Johnson Sr


  5. Mikal

    12 years ago

    @Armond,

    My best guess is that TinyGPS can’t quite keep up with the high speed of the flow? Perhaps the serial buffer is overflowing? Can you slow down the amount of data that is being transmitted or processed somehow?


  6. Stephen H

    12 years ago

    For my current project I need to create a new string that includes the whole GPRMC sentence from $ to checksum that I then pass on through a second serial port, what is the neatest way to write the whole sentence to a string? the NMEA library does it but clashes with something else in my sketch and I have not been able to find a work around.


  7. reggy

    12 years ago

    Great library. the lat long are working but cant get speed and course. i’m using eb-85a and arduino mega328. thank you


  8. Axel

    12 years ago

    Hi Mikal,

    just trying to get TinyGPS to work with an Adafruit Ultimate GPS breakout on a boarduino. The Adafruit_GPS lib’s test examples work:

    $GPGGA,084730.000,5014.4124,N,00836.2861,E,1,10,0.84,181.2,M,47.9,M,,*6A
    $GPRMC,084731.000,A,5014.4124,N,00836.2861,E,0.33,87.69,141012,,,A*53

    Fix: 1 quality: 1
    Location: 5014.4121N, 836.2859E

    I get a fix and GPRMC shows “A”, which are the prereqs for TinyGPS to get and parse GPS data (if I understand it right). However, TinyGPS shows only “****”. Any suggestions?

    Thanks and best regards,
    Axel


  9. Axel

    12 years ago

    Hi Mikal,

    found the problem, it was a setting issue. Adafruit Ultimate GPS serial speed default to 9600. Changing code to

    nss.begin(9600);

    returns now all as it should be:

    Sats HDOP Latitude Longitude Fix Date Time Date Alt Course Speed Card Distance Course Card Chars Sentences Checksum
    (deg) (deg) Age Age (m) — from GPS —- —- to London —- RX RX Fail
    ————————————————————————————————————————————–
    10 85 50.24017 8.60458 281 10/14/2012 09:38:54 69 197.20 265.35 0.35 W 628 286.32 WNW 574 2 1

    Thanks,
    Axel


  10. Ben

    12 years ago

    Hi Mikal,

    I’m trying to figure out a way to log more than just the standard gps nmea character strings. In addition to the standard NMEA character strings my gps also outputs pmtk and rmc messages of different sentence lengths. Your examples work fine on this gps for the standard gps sentences, however I cannot figure out how use the carriage return feature in tinyGPS to form a data string from each sentence coming from the GPS. Essentially I need a way to use tinyGPS to form data strings that aren’t formatted. Are there any recommendations you can provide?

    thanks!


  11. Mikal

    12 years ago

    Thanks, Ivan and all. The next rev of TinyGPS will contain “perfect precision” parsing.


  12. Mikal

    12 years ago

    @brticha2,

    Many people ask if it’s possible to capture the raw NMEA data from TinyGPS. Remember that you are feeding the raw data TO TinyGPS in the first place. I recommend capturing it before you ever send it to TinyGPS.


  13. Mikal

    12 years ago

    @Michael Shimniok,

    Hey! Thanks for sharing the good news. Nice work! I’ll get that fix into TinyGPS soon.


  14. Mikal

    12 years ago

    @Andrew,

    Hey, thanks very much for sharing. I love taking GPS equipment on trains.

    Fantastic exploration video — w/ A Little Nightmusic! :)

    Thanks again,

    Mikal


  15. Mikal

    12 years ago

    Stephen,

    If I were tasked with capturing the whole GPRMC sentence, I think I would capture the characters before sending to TinyGPS. Would that work for you?


  16. Mikal

    12 years ago

    Ben, it’s a good question. I’m working on a general strategy for capturing custom fields from NMEA-type strings.


  17. awaxa

    12 years ago

    This has probably been corrected already but just in case, I noticed this yesterday:

    https://github.com/awaxa/arduino/commit/268cdccc38d43cb3a984dc3c0922360acae2e9cd
    in
    https://github.com/awaxa/arduino/blob/master/libraries/TinyGPS12.zip

    Cheers and thanks for the fantastic library!


  18. Mikal

    11 years ago

    @awaxa,

    Thanks for the heads up!


  19. James

    11 years ago

    HELP—-
    Does this work with the ARM processor?


  20. Jeremy M

    11 years ago

    Hey,

    I noticed an issue where the GPS is sending both RMC and GGA sentences and the velocity/course information will be invalid, while other data (latitude, longitude, altitude, etc) will be fine, but if GGA is turned off, velocity and speed will work. Have you run into this before?

    Thanks,
    Jeremy


  21. Mikal

    11 years ago

    @James, it’s designed to be processor-agnostic, so I would imagine that it works fine.


  22. Mikal

    11 years ago

    @Jeremy M, what speed is your data arriving at? I can only imagine that there is some kind of overflow issue going on, where some sentences are not being completely received.


  23. manitou

    11 years ago

    I got TinyGPS (v12) to work with DUE. GPS EM-406A is 5v, but spec and scope show TX and pps output are only 2.85v, so no need for level converters. For IDE 1.5 to see the TinyGPS library I had to rename Examples/ to examples/. All three examples worked, replaced SoftwareSerial with Serial1, and for static_test sketch I had to neuter the PROGMEM stuff.

    You don’t even need the TinyGPS lib to test the pulse-per-second output (1 microsecond accuracy). I hooked the pps output to a DUE digital port and used attachInterrupt() (required IDE 1.5.1) witht a micros() timestamp, and used that to measure the clock frequency of the DUE. The simple gpspps sketch and results can be viewed at

    https://github.com/manitou48/crystals

    I also got TinyGPS to work with Maple — a bit more hacking required for that.
    Needed stdlib.h in TinyGPS.cpp, and the examples needed some includes, used Serial1 instead of SoftwareSerial, and SerialUSB in place of Serial.


  24. Mikal

    11 years ago

    @Manitou– thanks!


  25. george

    11 years ago

    thank you


  26. Chantal

    11 years ago

    Hallo,
    ich bin eine Anfängerin in der Programmierung von Arduino UNO, leider kann ich kein Englisch, deshalb auf Deutsch.
    Nun ich habe mir den Arduino UNO und das Buch “Arduino in der Praxis” von Harold Timmis gekauft und wollte aus dem Busch das Projekt: Ausgeben von GPS- Daten auf einem Monochrom- LCD so zusagen nachbauen. Habe das Programm abgeschrieben und beim Prüfen folgende Fehlermeldung erhalten.
    Fehler beim Kompillieren:
    In file included from GPS_Test.cpp:8:
    C:\Program Files\arduino-1.0.1\libraries\NewSoftSerial/NewSoftSerial.h:33:2: error: #error NewSoftSerial has been moved into the Arduino core as of version 1.0. Use SoftwareSerial instead.
    In file included from GPS_Test.cpp:8:
    C:\Program Files\arduino-1.0.1\libraries\NewSoftSerial/NewSoftSerial.h:99: error: conflicting return type specified for ‘virtual void NewSoftSerial::write(uint8_t)’
    C:\Program Files\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:48: error: overriding ‘virtual size_t Print::write(uint8_t)’
    Ich weis nun nicht weiter.
    Wer kann mir dabei helfen?
    Wer das Programm benötigt kann mich kontaktieren und ich sende es dann zu.
    Im Voraus vielen Dank für Eure Unterstützung.


  27. Mikal

    11 years ago

    @george,

    I love it when people just write “thank you”. Thank YOU.


  28. Mikal

    11 years ago

    @ Chantal,

    Ersetzen Sie “NewSoftSerial” mit “SoftwareSerial” in Ihrem Code, und Sie sollten in Ordnung sein.


  29. Klaus

    11 years ago

    Hello
    I have a problem.
    I have 2 GPS receivers
    a GM-210 = 4800bps
    and a navilock nl-507ttl.
    my software works with the GM-210 and 4800bps, but sometimes she can read any data from the GPS sends data.
    but with the navilock nl-507ttl and 9600bps, I get no data what I can do?


  30. Milton Friesen

    11 years ago

    Mikal, I have very much benefited from working through your coding sketches – thanks for all your work.

    For people deep into the coding, there is much to be gleaned. Here is what I can’t find – a very simple sketch – as simple as possible – that uses as little memory as possible to feed NMEA strings to an SD card without taking up any additional memory for processing strings, formatting, and so on. This isn’t likely a high demand application as people likely prefer to have the SD card data already formatted but I’m looking for a very long duty cycle where everything is as efficient as possible and processing of NMEA strings can be done post-data collection. The only variable would be how often a valid GPS fix gets logged – 15 seconds, 5 minutes, 1 hour, etc.

    This is doubtless simple for advanced users but when I try and bring a working GPS sketch together with a working SD datalog sketch, I get bugs that I can’t quite figure out. On the other side, when I use the code from Jeremy Blum’s Tutorial 15, my UNO gets close to memory limits (29,342 of 32,000) and then I get the “programmer out of sync” message. I can make it work if I comment out certain lines but when I used a programmer to remove the bootloader and gain 2,000 bytes, it still wouldn’t run. He uses a Mega so the memory issue isn’t a problem but I’m going the other way – small, long duty cycle, post-collection formatting.

    I will keep working at it but thought you might have some insight.


  31. Mikal

    11 years ago

    @Milton,

    If you are trying to save just the raw NMEA data, you have to realize that you have to buffer it, because writing to SD is slower than incoming GPS. So the question is, how much do you need to buffer? I know that with my EM-406A, all I need is a GPGGA and GPRMC sentence, and that these come by once per second. I think I would use this algorithm. When it’s time to sample GPS data:

    1. start reading the input stream
    2. As soon as I see a $ sign, start saving the data in buffer1 until the terminating newline arrives.
    3. If the sentence isn’t $GPGGA or $GPRMC, go back to step 1
    4. keep reading. As soon as I see a $ sign, start saving the data in buffer2 until the terminating newline arrives.
    5. If the sentence isn’t $GPGGA or $GPRMC or if it’s the same type as in buffer1, go back to step 4

    At this point you should have two buffers filled with one GPRMC sentence and one GPGGA sentence. Write these to the SD card. When the 15 or 5 minutes have elapsed, start again at step 1.


  32. Jayakarthigeyan

    11 years ago

    When I used simpletest.pde that was given with tiny gps library examples… this the result that I got on the serial monitor… what can be the problem please help me out… I am using Arduino 1.0.3 software…

    Simple TinyGPS library v. 12
    by Mikal Hart

    CHARS=120 SENTENCES=0 CSUM ERR=14
    CHARS=240 SENTENCES=0 CSUM ERR=27
    CHARS=462 SENTENCES=0 CSUM ERR=58

    CHARS=9125 SENTENCES=0 CSUM ERR=1174
    CHARS=9245 SENTENCES=0 CSUM ERR=1189
    CHARS=9365 SENTENCES=0 CSUM ERR=1204

    the value in CHARS and CSUM ERR keeps on increasing…


  33. Lucas

    11 years ago

    Hi, Mikal.

    I’m using the MC-1513 and an arduino Uno, but, when I start the test gps, doesn’t work propretly, can you help me? (note: I’ve changed the RX and TX on code, for 3 and 2 as datasheet info.


  34. Mikal

    11 years ago

    Jayakarthigeyan,

    My guess is that you have selected the wrong baud rate when talking to your GPS device, or perhaps your device is set to operate in some kind of binary (i.e. not NMEA) mode.


  35. Mikal

    11 years ago

    @Lucas,

    Without details it’s hard to guess, but make sure you don’t have your RX and TX crossed. Remember that if it says “RX” on the GPS module datasheet, that line is the TX line when it gets to the Arduino.


  36. DavidW

    11 years ago

    Armand Aanekre- have you tried going into SoftwareSerial and up your buffer to 128?


  37. DavidW

    11 years ago

    Mikal- RE: Locosys ‘s LS20031 GPS unit everybody has had trouble with- I finely got it working with no check sum errors– I did have to use a logic Voltage level converter to talk to the 3.3V part from my 5V Uno. I am using the I2C Level Converter from http://www.dsscircuits.com/i2c-level-converter.html with no problems. Don’t let the I2C spook you, it works great with Serial Communication- see Wayne Truchsess comment at the bottom of that last HTML page.

    What I did was to write the following >>

    #define PMTK_SET_NMEA_OUTPUT_RMCGGA “$PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*28\r\n” // turn on GPRMC and GPGGA —– TinyGPS only uses these two, all others can be turned off

    #define PMTK_SET_NMEA_UPDATE_1HZ “$PMTK220,1000*1F\r\n” // Every 1000ms (1Hz)

    #define PMTK_Q_RELEASE “$PMTK605*31\r\n” /* Query FW release information — MTK-3301s send firmware release name and version – Note: not sure of accuracy of this information */

    void setup()
    {
    Serial.begin(115200);
    nss.begin(57600); // LS20031 baud- 57600
    while (!nss.available()){}
    nss.print(PMTK_SET_NMEA_OUTPUT_RMCGGA); // $GPxxx Messages
    nss.print(PMTK_SET_NMEA_UPDATE_1HZ); // messages 1 times a second
    nss.print(PMTK_Q_RELEASE); // ——————————————————This is not necessary for things to work
    Serial.print(“Testing TinyGPS library v. “); Serial.println(TinyGPS::library_version());

    I am not showing all the #define examples here do to I just want to show what I did to get things working. I set up a full test bed of all the NMEA_OUTPUT types and sent the output directly to the Arduino’s IDE Monitor. It gave me a better over view of how the LS20031 works. I also learned that a lot of these sentences will work for other GPS’s too.
    In addtion to that, I learned when you are starting to get bad check sums and NMEA sentences, look to see if your /n/r is getting overwritten. Also when you see that, most of the time it has to do with the end of the NMEA being overwritten.
    One other thing I have discovered is when you are running I2C (Pin 4, and 5 on the Uno) for some other part using I2C with SoftwareSerial (2, and 3 on the Uno) talking to the GPS (two different programs, with two different parts- on the same Uno), it can cause timing issues with SoftwareSerial’s rx &tx. NO- I am not talking about hooking the GPS up to I2C or the Serial to a I2C part. I am talking about internal timing issues with SotwareSerial and the I2C timing hardware can cause random check sum errors. Also people who are using DHT Temperature and Humidity sensors can also wind up with problems do to cli() and sei() disabling global interrupts. There is a work around for these people but right now I am not sure how to do it.

    Oh- the preceding modification to your TinyGPS example worked like a charm at 57600 baud- I have had it working for over 8 hours with no check sum errors.


  38. Michael

    11 years ago

    Hi there,

    I’m using your TinyGPS library in a car tracking project. I’ve noticed that sometimes it leaves the negative sign off the latitude (I’m the Northern hemisphere so I don’t know if it would do the same for the longitude)

    Any ideas?

    Thanks!!


  39. Shaun

    11 years ago

    Mikal – Works really well, awesome job – A serious thank you :)


  40. Mikal

    11 years ago

    @DavidW,

    Thanks for sharing that…

    M


  41. Mikal

    11 years ago

    @Michael,

    Hmmm. I have no idea. Although if you’re in the N. Hemisphere, wouldn’t all the latitudes be positive? Can you give me some examples? Preferably the with accompanying NMEA source?

9 Trackbacks For This Post
  1. Updated – WISMO228 Library for Arduino | Rocket Scream

    […] (while adding more functionality) as we also need use the SD library for logging and also the TinyGPS library for GPS NMEA output […]

  2. GPS Speed Display | Open Source Software Development

    […] project makes use of the TinyGPS library. It provides a useful parsing library with easy access to the data returned by the Serial […]

  3. Arduino + HMC6343 + u-blox MAX-6 | cjdavies.org

    […] not hard to parse it yourself, but why go to the effort when there are libraries like TinyGPS that can do it for […]

  4. EECS Sr Design » Blog Archive » 7. Team Bravo Squad – Prototype I Final Report: Emergency GPS Locator

    […] the next while tweaking things. During that time, we rewrote the code (attached below) to use the TinyGPS library and wired the switch up. For the switch, it was simply a matter of connecting the common pin on the […]

  5. Interfaceando com modulo GPS EM-411 | Alan Carvalho de Assis

    […] Estava procurando uma biblioteca para interfacear com o modulo EM-411 mas não queria algo muito complexo, apenas algo que retornasse a distancia entre duas lat/long e o angulo entre elas. Então encontrei o projeto TinyGPS. […]

  6. Montando o GPS | Heliostat Brasil

    […] to interpret the information the GPS sends out ourselves as there’s a really helpful libraryTinyGPS that will do the hard work for […]

  7. Fastrax UP501 GPS Module - Babelduck Cybernetics

    […] Works with Arduino TinyGPS Library http://arduiniana.org/libraries/tinygps/ […]

  8. Sketching with Hardware 2012 6/6 – GPS Box | Blog

    […] “TinyGPS is designed to provide most of the NMEA GPS functionality I imagine an Arduino user would want ñ position, date, time, altitude, speed and course ñ without the large size that seems to accompany similar bodies of code.  To keep resource consumption low, the library avoids any floating point dependency and ignores all but a few key GPS fields.” – TinyGPS website […]

  9. Slow progress, but progress non-the-less! | Decibear

    […] tutorial video from Jeremy Blum to help us work out the GPS module, in which he referred us to the TinyGPS arduino library which we found lovely to use. With the help of Jeremy, and the example sketches with the library, […]

Leave a Reply