Como usar NMEA-0183 com Arduino
Componentes e suprimentos
| × | 1 | ||||
| × | 1 |
Sobre este projeto
NMEA-0183 é um padrão elétrico para conectar GPS, SONAR, sensores, unidades de piloto automático, etc. em navios e barcos. Diferente do padrão NMEA 2000 mais recente (baseado em CAN), o NMEA 0183 é baseado em EIA RS422 (alguns sistemas mais antigos e / ou simples usam RS-232 ou um único fio).
Quero mostrar a você como conectar um Arduino UNO (ou qualquer outro Arduino) a qualquer dispositivo NMEA-0183 com saída diferencial. Embora o padrão exija entradas e saídas isoladas, é útil usar nosso RS422 / RS485 Arduino Shield com interface isolada.
Conexão com NMEA 0183
Na imagem abaixo você pode ver um dispositivo típico com saída diferencial. Os terminais são NMEA OUT + e NMEA OUT- ou TX + ou TX-. Os fios NMEA IN + e NMEA IN- são opcionais.
Se você tiver um único fio de transmissão de seu dispositivo (provavelmente rotulado como TX ou NMEA OUT ou algo parecido), então seu dispositivo usa o protocolo RS-232. Neste caso, você precisará de um conversor RS232 simples.
Configuração de jumpers
- UART RX para a posição 2
- UART TX para a posição 3
- Tensão para posição 5V
Configuração do interruptor DIP
Firmware
Você pode encontrar várias pilhas de software NMEA-0183 diferentes para Arduino. Uma solução muito boa é a biblioteca NMEA de Justin R Cutler
https://github.com/jrcutler/NMEA0183
É necessário alterar os pinos do software UART para os pinos 2 e 3! Pegue cuidado isso o baud taxa de o software uart é o mesmo como em seu NMEA dispositivo - típico 4800 Baud.
Execução de teste
Após a compilação e o upload, o programa decodificará os protocolos NMEA de entrada. Você pode abrir o monitor serial para ver os protocolos decodificados.
Se você não tem nenhum dispositivo NMEA em casa, você também pode usar um Simulador no seu PC e um adaptador USB para RS485 simples em vez de um dispositivo real.
Código
- Demonstração NMEA 0183
Demonstração NMEA 0183 Arduino
Analisando protocolos NMEA 0183#include// corresponde a Zihatec RS422 / RS485 shieldSoftwareSerial gps (2, 3); NMEA0183 nmea; void setup () {while (! Serial); Serial.begin (115200); gps.begin (4800); Serial.println ("teste do analisador NMEA0183");} void loop () {if (gps.available ()) {char c =gps.read (); if (nmea.update (c)) {Serial.print ("NMEA0183 frase aceita ("); Serial.print (nmea.getFields ()); Serial.print ("campos):"); Serial.write (nmea.getSentence ()); Serial.println (); }}}
Processo de manufatura
- C# Queue com Exemplos:O que é C# Queue e como usar?
- Como hackear IR Remotes
- Controle de um robô Roomba com Arduino e dispositivo Android
- Como fazer a interface do Arduino Mega com o Módulo GPS NEO-6M
- Como ler a temperatura e umidade em Blynk com DHT11
- Quão fácil é usar um termistor ?!
- Como fazer música com um Arduino
- Como usar o Modbus com Arduino
- Testador de dispositivo automático com Arduino
- Como usar um moedor de corte