Cómo usar NMEA-0183 con Arduino

 

Cómo usar NMEA-0183 con Arduino

Cómo usar NMEA-0183 con Arduino

Cómo conectar GPS, SONAR, sensores, unidades de piloto automático, etc. en barcos y barcos vía NMEA 0183 a Arduino.

 

Componentes y Suministros

Ph a000066 iso (1) ztbmubhmho
Arduino UNO
×1
Blindaje RS422 / RS485
×1

Acerca de este proyecto

NMEA-0183 es un estándar eléctrico para conectar GPS, SONAR, sensores, unidades de piloto automático, etc. en barcos y barcos. A diferencia del nuevo estándar NMEA 2000 (basado en CAN), NMEA 0183 se basa en EIA RS422 (algunos sistemas más antiguos y/o más simples usan RS-232 o un solo cable).

Quiero mostrarte cómo conectar un Arduino UNO (o cualquier otro Arduino) a cualquier dispositivo NMEA-0183 con salida diferencial. Aunque el estándar requiere entradas y salidas aisladas, es útil usar nuestro Escudo Arduino RS422/RS485 con interfaz aislada.

Conexión a NMEA 0183

En la imagen a continuación puede ver un dispositivo típico con una salida diferencial. Los terminales son NMEA OUT+ y NMEA OUT- o TX+ o TX-. Los cables NMEA IN+ y NMEA IN- son opcionales.

Si tiene un solo cable de señal desde su dispositivo (probablemente etiquetado como TX o NMEA OUT o algo así), su dispositivo usa el protocolo RS-232. En este caso, necesitará un convertidor RS232 simple.

Configuración de puente

  • UART RX en posición 2
  • UART TX en la posición 3
  • Voltaje en la posición de 5V

Ajuste del interruptor DIP

 

firmware

Puede encontrar muchas pilas de software NMEA-0183 diferentes para Arduino. Una muy buena solución es la biblioteca NMEA de Justin R Cutler

https://github.com/jrcutler/NMEA0183

¡Es necesario cambiar los pines UART del software a los pines 2 y 3!TomarpreocuparseestelabaudiosevaluardelasoftwareuarteeslamismocomodentrosuNMEAdispositivotípico4800Baudios.

Ensayo

Después de compilar y descargar, el programa decodifica los protocolos NMEA entrantes. Puede abrir el monitor serie para ver los protocolos decodificados.

Si no tiene un dispositivo NMEA en casa, también puede usar un Simulador en su PC y un simple adaptador USB a RS485 en lugar de un dispositivo real.

 

codificado

Demostración de NMEA 0183arduino
Análisis de protocolos NMEA 0183
#include <NMEA0183.h>

// matches Zihatec RS422/RS485 shield
SoftwareSerial gps(2, 3);
NMEA0183 nmea;

void setup()
{
  while (!Serial);
  Serial.begin(115200);
  gps.begin(4800);
  Serial.println("NMEA0183 parser test");
}

void loop()
{
  if (gps.available())
  {
    char c = gps.read();
    if (nmea.update(c))
    {
      Serial.print("NMEA0183 sentence accepted (");
      Serial.print(nmea.getFields());
      Serial.print(" fields): ");
      Serial.write(nmea.getSentence());
      Serial.println();
    }
  }
}