Git Product home page Git Product logo

latonita / arduino-canbus-monitor Goto Github PK

View Code? Open in Web Editor NEW
296.0 42.0 89.0 1.76 MB

Can bus monitoring tool based on arduino and can bus shield. Implements CAN ASCII/SLCAN protocol compatible with Lawicel CAN232/CANUSB. Can be used for monitoring low speed CAN (interior can bus of most cars, less than 500kbps). For higher speeds serial port can become a bottleneck in case data density is high.

License: MIT License

C++ 85.96% C 14.04%
can-bus arduino protocol slcan-protocol ascii bus-monitoring can slcan

arduino-canbus-monitor's Introduction

arduino-canbus-monitor Build Status Coverity Scan Analytics

CAN BUS monitoring software based on Arduino with Seeduino/ElecFreaks CAN BUS shield based on MCP2515 (Numerous other MCP2515 based CAN BUS modules from ebay and aliexpress work well to).

This software implements CAN ASCII / Serial CAN / SLCAN protocol compatible with Lawicel CAN232/CANUSB.

As for PC counterpart software I personally used and can recommend two tools:

  1. [Windows] CANHacker tool v.2.00.01 (by fuchs) to sniff and visualize data on the bus. You can download CANHacker tool from this forum page: http://www.canhack.net/viewforum.php?f=25&sid=ac01d465f19e088cb160cab630561607 (P.S. Looks like canhack.net no longer operating, here is a copy of installation file: CANHackerV2.00.01.exe)

  2. [Windows] CAN-COOL (by MHS Elektronik), open source, but unfortunaly available only in German. Download link: http://www.mhs-elektronik.de/index.php?module=content&action=show&page=can_cool (Make sure you select RS232 and SL-CAN protocol and then click hardware bus reset icon on a toolbar)

  3. [Linux] SLCAN/SocketCAN can be used https://github.com/linux-can/can-utils. See details in the end of this README file

This monitor uses CAN BUS library forked from https://github.com/Seeed-Studio/CAN_BUS_Shield.

Copyright (C) 2015,2016 Anton Viktorov [email protected]

You can buy me a beer if you like the tool :o) Donate

See protocol definition here http://www.can232.com/docs/can232_v3.pdf and here http://www.can232.com/docs/canusb_manual.pdf

Commands not supported/not implemented:

  • s, W, M, m, U.

Commands modified:

  • S - supports not declared 83.3 rate
  • F - returns MCP2515 error flags
  • Z - extra Z2 option enables 4 byte timestamp vs standard 2 byte (60000ms max)
CMD | IMPLEMENTED | SYNTAX               | DESCRIPTION
------------------------------------------------------------------------------------------------------------
'S' |   YES+      |   Sn[CR]               Setup with standard CAN bit-rates where n is 0-8.
    |             |                        S0 10Kbit          S4 125Kbit         S8 1Mbit
    |             |                        S1 20Kbit          S5 250Kbit         S9 83.3Kbit
    |             |                        S2 50Kbit          S6 500Kbit
    |             |                        S3 100Kbit         S7 800Kbit
's' |    -        |   sxxyy[CR]            Setup with BTR0/BTR1 CAN bit-rates where xx and yy is a hex value.
'O' |   YES       |   O[CR]                Open the CAN channel in normal mode (sending & receiving).
'L' |   YES       |   L[CR]                Open the CAN channel in listen only mode (receiving).
'C' |   YES       |   C[CR]                Close the CAN channel.
't' |   YES       |   tiiildd...[CR]       Transmit a standard (11bit) CAN frame.
'T' |   YES       |   Tiiiiiiiildd...[CR]  Transmit an extended (29bit) CAN frame
'r' |   YES       |   riiil[CR]            Transmit an standard RTR (11bit) CAN frame.
'R' |   YES       |   Riiiiiiiil[CR]       Transmit an extended RTR (29bit) CAN frame.
'P' |   YES       |   P[CR]                Poll incomming FIFO for CAN frames (single poll)
'A' |   YES       |   A[CR]                Polls incomming FIFO for CAN frames (all pending frames)
'F' |   YES+      |   F[CR]                Read Status Flags.
'X' |   YES       |   Xn[CR]               Sets Auto Poll/Send ON/OFF for received frames.
'W' |    -        |   Wn[CR]               Filter mode setting. By default CAN232 works in dual filter mode (0) and is backwards compatible with previous CAN232 versions.
'M' |    -        |   Mxxxxxxxx[CR]        Sets Acceptance Code Register (ACn Register of SJA1000). // we use MCP2515, not supported
'm' |    -        |   mxxxxxxxx[CR]        Sets Acceptance Mask Register (AMn Register of SJA1000). // we use MCP2515, not supported
'U' |   YES       |   Un[CR]               Setup UART with a new baud rate where n is 0-6.
'V' |   YES       |   v[CR]                Get Version number of both CAN232 hardware and software
'v' |   YES       |   V[CR]                Get Version number of both CAN232 hardware and software
'N' |   YES       |   N[CR]                Get Serial number of the CAN232.
'Z' |   YES+      |   Zn[CR]               Sets Time Stamp ON/OFF for received frames only. EXTENSION to LAWICEL: Z2 - millis() timestamp w/o standard 60000ms cycle
'Q' |   YES  todo |   Qn[CR]               Auto Startup feature (from power on). 

Linux SLCAN instructions

Prerequisites

Install can-utils first. On Ubuntu and other Debian-based distros can-utils package is included into standard repositories:

sudo apt install can-utils

For other distros please follow respective instructions, start from here https://github.com/linux-can/can-utils

Create CAN device

sudo slcan_attach -f -s4 -o /dev/ttyUSB0
sudo slcand -S 115200 /dev/ttyUSB0 can0  
sudo ifconfig can0 up

where 115200 is port speed, /dev/ttyUSB0 - name of your arduino device. can be different

To dump running traffic

candump can0

To delete CAN device

sudo ifconfig can0 down
sudo killall slcand

arduino-canbus-monitor's People

Contributors

latonita avatar per1234 avatar thorbjoernschulz 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  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  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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

arduino-canbus-monitor's Issues

Sending code seems to give several errors in data. Recieve working perfectly.

Hi I built you code onto an arduino UNO, with CAN module with 16MHz clock. When I used the CANHACKER software to send messages they do not get sent correctly. I put a loop back onto another comm port and the comport serial messages seem to be correctly formatted as per the Lawicel spec. If a message is sent with DLC of 8, no data bytes are sent. If the DLC is less than 8, the bytes are sent but are wrong. If I send a can message with the following: ID006, DLC7, 12,34,56,78,50,40,30, what is recieved is ID006, DLC7, 22,44,66,88,00,00,00. Any ideas? Hardware setup: I checked this with a Peakcan USB, and IXXAT tincan, both showed same messages. By the way great project, and a real good way for people to get a low cost can analyser. Hope this info helps. Regards

Is it an alternative to CANtact?

Hi Anton,

would Arduino UNO and Freematics CAN-BUS shield v1.2 enough to sniff 500kbs CAN bus of car? I mean, is 16MHz Uno is capable to process all CAN data without running out of the buffer?

I know about CANtact, but it uses more powerful STM32.

Thanks!

CanPlayer Not working

So i have connected wires in this manner i'm able to do candamp can0 and receive packets correctly.

shot

so i did candamp -l can0

and when I'm doing canplayer -I file.log it's not working :(

Problem with mkr can shields

Hello
I'm trying to use canhacker with canbus-monitor. I have two boards, an Seeed studio can shield and a MKR GSM with MKR Can shield, and the seeed studio can shield can conect to can hacker without problems but the MKR can shield can't even conect in the can hacker.

I changed the CS and INT pin to 9 and 7 respectively but it don't conect. I'm guessing that SAMD boards have another configuration for RS-232 but I'm not sure.

The reason that I'm trying to use the canhacker in MKR board is the machinery that i'm trying to conect. The seed studio can't read can messages in J1939 but the MKR board can, and I need to trace the can messages.

Weird Issue on receiving data

This is kind of weird for me to explain but here goes. When I first open the monitor the data is happily streaming away. If I do close "C" say to change the CAN rate say with an "S8" it returns fine with a CR as it should. Now if do an "O" nothing happens. I tried say with a "P" or "A" but then I get the bell. Now if I put it in listen only mode "L" and send a "P" it does a CR but do not see any data. I know data is still streaming because I can see it.

What am I doing wrong, help :)
Mike

Problem with SavvyCAN

When using SavvyCAN, Arduino Nano with MCP2515 8MHz I keep getting HEX 07 back when sending dumps.


Write to serial -> 74 33 38 32 31 30 30 d (t328100)
Got data from serial. Len = 1
07 <<< Error

Savvy CAN v208

Can anyone help me?

By using CANable there is no problem

Instructions for Linux

Hallo,

on Linux I used the follow instructions to create a can0 device in conjunction with sudo:

slcan_attach -f -s4 -o /dev/ttyUSB0
slcand -S 115200 /dev/ttyUSB0 can0  
ifconfig can0 up 

To dump the running traffic the following command can be used

candump can0

To delete the interface the following commands can be used:

ifconfig can0 down
killall slcand

On Debian or Ubuntu this command:

apt install can-utils

installs the neccessary packages.

Can you please add theses instructions to the Readme? ๐Ÿ˜ƒ

Mebus

SavvyCAN not receiving a timestamp?

Hi

I found this library, and it appears to work great with my Nano, MCP2515 and SavvyCAN - except, no timestamp is passed through?

I see there's a list of command, I'd hoped they were commands I could send through the arduino serial monitor to enable timestamps (Z, Z2 etc) but no joy?

Would appreciate any pointers, thanks!

83.3 KBPS

Hi.I have 2000 year mercedes.There are 2 can line.It works with canhacker which is 500 kbps but It doesn't work at all which is 83.3 kpbs

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.