Skip to content

Latest commit

 

History

History

en

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

CanHacker (lawicel) CAN adapter on Arduino + MCP2515

Use that Library to communicate with MCP2515

Features

Implement communication with CAN bus via MCP2515 by CanHacker (lawicel) protocol.

  • send & receive can frames
  • supports standart (11 bit) & extended (29 bit) frames
  • supports remote frames (RTR)
  • supports filter by ID (mask + code)
  • interface using Stream: ability to work with Serial, SoftwareSerial, Ethernet and other
  • supported can baudrates from 10Kbps up to 1Mbps
  • supported modules with different oscillators (8, 16, 20 MHZ), 16 MHZ is default, use setClock if your oscillator is not 16MHZ
  • support CanHacker (application for Windows)
  • support CANreader (application for Android)

Library Installation

  1. Install MCP2515 Library
  2. Download the ZIP file from https://github.com/autowp/arduino-canhacker/archive/master.zip
  3. From the Arduino IDE: Sketch -> Include Library... -> Add .ZIP Library...
  4. Restart the Arduino IDE to see the new "canhacker" library with examples

Testes with Arduino Nano. On Arduino Uno when works with CanHacker for windows have problem with too long boot period and losing first command

Usage

Example

#include <can.h>
#include <mcp2515.h>

#include <CanHacker.h>
#include <CanHackerLineReader.h>
#include <lib.h>

#include <SPI.h>

const int SPI_CS_PIN = 10;
const int INT_PIN = 2;

CanHackerLineReader *lineReader = NULL;
CanHacker *canHacker = NULL;

void setup() {
    Serial.begin(115200);
    while (!Serial);
    SPI.begin();

    Stream *interfaceStream = &Serial;
    
    canHacker = new CanHacker(interfaceStream, NULL, SPI_CS_PIN);
    lineReader = new CanHackerLineReader(canHacker);
    
    pinMode(INT_PIN, INPUT);
}

void loop() {
    canHacker->processInterrupt();
    lineReader->process();
}

Protocol

Protocol CanHacker (lawicel) described in CanHacker for Windows documentation

Library implements it partially. Suported commands listed here.

Contributing

Feel free to open issues, create pull requests and other contributions