Giter Site home page Giter Site logo

ak-homberger / nmea2000-voyagedatarecorder Goto Github PK

View Code? Open in Web Editor NEW
26.0 3.0 5.0 703 KB

This is the develoment space for a NMEA 2000 Voyage Data Recorder based on an ESP32 with CAN bus and SD card. The logger is using a SN65HVD230 CAN bus transceiver.

License: GNU General Public License v3.0

C++ 100.00%
nmea2000 vdr esp32

nmea2000-voyagedatarecorder's Introduction

NMEA2000 Voyage Data Recorder / Logger

This is the develoment space for a NMEA 2000 Voyage Data Recorder based on an ESP32 with CAN bus and SD card. The logger is using a SN65HVD230 CAN bus transceiver.

For the logger, I use the pins GPIO4 for CAN RX and GPIO2 for CAN TX. This is because GPIO5 is used for SD card interface.

SD card pins

Current features:

  • Convert NMEA2000 to NMEA0183 (or alternatively to Seasmart/Actisense/Canview)
  • Store NMEA0183 messages data permanently to SD card (.log)
  • Optional storage as Seasmart (.ssm) CANViewer (.can) or Actisense (.ebl) data
  • Optional mutiplexing serial data from port 2 to NMEA0183 (e.g. for AIS messages). See WifiGateway for circuit for RS232 level conversion.

The logger is designed to be used with the OpenCPN Voyage Data Recorder Plugin (with .log files).

The .ebl and .log files can be read with the Actisense EBL Reader application (https://www.actisense.com/product/nmea-reader-and-ebl-reader/). The .can format can be read with the Yacht Devices CAN Log Viewer (https://www.yachtd.com/products/can_view.html). For Seasmart format (.ssm) I have not found a reader so far.

Configuration can be done with a config.txt file in SD root directory. Just add keywords (NMEA, Actisense, YDcan or Seasmart) to enable logging format. No config file means NMEA logging as default.

The code is based on the NMEA 2000 / NMEA0183 libraries from Timo Lappalainen (https://github.com/ttlappalainen). Download and install the following libraries from GitHub link above:

  • NMEA2000
  • NMEA2000_esp32
  • NMEA0183

Remove the 120 ohm resistor from the transceiver

For unknown reasons, many CAN bus transceivers for the ESP32 have a 120 Ohm resistor built into them. The resistor does not belong to the devices at the ends of the stub lines, but to the ends of the backbone cable.

Whether the transceiver contains a 120 ohm resistor can be determined either by looking at the circuit diagram or by measuring with the multimeter.

A knife tip is suitable for removing the SMD resistor. Use it to scratch or pry off the resistance. With the transceiver shown here, place the tip of the knife in front of the resistor (between the chip and the resistor) and support the knife against the chip. Then lever the tip against the resistance and use it to scratch / loosen / break the resistance. Whichever happens first.

Transceiver

It then looks like the picture. Then measure to be on the safe side. Without a 120 ohm resistor, the multimeter shows approx. 75 kOhm.

Updates

Version 0.6: 15.12.2019 - Added CAN pin definition

Version 0.5: 20.08.2019 - Added support for Yacht Devices CAN Log Viewer format (.can)

Version 0.4: 18.08.2019 - Added configuration via config.txt file on SD card

Version 0.3: 17.08.2019 - Allow logging of NMEA0183 (.log), Seasmart (.ssm) and Actisense format (.ebl).

Version 0.2: 16.08.2019 - Create directories per day, files per hour. Synchronising ESP32 time with NMEA2000 time

Version 0.1: 16.08.2019 - Initial version

nmea2000-voyagedatarecorder's People

Contributors

ak-homberger avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

nmea2000-voyagedatarecorder's Issues

Timestamp not working in .ebl format

First, thanks for all your work! More or less everything is working out of the box.

Only thing not working was timestamping in the .ebl format. All frames have no timestamp, but GPS is connected and is sending GPS Time Messages. Is there anything I can check to make it work?
Also I was hoping the readers have some GUI to analyse races, but Actisense and Yacht log viewer only have message viewers. Do you now any better viewer?

Otherwise I would have to write my own viewer, but that would require timestamps in the .log format. I think I could implement that myself.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.