Connecter Arduino à NMEA‑0183 : Guide étape par étape
Composants et fournitures
| Composant | Quantité |
|---|---|
| Arduino UNO | 1 |
| Shield RS422 / RS485 | 1 |
À propos du projet
NMEA-0183 est une norme électrique pour connecter GPS, sondeurs, capteurs, pilotes automatiques, etc. sur les navires et bateaux. Contrairement à la norme plus récente NMEA 2000 (basée sur CAN), NMEA 0183 repose sur EIA RS422 (certains systèmes plus anciens ou simples utilisent RS-232 ou un fil unique).
Je vais vous montrer comment connecter un Arduino UNO (ou tout autre Arduino) à n'importe quel dispositif NMEA-0183 avec sortie différentielle. Bien que la norme prévoie des entrées/sorties isolées, il est pratique d'utiliser notre shield Arduino RS422/RS485 avec interface isolée.
Connexion au NMEA 0183
Sur l'image ci-dessous, vous pouvez voir un dispositif typique avec sortie différentielle. Les bornes sont NMEA OUT+ et NMEA OUT- ou TX+ ou TX-. Les fils NMEA IN+ et NMEA IN- sont optionnels.

Si vous avez un seul fil de transmission depuis votre dispositif (souvent étiqueté TX ou NMEA OUT), votre dispositif utilise le protocole RS-232. Dans ce cas, vous aurez besoin d'un simple convertisseur RS232.
Configuration des jumpers

- UART RX sur la position 2
- UART TX sur la position 3
- Tension sur la position 5V
Configuration des commutateurs DIP

Firmware
Il existe de nombreuses bibliothèques logicielles NMEA-0183 pour Arduino. Une excellente solution est la bibliothèque NMEA de Justin R Cutler : GitHub NMEA0183
Il est impératif de modifier les broches pour l'UART logiciel sur les broches 2 et 3 ! Assurez-vous que le débit en bauds de l'UART logiciel correspond à celui de votre dispositif NMEA - généralement 4800 bauds.
Test
Après compilation et téléversement, le programme décodera les protocoles NMEA entrants. Vous pouvez ouvrir le moniteur série pour voir les protocoles décodés.
Si vous n'avez pas de dispositif NMEA chez vous, vous pouvez également utiliser un simulateur sur votre PC et un simple adaptateur USB vers RS485 au lieu d'un vrai dispositif.

Code
Démo NMEA 0183
#include <NMEA0183.h> // correspond au shield Zihatec RS422/RS485 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(); } } }
Processus de fabrication
- Maîtriser les Files C# (Queue) : Enqueue, Dequeue et Opérations Premier Entré Premier Sorti
- Construire une télécommande IR universelle avec Arduino : Guide étape par étape
- Contrôlez votre Roomba Create 2 avec Arduino et Android – Guide pas à pas
- Connecter un module GPS NEO‑6M à l'Arduino Mega : Guide pas à pas
- Lire température et humidité avec DHT11 sur Blynk – Tutoriel Arduino pas à pas
- Utiliser une thermistance facilement : Guide étape par étape Arduino
- Générer des Sons Musicaux avec Arduino : Guide Pas à Pas
- Maîtriser Modbus sur Arduino : Guide étape par étape
- Maîtriser les techniques de la rectifieuse d'outils : guide pratique