ArduinoでNMEA-0183を使用する方法
コンポーネントと消耗品
> ![]() |
| × | 1 | |||
| × | 1 |
このプロジェクトについて
NMEA-0183は、船舶やボートのGPS、SONAR、センサー、自動操縦装置などを接続するための電気規格です。新しいNMEA2000標準(CANに基づく)とは異なり、NMEA0183はEIARS422に基づいています(一部の古いシステムや単純なシステムではRS-232、または単線を使用しています)。
Arduino UNO(または他のArduino)を差動出力のNMEA-0183デバイスに接続する方法を紹介します。標準では分離された入力と出力が要求されていますが、分離されたインターフェースでRS422 / RS485Arduinoシールドを使用すると便利です。
NMEA0183への接続
下の写真では、差動出力を備えた典型的なデバイスを見ることができます。端子はNMEAOUT +およびNMEAOUT-またはTX +またはTX-です。 NMEA IN +およびNMEAIN-ワイヤーはオプションです。
<図>
デバイスからの送信線が1本ある場合(ほとんどの場合、TXまたはNMEA OUTなどのラベルが付いています)、デバイスはRS-232プロトコルを使用します。この場合、単純なRS232コンバータが必要になります。
ジャンパー設定 <図>

- UARTRXから位置2
- UARTTXから位置3
- 5Vを配置するための電圧
DIPスイッチの設定 <図>

ファームウェア
Arduino用のさまざまなNMEA-0183ソフトウェアスタックを見つけることができます。非常に優れたソリューションは、Justin RCutlerによるNMEAライブラリです
https://github.com/jrcutler/NMEA0183
ソフトウェアUARTのピンをピン2と3に変更する必要があります! 取る ケア それ ボー レート の ソフトウェア uart は 同じ as で あなた NMEA デバイス - 典型的 4800 ボー。
テスト実行
コンパイルしてアップロードした後、プログラムは着信NMEAプロトコルをデコードします。シリアルモニターを開いて、デコードされたプロトコルを確認できます。
自宅にNMEAデバイスがない場合は、実際のデバイスの代わりに、PCでシミュレーターと単純なUSB-RS485アダプターを使用することもできます。
<図>
コード
- NMEA0183デモ
NMEA0183デモ Arduino
NMEA0183プロトコルの解析#include// Zihatec RS422 / RS485に一致shieldSoftwareSerialgps(2、3); NMEA0183 nmea; void setup(){while(!Serial); Serial.begin(115200); gps.begin(4800); Serial.println( "NMEA0183パーサーテスト");} void loop(){if(gps.available()){char c =gps.read(); if(nmea.update(c)){Serial.print( "NMEA0183センテンスが受け入れられました("); Serial.print(nmea.getFields()); Serial.print( "fields):"); Serial.write(nmea.getSentence()); Serial.println(); }}}
製造プロセス