Friday, September 11, 2015

VERY ROUGH - NMEA-2000 bridge source posted

Over the past couple of days I have put together a VERY ROUGH NMEA-2000 bridge, see source code under above resource link (and make sure to copy down the needed libs from their resource tab as well).

This bridge is designed to run on an Arduino DUE connecting to the Serial ports on one or two Arduino Alternator Regulator.  It will receive ASCII strings via Serial 1, and Serial 2 (up to two regulators can be monitored), parse the received data, and place them into a local data structure for further use.

The 2nd part of the bridge will formulate a limited number of NMEA-2000 packets from this received/parsed data and send it out via the CAN0 port. It leverages work done by:
      Collin Kidder (collin80)  https://github.com/collin80/due_can
      Timo Lappalainen (ttlappalainen)  https://github.com/ttlappalainen

For now I have extended Timo's libs to include new PGNs, so make sure to use the libs from the resource tab above.  Once things are a bit proven I will submit the changes back to Timo for inclusion in the main source.

A final capability of the software is to self-generate simulated ASCII strings.  By including the current Arduino Alternator Regulator source and running it in TESTING mode ASCII strings are made available on Serial3 - just use jumpers to connect the Tx3 back to Rx1 and/or Rx2 for Bench testing.

Speaking of proving.  I do not have at this time sufficient hardware to do complete validation of this code.  Specially, I am not at this time able to receive and verify the NMEA-2000 packets.  (I have been able to validate the ASCII string receiving / parsing is working well).  I do have some additional hardware on order, but do not expect to be able to get access to it for a month or two.  (Life on the Float)

I am also a bit underwhelmed on the level of information available within the NMEA-2000 spec.  This source makes use of two PGNs:
  •  PNG:127506 DC Detailed Status
  •  PNG:127508 Battery Status 
One task is to review the PGNs populated and settle on the appropriate ones.

OK, this is a very very rough effort at this point.  And work is still needed (hence the 0.0.0 revision). But I know a few folks have expressed interest in this, and I am curious to see how it works out.  With regard to further proofing / refinements I would like to suggest we utilize the Google group Emailing list: https://groups.google.com/forum/#!forum/smart-alt    That way all folks interested can participate.

 OK, this will be interesting - and perhaps a small start to a proper integrated CAN  regulator project.