How to Use NMEA-0183 With Arduino

by Zihatec in Circuits > Arduino

16706 Views, 12 Favorites, 0 Comments

How to Use NMEA-0183 With Arduino

Nmea_arduino.jpg

NMEA-0183 is an electrical standard to connect GPS, SONAR, sensors, auto pilot units etc. in ships and boats. In difference to the newer NMEA 2000 standard (based on CAN) the NMEA 0183 is based on EIA RS422 (some older and/or simple systems use RS-232, or a single wire).

I want to show you in this instructable how to connect an Arduino UNO (or any other Arduino) to any NMEA-0183 device. Although the standard calls for isolated inputs and outputs its useful to use our RS422/RS485 Arduino Shield with isolated interface.

Tools & Materials

RS485_Ansicht_ohne_Arduino_4.JPG

Tools & Materials


Software

  • Arduino IDE

Connection to NMEA 0183

Arduino_NMEA_connection.png

In the picture above you can see a typical device with differential output. The terminals are NMEA OUT+ and NMEA OUT- or TX+ or TX-. The NMEA IN+ and NMEA IN- wires are optional.

If you have a single transmit wire from your device (most likely labeled TX or NMEA OUT or something like that), then your device uses the RS-232 protocol. In this case you will need a simple RS232 converter.

Jumper Setting

Arduino_NMEA_jumper.jpg
  • UART RX to position 2
  • UART TX to position 3
  • Voltage to position 5V

DIP Switch Setting

Arduino_NMEA_dip_switch.png

Firmware

You can find a lot of different NMEA-0138 software stacks for Arduino. A very good solution is the NMEA stack by Eric Barch:

https://github.com/ericbarch/arduino-libraries/tree/master/NMEA

It's necessary needed to change the pins for the software UART to pin 2 and 3!