NMEA 2000 is a closed CAN-BUS standard for marine electronics. It would be awesome to have a shield that can accept the standard NMEA 2000 or that has a screw down terminal to accept bare wires.
NMEA 2000 supplies both power and data in it's cable. Not sure if it's adequate to power the ardunio.
If someone out there can handle the hardware and board side of things, I could help do the research.
Building a CAN shield for the Arduino is quite simple. You just need a SPI-based CAN controller (ex: MCP2515) and a CAN interface (ex: MCP2551). The N2K bus typically provides 12VDC so you will need a regulator in order to power the arduino and the shield, and some kind of optical isolation between CAN interface and CAN controller if you want to stay clean. This is just for the physical side of the engine. Then you'll need to implement all the N2K protocol into the Arduino, but remember the following:
NMEA 2000 is a proprietary protocol. You'll surely need to purchase the specification from the NMEA association (several $1000's if I remember well).
If you want to certify the product, you'll need to pay for a N2K ID to the NMEA association and later you'll need to pay for the certification process.
I've worked with NMEA 2000 in the past so feel free to drop more questions if you need.
Depending on the amount of N2K nodes available on the bus and their outgoing traffic load (some N2K devices are programmed to drop CAN messages every 100 ms), you could find that your Arduino-based node is not capable to accept all the traffic load without loosing packets so If you're thinking in using the Arduino as a kind of PC gateway this could be an issue. For end-device applications the AVR should be fine.
Did you ever get anywhere with NMEA 2k -> Arduino? I'm considering the CAN shield to start playing with it.. don't want to recreate the wheel if you've made progress.
I just saw several NMEA2000 installations yesterday at the Genoa, Italy Boat Show. Immense. Many 100 foot yachts. All NMEA2000 setups were on carpeted booths and high-end graphics.
The only DIY that crowd seemed to do was mixing drinks
If anyone gets into NMEA-Anything start a thread on the forum... I've done a little.
Is correct to use that Can-Bus board to send data??? The structure of can bus message is the same of NMEA2000 message???
Yes, you should be able to connect an Arduino to a CAN bus through this board. However, bear in mind the actual traffic load in the bus and the limited computing power of an Arduino. If you just want to develop a "sender" application it's should be OK.
Is there any library that I can use???
No free or open source library if I remember well. Working with NMEA2000 typically requires you to buy their specs.
I have just started with embedded programming but been writing enterprise software for many years.
I have just pulled together a base NMEA 2000 / J1939 protocol stack. Currently I have support for a limited number of PGNs but I do have support for single and fast frame NMEA2000 messages. The current project is to create NMEA 2000 transducer that will read analog engine data and broadcast PGNs 127488 (engine Rapid), 127489 (engine dynamic), 127505 (fuel level). The protocol stack is built to quick add additional PGNs with minimal amount of code.
Also I'm finishing up support for address claim and other NMEA 2000 group functions. If you are interested in working with me on adding additional capabilities and functions let me know. The current implementation runs on Arduino Uno with Sparkfun CAN-bus that uses MCP2515 CAN controller.
Hi, @southern_cross: I'm most interested in your work. Myself looking at the possibilities to use Arduino + shield to prototype a marine monitoring interface. Basically I would want to monitor and convert to NMEA2000 the engine data you mention plus some additional ones, like PGN 127508 - Battery Status. Possibly also some environmental data and in future also read and parse the AIS PGNs. I've previously only been working in the NMEA0183 domain though now believe that the transition to 2000 is inevitable. If you are willing to share your progress and also specify how you would want to co-operate I'd be very happy to join.