Skip to content

nopnop2002/Robotell-USB-CAN-Python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Robotell-USB-CAN-Python

Python program for Robotell USB-CAN Adapter

Background

I've bought a Robotell USB-CAN Adapter from AliExpress.
USB-CAN Adapter

The Windows application is published here.
The link described as "ourdev_627692IXWNNX.rar" in the page is the Windows application.
But I can't understand Chinese.

So, I analyzed the communication message that flows through USB and created a new application with Python.

Software Requiment

  • pyserial
$ sudo apt install python3-pip python3-setuptools
$ python3 -m pip install pyserial   
  • socat
$ sudo apt install socat   

How to use

$ git clone https://github.com/nopnop2002/Robotell-USB-CAN-Python
$ cd Robotell-USB-CAN-Python
$ python ./usb-can.py --help
usage: usb-can.py [-h] [-p PORT] [-s SPEED] [-u UDP]
                  [-l {DEBUG,INFO,WARNING,ERROR,CRITICAL}]

optional arguments:
  -h, --help            show this help message and exit
  -p PORT, --port PORT  open port
  -s SPEED, --speed SPEED
                        can bit rate
  -u UDP, --udp UDP     UDP receive port
  -l {DEBUG,INFO,WARNING,ERROR,CRITICAL}, --log {DEBUG,INFO,WARNING,ERROR,CRITICAL}
                        Set the logging level
  • port
    Communication port.
    Default is /dev/ttyUSB0.
    Be sure to specify the correct port in Windows 10.

  • speed
    CAN bit rate.
    Default is 500Kbps.
    Supporting speed is 1M/800K/500K/400K/250K/125K/100K.

  • udp
    UDP port number for receiving commands from the outside.
    Default is 8200

  • log
    Log level.
    Default is WARNING.

Information of the USB-CAN Adapter

These displays are internal information of the USB-CAN Adapter, not CAN FRAME.

  • BAUDRATE is the current speed.
    0x20-0xA1-0x07-0x00 is 0x0007A120(=500,000)

  • VERSION is firmware version.

  • FILTERxx is the current receive filter setting.
    The initial value enables reception of all CAN FRAMEs.

BAUDRATE ID: 0x01FFFED0  DLC: 4  Data: 0x20 0xA1 0x07 0x00
VERSION  ID: 0x01FFFFE0  DLC: 8  Data: 0x01 0x00 0x00 0x00 0xC5 0x24 0x00 0x08
CPUINFO0 ID: 0x01FFFFF0  DLC: 8  Data: 0x57 0xFF 0x73 0x06 0x67 0x75 0x54 0x55
CPUINFO1 ID: 0x01FFFFF1  DLC: 8  Data: 0x11 0x30 0x17 0x67 0x00 0x00 0x00 0x00
ABOM     ID: 0x01FFFEB0  DLC: 8  Data: 0x00 0x00 0x00 0x00 0xC5 0x24 0x00 0x08
ART      ID: 0x01FFFEA0  DLC: 8  Data: 0x00 0x00 0x00 0x00 0xC5 0x24 0x00 0x08
FILTER00 ID: 0x01FFFEE0  DLC: 8  Data: 0x00 0x00 0x00 0x80 0x00 0x00 0x00 0x00
FILTER01 ID: 0x01FFFEE1  DLC: 8  Data: 0x00 0x00 0x00 0xC0 0x00 0x00 0x00 0x00
FILTER02 ID: 0x01FFFEE2  DLC: 8  Data: 0xFF 0xFF 0xFF 0x5F 0xFF 0xFF 0xFF 0x1F
FILTER03 ID: 0x01FFFEE3  DLC: 8  Data: 0xFF 0xFF 0xFF 0x5F 0xFF 0xFF 0xFF 0x1F
FILTER04 ID: 0x01FFFEE4  DLC: 8  Data: 0xFF 0xFF 0xFF 0x5F 0xFF 0xFF 0xFF 0x1F
FILTER05 ID: 0x01FFFEE5  DLC: 8  Data: 0xFF 0xFF 0xFF 0x5F 0xFF 0xFF 0xFF 0x1F
FILTER06 ID: 0x01FFFEE6  DLC: 8  Data: 0xFF 0xFF 0xFF 0x5F 0xFF 0xFF 0xFF 0x1F
FILTER07 ID: 0x01FFFEE7  DLC: 8  Data: 0xFF 0xFF 0xFF 0x5F 0xFF 0xFF 0xFF 0x1F
FILTER08 ID: 0x01FFFEE8  DLC: 8  Data: 0xFF 0xFF 0xFF 0x5F 0xFF 0xFF 0xFF 0x1F
FILTER09 ID: 0x01FFFEE9  DLC: 8  Data: 0xFF 0xFF 0xFF 0x5F 0xFF 0xFF 0xFF 0x1F
FILTER10 ID: 0x01FFFEEA  DLC: 8  Data: 0xFF 0xFF 0xFF 0x5F 0xFF 0xFF 0xFF 0x1F
FILTER11 ID: 0x01FFFEEB  DLC: 8  Data: 0xFF 0xFF 0xFF 0x5F 0xFF 0xFF 0xFF 0x1F
FILTER12 ID: 0x01FFFEEC  DLC: 8  Data: 0xFF 0xFF 0xFF 0x5F 0xFF 0xFF 0xFF 0x1F
FILTER13 ID: 0x01FFFEED  DLC: 8  Data: 0xFF 0xFF 0xFF 0x5F 0xFF 0xFF 0xFF 0x1F
FILTER14 ID: 0x01FFFEEE  DLC: 8  Data: 0x00 0x00 0x00 0x00 0x01 0x00 0x00 0x00
FILTER15 ID: 0x01FFFEEF  DLC: 8  Data: 0xFF 0xFF 0xFF 0xBF 0xFF 0xFF 0xFF 0xFF

CAN transmission data

This tool accepts data to send via UDP Broadcast.
Open a new terminal and execute the following command:

$ chmod 777 transmit.sh
$ vi transmit.sh

Please change if necessary.

$ ./transmit.sh

CAN receive filter settings(Standard Frame)

This tool accepts filter to set via UDP Broadcast.
Open a new terminal and execute the following command:

$ chmod 777 stdmask.sh
$ vi stdmask.sh

Please change if necessary.

$ ./stdmask.sh

CAN receive filter settings(Extended Frame)

This tool accepts filter to set via UDP Broadcast.
Open a new terminal and execute the following command:

$ chmod 777 extmask.sh
$ vi extmask.sh

Please change if necessary.

$ ./extmask.sh

Running on Ubuntu 18.04.4

USBCAN-python-1

Running on Windows10

USBCAN-python-Windows

Trouble shooting

Change the log level when the program starts.
You can see receive & transmit packet.
USB-CAN -python-LogLevel

Using ESP32

The ESP32 includes a CAN controller that supports the CAN 2.0B specification standard frame format (11-bit ID) and extended frame format (29-bit ID).
With the ESP32, you can use Windows applications.
https://github.com/nopnop2002/esp-idf-CANBus-Monitor

About

Python program for USB-CAN Adapter

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published