USB to RS485

  • The following protocol applies to firmware V4.1 or later

  • Send the AT+VER serial command to check the firmware version; if no version is returned or it shows V33, please update to the latest firmware

  • The SANPO Motor Debug Tool can generate test code quickly and supports CAN/RS485 motors

Protocol Overview

Use Case

TX Protocol

RX Protocol

RS485 motors, up to 64-byte frames

Motor data passthrough; last 4 bytes: Channel 1 byte + data length (1 byte) + tail 0x0D 0x0A

Motor feedback passthrough

  • The first two bytes of RS485 frames must not be the reserved headers 0x45 0x54, 0x41 0x54, or 0x53 0x54

RS485 Frame Example

TX frame

RS485 data passthrough (max 60 bytes)

Channel (1 byte)

Data length (1 byte)

Tail (2 bytes)

0x22 0x33 0x00 0x53 0x54 0x00 0x53 0x54 0x00 0x53 0x54 0x00 0x53 0x54 0x00 0x53 0x54

0x00

0x11

0x0D 0x0A

RX frame (motor feedback passthrough)

RS485 feedback passthrough (max 60 bytes)

0x22 0x33 0x00 0x53 0x54 0x00 0x53 0x54 0x00 0x53 0x54 0x00 0x53 0x54 0x00 0x53 0x54

Motor Debug Tools

  • SANPO Motor Debug Tool supports CAN/RS485 motors

  • Unitree motor tool: https://gitcode.com/sanpo/robot/tree/v4/tools/UnitreeMotor.zip

  • Unitree usage guide: https://support.unitree.com/home/zh/Motor_SDK_Dev_Guide/Motor_debugging_assistant

Examples

  • USB to RS485 example (Python): Download

Example: send a sine motion command to a Unitree RS485 GO-M8010 motor (ID 1) on Windows COM9(Linux /dev/ttyACM0), RS485-2

Windows:
python3 usb2rs485_unitree_sine_demo_v4.py --port COM9 --motors 1 --channel 2

Ubuntu(Jetson):
sudo python3 usb2rs485_unitree_sine_demo_v4.py --port /dev/ttyACM0 --motors 1 --channel 2