Hoe NMEA-0183 te gebruiken met Arduino
Componenten en benodigdheden
| × | 1 | ||||
| × | 1 |
Over dit project
NMEA-0183 is een elektrische standaard voor het aansluiten van GPS, SONAR, sensoren, stuurautomaten etc. in schepen en boten. In tegenstelling tot de nieuwere NMEA 2000-standaard (gebaseerd op CAN) is de NMEA 0183 gebaseerd op EIA RS422 (sommige oudere en/of eenvoudige systemen gebruiken RS-232 of een enkele draad).
Ik wil je laten zien hoe je een Arduino UNO (of een andere Arduino) aansluit op elk NMEA-0183-apparaat met differentiële uitgang. Hoewel de standaard geïsoleerde inputs en outputs vereist, is het handig om ons RS422/RS485 Arduino Shield met geïsoleerde interface te gebruiken.
Verbinding met NMEA 0183
In de onderstaande afbeelding ziet u een typisch apparaat met differentiële uitvoer. De terminals zijn NMEA OUT+ en NMEA OUT- of TX+ of TX-. De NMEA IN+ en NMEA IN- draden zijn optioneel.
Als je een enkele zenddraad van je apparaat hebt (waarschijnlijk gelabeld TX of NMEA OUT of iets dergelijks), dan gebruikt je apparaat het RS-232-protocol. In dit geval heeft u een eenvoudige RS232-converter nodig.
Jumper-instelling
- UART RX naar positie 2
- UART TX naar positie 3
- Spanning naar positie 5V
DIP-schakelaarinstelling
Firmware
Je kunt veel verschillende NMEA-0183-softwarestacks voor Arduino vinden. Een zeer goede oplossing is de NMEA-bibliotheek van Justin R Cutler
https://github.com/jrcutler/NMEA0183
Het is noodzakelijk om de pinnen voor de software UART te veranderen naar pin 2 en 3! Neem zorg dat de baud waarderen van de software uart is de hetzelfde als in uw NMEA apparaat - typisch 4800 Baud.
Proefdraaien
Na het compileren en uploaden zal het programma inkomende NMEA-protocollen decoderen. U kunt de seriële monitor openen om de gedecodeerde protocollen te zien.
Als je thuis geen NMEA-apparaat hebt, kun je in plaats van een echt apparaat ook een Simulator op je pc en een eenvoudige USB naar RS485-adapter gebruiken.
Code
- NMEA 0183-demo
NMEA 0183-demoArduino
Parsing van NMEA 0183-protocollen#include// komt overeen met Zihatec RS422/RS485 shieldSoftwareSerial gps(2, 3);NMEA0183 nmea;void setup(){ while (!Serial); Serieel.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 zin geaccepteerd ("); Serial.print(nmea.getFields()); Serial.print(" velden):"); Serial.write(nmea.getSentence()); Serieel.println(); } }}
Productieproces
- C# Queue met voorbeelden:wat is C# Queue en hoe te gebruiken?
- IR-afstandsbedieningen hacken
- Een Roomba-robot besturen met Arduino en Android-apparaat
- Hoe Arduino Mega te interfacen met NEO-6M GPS-module
- De temperatuur en vochtigheid op Blynk aflezen met DHT11
- Hoe gemakkelijk is het om een thermistor te gebruiken?!
- Muziek maken met een Arduino
- Modbus gebruiken met Arduino
- Automatische apparaattester met Arduino
- HID-compatibele UPS met Arduino
- Hoe een snijmolen te gebruiken