Go Down

Topic: NMEA 2000 Shield (Read 271813 times) previous topic - next topic

Dick3

Hi,

I'm looking for the NMEA PGN 127245 Rudder field format for SW programming.
Can anyone help me, please?

Thanks!

Jan Richard

Enzycal

#76
Mar 04, 2016, 05:05 pm Last Edit: Mar 07, 2016, 10:15 am by Enzycal
Hi, is it possible to use this module http://www.14core.com/wiring-the-mcp2515-controller-area-network-can-bus-diagnostics/ with NMEA2000 library?

maxik

Do I understand correctly that for use of the library to Maple Minnie I need additional Shield?

Hobbe1979

Hi,
Great work you have done. I have managd to setup an Arduino due with a mcp2562 as described in the documentation from timolappalainen. I'm trying to communicate with a Garmin 721xs but I experience several problems.

It works if I use ActisenseListenerSender and run it with the nmea simulator by timolappalainen from openskipper. I do not receive all info sent. The wind data, tank and RPM does not show on the garmin unit. However fuel rate, engine temp, oil temp works among others. All simulated devices  appears in the list of devices on the garmin unit.

So now to the real trouble
If I use some of the other exampels as message sender or temp monitor. It shows up in the list and I receive data. Not complete but some of the data works. Then after 30-60 seconds it stops and the unit disappears from the list of devices. If I look on the traffic on the serial bus (usb), I still receive data from the garmin unit and the arduino seams to still send data. So I guess that its been kicked out by the garmin unit of some reason.
If I just initiate the Arduino and disable it from sending messages, then its stays in the list on the garmin unit.

I guess that I probably missed something important….   I have been reading through most of the documentation and libraries. I have to say that I'm impressed even if I do not understand even half.

I'm happy for all kind of support to get this to work.

The4thzeke

Hello everyone, I am a complete Noob to Arduino and forums in general so I hope I do not insult anyone with my first post.  I would like to use the Arduino to receive depth data from my Raymarine NMEA 2000 depth sounder to control a fishing downrigger.  The Arduino would adjust the depth of my fishing gear based on the information sent from my depth sounder.  I'm okay with the mechanical aspects but have really no idea about the programming end of things.  I would appeciate any oppinion on the "do-ability" of this project as well as the level of programming complexity (ie. Likelihood of existing libraries for the programming).  I have spent some time searching the forum and the web for similar projects and I think others have done similar things but have not found anyone who has taken depth information from a NMEA 2000 system.  Thank you in advance and forgive me if I posted this in the wrong place.

Hobbe1979

#80
Mar 16, 2016, 06:15 pm Last Edit: Mar 17, 2016, 10:00 am by Hobbe1979
Hello,
I´ve been keeping on trying to find out why I get kicked out from the Garmin unit. I have made some interesting observations.  When I watch the traffic sent from the Arduino with the temature monitor program.

If I  comment: " // SendN2kTemperature();"  so it doesn't send any messages. it will stay in the list in the Garmin unit.

The traffic looks as follows:
--------------------------------------
CAN device ready
Start address claim
Pri:6 PGN:60928 Source:22 Dest:255 Len:8 Data:FB,FF,5F,2E,0,A0,64,40
Pri:6 PGN:126996 Source:22 Dest:255 Len:134 Data:FF,FF,9A,2,45,78,63,61,6C,69,62,75,72,20,58,2D,31,31,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,2E,32,2E,30,2E,31,30,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,2E,30,2E,30,2E,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,30,39,37,31,34,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,FF,FF
Pri:6 PGN:60928 Source:22 Dest:0 Len:8 Data:FB,FF,5F,2E,0,A0,64,40
Pri:6 PGN:60928 Source:22 Dest:0 Len:8 Data:FB,FF,5F,2E,0,A0,64,40
-------------------------------------

And there after keep on sending PGN:60928 with a few seconds interval.
However when uncomment: " // SendN2kTemperature();" and I send a message, the traffic looks as follows. I Have noticed that it stops sending PGN:60928. Instead it send only PGN:13031.  See under.
I guess that this could be the reason? Are there any way of getting it to send PGN:60928 frequently?

------------------------------------------
CAN device ready
Start address claim
Pri:6 PGN:60928 Source:22 Dest:255 Len:8 Data:FB,FF,5F,2E,0,A0,64,40
Pri:6 PGN:126996 Source:22 Dest:255 Len:134 Data:FF,FF,9A,2,45,78,63,61,6C,69,62,75,72,20,58,2D,31,31,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,2E,32,2E,30,2E,31,30,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,2E,30,2E,30,2E,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,30,39,37,31,34,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,FF,FF
Pri:6 PGN:130310 Source:22 Dest:255 Len:8 Data:16,C1,70,FF,FF,FF,FF,FF
Pri:6 PGN:130310 Source:22 Dest:255 Len:8 Data:16,C1,70,FF,FF,FF,FF,FF
------------------------------

Hobbe1979

I have figured out that, if I do send an address claim by using "NMEA2000.SendIsoAddressClaim();" every 2000 milliseconds,  It works well with the Garmin 721xs.  Then everything seems stable. The RPM data works now. It seems to be just a setting in the garmin that was the issue.

Is this the correct way of solving my issue?

heryoon

#82
Mar 19, 2016, 01:48 am Last Edit: Mar 19, 2016, 03:42 am by heryoon
Hello, I'm trying to use the Mega and the Can-Bus shield in order to get readings from my NMEA 2000 "Intelliducer" from Garmin.
When I was attempting to use the temperature monitor sample code,
"CAN device failed to open"
from the
NMEA2000.SetForwardType(tNMEA2000::fwdt_Text); part of the code.
Even though on my Can-Bus shield, the RX led is flashing.

Any idea why it's failing to "open" to the device which I'm assuming it's not communicating with it???

Hobbe1979

Hello, I'm trying to use the Mega and the Can-Bus shield in order to get readings from my NMEA 2000 "Intelliducer" from Garmin.
When I was attempting to use the temperature monitor sample code,
"CAN device failed to open"
from the
NMEA2000.SetForwardType(tNMEA2000::fwdt_Text); part of the code.
Even though on my Can-Bus shield, the RX led is flashing.

Any idea why it's failing to "open" to the device which I'm assuming it's not communicating with it???
I got the same issue with my mega when the MCP2515 where not hooked up correctly. So I think that its caused when there are no working communication to the can controller.

Heatz

Hello, I'm trying to use the Mega and the Can-Bus shield in order to get readings from my NMEA 2000 "Intelliducer" from Garmin.
When I was attempting to use the temperature monitor sample code,
"CAN device failed to open"
from the
NMEA2000.SetForwardType(tNMEA2000::fwdt_Text); part of the code.
Even though on my Can-Bus shield, the RX led is flashing.

Any idea why it's failing to "open" to the device which I'm assuming it's not communicating with it???
I had issues getting my mega to work with the Canbus shield. Turned out I had the wrong MISO pin selected (or something like that). I posted about this somewhere, but can't seem to remember at this time.

Adrculda

Hey guys...
My plan is to use a Garmin GFS10 for fuel consumption and level alongside an Arduino DUE faced with Engine Data Acquisition ( It's and older boat, not fuel injected ) and everything is analog. With that being said I would like to use this as an performance tracking tool and as backup if one of those gauges start to "lie".

Would like to add the following items into the NMEA2000 Stream with the DUE.
- Engine RPM ( I will have to devise a simple circuit as the only signal I have is from the coil )
- Engine Water Temp
- Port Exhaust Temp
- Starboard Exhaust Temp
- Water Temp / Speed ( Using Mercruiser 859223 Unit )
- Heading / Compass
- Trim / Tilt


 I'm going to be using an Lowrance Elite 7Ti as an display unit.

timolappalainen

Hi Guys,

I have not followed this forum for a while, since I should get messages by email and I have not got any until now. So I have thought this has been dead. Here are some late answers.

Please check arduino library on https://github.com/ttlappalainen/NMEA2000 . It has been developed more and used by several projects. Under documents there are drawings to make own devices and how to start with library. Under examples there are ready code e.g. for sending some temperatures.

Adrculda:
So for sending engine RPM you just use:
    SetN2kEngineParamRapid(N2kMsg, EngineInstance, RPM);
    NMEA2000.SendMsg(N2kMsg);

For engine water temp you need to use
    SetN2kEngineDynamicParam(N2kMsg, 1,N2kDoubleNA,N2kDoubleNA,EngineWaterTemp,N2kDoubleNA,N2kDoubleNA,N2kDoubleNA);
    NMEA2000.SendMsg(N2kMsg);

And for temperatures as in example TemperatureMonitor.ino
    SetN2kTemperature(N2kMsg, 1, 1, N2kts_ExhaustGasTemperature, ExhaustTempPort);
    NMEA2000.SendMsg(N2kMsg);
    SetN2kTemperature(N2kMsg, 1, 2, N2kts_ExhaustGasTemperature, ExhaustTempStarboard);
    NMEA2000.SendMsg(N2kMsg);

Hobbe1979:
PGN 60928 is only for address claiming and it will be done only when requested. So that should ne be sent frequently. Unfortunately some units expects it. E.g. my Garmin GMI 20 does not.

Dick3:
In NMEA2000 library there is ready function SetN2kRudder. If you need to know how data is build, read code on N2kMessages.cpp.

Enzycal:
Yes you can. It is almost the same as my sample schematic: https://github.com/ttlappalainen/NMEA2000/blob/master/Documents/ArduinoMega_CAN_with_MCP2515_MCP2551.pdf

jukkap

Hello,

My goal is to get speed information from Raymarine a67 and display it in another display/meter.

Problem is that when Raymarine contacts satellites, NMEA messages ends from Raymarine and Raymarine don´t receve any messages from AT90CAN128.
 
When Raymarine is tested indoors and it can´t get satellites, system shows work  just fine.
For example it ansewers ISO reguest speed IDE: 59904 Data: 128259 (speed), even without address claim.

What would be the solution?

1. Should i pay attension something in address claim?
            (Field informations, Device instance, Manufacturercode etc.)

2. Should Product Information(126996) be send, even Raymarine or ohter nodes don´t request it?
             (Tryed to send, but Raymarine not seems to understand message)

3. Or should i give up and by Actisense NGT-1 ISO? Could it be the solution of this project. Any experiences  from Actisence?


Harware setup:
-AT90CAN128
-MCP2551
-Raymarine a67


Thanks,

Jukka Penttinen


timolappalainen

Hi jukkap,

First do you use my NMEA2000 library with NMEA2000_avr?
Have you tested just listen traffic on bus by using example ActisenseListener and do you get it right?
What is your other display?

1. I have tested a lot with Garmin GMI 20 and it seem to be rather flexible. With my current address claiming code it works fine. But some other system required that address claiming should be sent every 2 sec. So who can say about Raymarine does it accept only registered manufacturer instead my default 2046, which is the highest possible value.

2. In principle there is no need to send product information without request. Devices should register devices on the bus by address claiming and if they are interested about sender, then they should request product information.

3. I have NGT-1 ISO and it is good. After writing NMEA2000 library I have done everything with with it and NGT is just as a spare on boat.

If you are located in near Turku I would be interested to test your MFD with Arduinos.

Adrculda

So...

Went Ahead and Ordered a waterproof enclosure and will be using an AMP seal connector for the sensor inputs from the engine.

Does anyone know what the part number for the NMEA2000 connectors are ??
I'm almost sure TE / AMP would be the one to supply them...

Go Up