NMEADisplay - nohal/arduino GitHub Wiki
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)
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.
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.
- 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.
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.
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);