Windmesser mit NMEA0183 NMEA200

Ich habe hier einen Windmesser aus dem Yacht Sport von Simrad liegen und würde diesen gerne für meine Wetterstation einsetzen.

Der Sensor selbst spricht NMEA2000
Ein Adapter auf NMEA0183 ist auch dabei.

Ich dachte immer NMEA0183 basiert auf RS485/RS422 aber mit meinem Adapter auf RS485 am Arduino sehe ich nichts...

Nun suche ich Hinweise darüber wie ich das am besten angehe vielleicht hat ja auch wer so etwas schon gemacht.

Dr. google hat noch nicht so richtig geholfen. Vielleicht fehlt mir auch einfach nur der richtige Suchbegriff.

Habt Ihr eine Idee wie ich da am besten vorgehe?

sunnyraven:
Ich dachte immer NMEA0183 basiert auf RS485/RS422 aber mit meinem Adapter auf RS485 am Arduino sehe ich nichts...

Nun suche ich Hinweise darüber wie ich das am besten angehe vielleicht hat ja auch wer so etwas schon gemacht.

Dr. google hat noch nicht so richtig geholfen. Vielleicht fehlt mir auch einfach nur der richtige Suchbegriff.

Habt Ihr eine Idee wie ich da am besten vorgehe?

Am besten zuerst einen Blick in das Datenblatt Deines NMEA0183-Adapters werfen, und da herauslesen, um was für eine Art serielle Schnittstelle es sich handelt und welche Baudrate und Übertragungsparameter verwendet werden.

NMEA0183 kann auch über eine RS232 Schnittstelle laufen. Und die Baudrate steht auch nicht allgemeingültig fest.

Heute habe ich endlich mal wieder Zeit gefunden mich mit der Sache zu befassen.

Es scheint sich tatsächlich um eine RS485/422 Schnittstelle zu handeln.

Gute Infos dazu habe ich hier gefunden:

Auf Seite zwei stehen die Erklärungen über die Einstellungen für die Kommunikation (Baud rate 4800, Number of data bits 8 (bit 7 is 0), Stop bits 1 (or more), Parity none, Handshake none)

Die Belegung der Kabel scheint auch genormt:
grün ist Senden A
gelb ist Senden B

braun ist Empfangen A
weiß ist Empfangen B

Ich habe dann Den Windmesser mit einem RS485 to USB Adapter und dem Rechner gefunden. Das ist dann die Ausgabe in einem Busmonitor:

Data received: 036 073 073 077 087 086 044 048 048 056 046 055 044 082 044 048 048 048 046 048 044 078 044 065 042 051 050 013 010 
Data received: 036 073 073 077 087 086 044 048 048 056 046 055 044 082 044 048 048 049 046 052 044 078 044 065 042 051 055 013 010 
Data received: 036 073 073 077 087 086 044 048 048 056 046 054 044 082 044 048 048 052 046 057 044 078 044 065 042 051 069 013 010 
Data received: 036 073 073 077 087 086 044 048 048 056 046 054 044 082 044 048 048 053 046 056 044 078 044 065 042 051 069 013 010 
Data received: 036 073 073 077 087 086 044 048 048 056 046 054 044 082 044 048 048 053 046 054 044 078 044 065 042 051 048 013 010 
Data received: 036 073 073 077 087 086 044 048 048 056 046 054 044 082 044 048 048 053 046 052 044 078 044 065 042 051 050 013 010 
Data received: 036 073 073 077 087 086 044 048 048 056 046 054 044 082 044 048 048 052 046 057 044 078 044 065 042 051 069 013 010 
Data received: 036 073 073 077 087 086 044 051 050 055 046 053 044 082 044 048 048 052 046 055 044 078 044 065 042 051 068 013 010 
Data received: 036 073 073 077 087 086 044 051 050 049 046 056 044 082 044 048 048 052 046 051 044 078 044 065 042 051 050 013 010 
Data received: 036 073 073 077 087 086 044 050 050 056 046 051 044 082 044 048 048 052 046 049 044 078 044 065 042 051 051 013 010 
Data received: 036 073 073 077 087 086 044 048 049 049 046 048 044 082 044 048 048 051 046 055 044 078 044 065 042 051 057 013 010 
Data received: 036 073 073 077 087 086 044 050 054 056 046 051 044 082 044 048 048 051 046 055 044 078 044 065 042 051 054 013 010

Was auf den ersten Blick recht vielversprechend ausschaut.

Dann habe ich den rs485 Adapter von linkpeaks.com (diese Adapter haben die gleiche Bauform wie x-Bee) auf ein x-Bee to USB Adapter gesteckt und mit dem Rechner Verbunden. Das Ergebnis sieht dann nicht so # aus:

Data received: 000 000 000 008 006 004 008 032 032 038 012 036 008 000 008 032 032 032 012 032 008 012 008 000 000 034 048 008 000 
Data received: 000 000 000 008 006 004 008 032 038 048 012 032 008 000 008 032 032 032 012 032 008 012 008 000 000 034 032 008 000 
Data received: 000 000 000 008 006 004 008 032 032 034 012 048 008 000 008 032 032 032 012 038 008 012 008 000 000 034 032 008 000 
Data received: 000 000 000 008 006 004 008 032 032 032 012 032 008 000 008 032 032 032 012 032 008 012 008 000 000 034 000 008 000 
Data received: 000 000 000 008 006 004 008 032 032 032 012 036 008 000 008 032 032 032 012 032 008 012 008 000 000 034 000 008 000 
Data received: 000 000 000 008 006 004 008 034 032 032 012 032 008 000 008 032 032 034 012 048 008 012 008 000 000 034 032 008 000 
Data received: 000 000 000 008 006 004 008 034 032 032 012 032 008 000 008 032 032 034 012 032 008 012 008 000 000 034 002 008 000 
Data received: 000 000 000 008 006 004 008 032 048 038 012 048 008 000 008 032 032 032 012 032 008 012 008 000 000 034 000 008 000 
Data received: 000 000 000 008 006 004 008 0

Mit dem Adapter habe ich aber einige Zeit benötigt bis ich einen gleichmäßigen Datenstrom hatte. Ich denke da muss ich nochmal ran und eventuell mit Abschlusswiederständen arbeiten.
Oder eventuell doch einen Rs485 zu UART Adapter selber bauen. Hat da wer einen guten Schaltplan bzw. wie sind denn da so die Erfahrungen mit den Beispielen von Maxim denn MAX481 IC`s habe ich noch im Schrank.

Im nächsten Schritt werde ich den Adapter nun nochmal mit dem Uno verbinden und dann schauen das ich die Daten auf den seriellen Monitor bekomme. Dies mal so als Update Tips, Tricks und Ratschläge sind jeder Zeit willkommen.

sunnyraven:
Dann habe ich den rs485 Adapter von linkpeaks.com (diese Adapter haben die gleiche Bauform wie x-Bee) auf ein x-Bee to USB Adapter gesteckt und mit dem Rechner Verbunden. Das Ergebnis sieht dann nicht so # aus:
...
Oder eventuell doch einen Rs485 zu UART Adapter selber bauen.

Ich weiß nicht, was Du da für Adapter verwendest oder testest, aber ich würde mir beim Chinaversender einen billigen "TTL to RS485" Adapter besorgen. Artikelnummer 171013044696 beispielsweise, mit MAX485 als Chip. Die TTL-Seite an zwei Arduino-Pins mittels Software-Serial an den Arduino dranschließen und die RS485 Seite an Dein Gerät.

Heute endlich habe ich Zeit gefunden an dem Projekt zu arbeiten.

Die Ausgabe des Sensors sieht so aus:

$IIMWV,108.3,R,012.1,N,A*35

Die Aufschlüsselung dazu:

$		Startzeichen

II		Talker ID (Integrated Instrumentation)

MWV	Code für den Messwertgeber MWV ist demnach ein Sensor für Windgeschwindigkeit und Windrichtung

283.2		Windrichtung in Grad (o bis 360)

R		Referenz (R= relativ, T=true)

000.0		Windgeschwindigkeit 

N		Einheit der Windgeschwindigkeit (K=km/h, M=m/sec, N=kt)

A		Status (A= Data Valid)

*36		Checksum

Jetzt den String zerlegen und weg speichern und ein weiterer Teil meiner kleinen Wetterstation ist fertig.

PS der Tip mit den Chinateilen für RS485 war gut. Hat zwar etwas gedauert bis sie da waren aber laufen super.