NMEADisplay - nohal/arduino GitHub Wiki

NMEADisplay

Arduino_nmea

Connecting to data

Arduino uses 5V TTL, which is OK for NMEA (although according to the standard the ports should be optically isolated etc.) but RS-232 voltage levels are much higher and thus you can easily destroy your Arduino/Atmega or at least the I/O port if you connect it directly. A RS-232 to TTL converter such as MAX232 has to be used if you want to connect your microcontroller toy to a serial port on your PC (or a USB to serial converter). For a working design have a look at http://sodoityourself.com/max232-serial-level-converter/ (yes, the capacitor polarities are right and yes, you can get rid of that 10uF one)

What does it do

Displays data coming over NMEA serial link.

At startup, detects the baud rate, if the detection is unsuccessful, 4800 as per NMEA standard is used.

The display is then periodically switched between Position(displayed for 10s) and Course/Speed/Time(displayed for 5s) pages.

Position page

OK: LA: DD°MM.MM[N/S]
    LO: DD°MM.MM[E/W]

The first line contains the fix status and latitude in degrees and decimal minutes. The second line contains the longitude in degrees and decimal minutes.

Possible status values

  • OK: Fix is current
  • ??: Fix is older than 5 seconds
  • ?!: Fix is older than 1 minute
  • !!: Fix is older than 5 minutes
  • After 10 minutes without a valid fix, the display is changed to
No fix detected

The same screen is also displayed if no fix was acquired since the device booted up.

Course/Speed/Time page

C: XXX° S: X.Xkt
YYYY-M-D HH:MM

The first line contains the true course and speed in knots. The second line contains the current UTC date and time as received from the gps. In case the data is not available, the display looks like

C: ---° S: ---kt

and the date/time is not displayed.

FAQ / Troubleshooting

How did you create that cool picture?

I used Fritzing

Do I have to use the Arduino? It's expensive and I don't like the form factor

Absolutely not - just take an Atmega 168, a 7805 voltage regulator, 16MHz crystal and a few capacitors and build the same for a fraction of the price.

Why do I have to connect NMEA to pin 10?

You don't have to, change RXPIN at the beginning of the source. The same applies for all the other pins. HW serial (pins 0 and 1) is connected to the built-in USB though, so you can't use it while you want to connect to your Arduino from the PC.

http://arduiniana.org/libraries/tinygps/ And don't forget to restart your IDE.

Where can I get that TinyGPS.h the arduino IDE complains about?

http://arduiniana.org/libraries/tinygps/ And don't forget to restart your IDE.

But I have a different display...

Go through the LiquidCrystal library examples and learn how this library works and how to connect your particular display type and then change what's needed, especially LiquidCrystal lcd(12, 11, 2, 3, 4, 5, 6, 7, 8, 9);

⚠️ **GitHub.com Fallback** ⚠️