通信和信息命令

注意: 在通过通信协议直接通信之前,需要在 M5Stack-basic 上烧录 "Transponder",并在 Atom 上烧录最新的 atomMain。

请详细阅读接口协议文档,并在测试后继续程序开发。

1 USB 通信设置

确保准备好以下设置:

  • 主线接口:USB Type-C 连接电脑和基本
  • 波特率: 115200
  • 数据位: 8
  • 奇偶校验位: none
  • 停止位: 1

2 指令帧简介 & 指导

主 PC 通过 M5Stakc-basic 向外围 PC 传输数据。外围 PC 将数据解码为带有返回值的命令,然后在 500 毫秒内将结果发送回主 PC。

3 信息命令的发送和接收格式

发送和接收都应以十六进制表示。每条命令应包含 5 个部分,如下所示。第 3 和第 4 部分可以留空。

  • 1 命令引脚:0xFE 0xFE
    • 不变
    • 不可或缺
  • 2 有效长度:
    • 总长度包括针脚、序列号、功能代码和端点
    • 不可或缺
  • 3 序列号:00 ~ 8F
    • 已开发指令的相应数量
    • 可以留空。
  • 4 功能代码
    • 以目标为导向
    • 可以留空。
  • 5 结束: 0XFA
    • 不变
    • 不可或缺

4 命令解释

主 PC 通过 M5Stakc-basic 向外围 PC 传输数据。外围 PC 将数据解码为带有返回值的命令,然后在 500 毫秒内将结果发送回主 PC。

类型 数据 长度 功能
指令框架 开始位: 0 1 起始帧识别,0XFE
开始位: 1 1 起始帧识别,0XFE
位数据长度 1 不同的命令对应不同的数据长度
指令位 1 取决于不同的命令
指令框架 数据 0-16 命令与数据,取决于不同的命令
结束框架 结束位 1 停止位,0XFA

5 单一指令命令说明

开机

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X10
Data[4] 结束帧 0XFA

示例:

串口传输:FE FE 02 10 FA

无返回值


功率下降和连接中断

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X11
Data[4] 结束帧 0XFA

示例:

串口传输:FE FE 02 11 FA

无返回值


检查 Atom 的状态

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 指令帧 0X12
Data[4] 结束帧 0XFA

示例:

串口传输:FE FE 02 12 FA

返回值:数据结构

数据域 说明 数据
Data[0] 返回值:识别帧 0XFE
Data[1] 返回值:识别帧 0XFE
Data[2] 返回值:识别帧 0X03
Data[3] 返回值:命令帧 0X12
Data[4] 开机/关机 0X01/0X00
Data[5] 结束帧 0XFA

示例:

假设 Atom 已接通电源:

端口返回:fe fe 03 12 01 fa


关节使能

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X04
Data[3] 命令帧 0X13
Data[4] 舵机序列号 1~6/254
Data[5] 开启/关闭 0X01/0X00
Data[6] 结束帧 0XFA

示例:

串口传输:FE FE 02 13 FA

无返回值


获取机器人错误状态

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 命令帧 0X15
Data[4] 结束帧 0XFA

示例:

串口传输: FE FE 02 15 FA

返回值:数据结构

数据域 说明 数据
Data[0] 返回值: 识别帧 0XFE
Data[1] 返回值: 识别帧 0XFE
Data[2] 返回值: 数据长度帧 0X12
Data[3] 返回值: 命令帧 0X15
Data[4] 返回值: 电机1错误值高位 servo1_high
Data[5] 返回值: 电机1错误值低位 servo1_low
Data[6] 返回值: 电机2错误值高位 servo2_high
Data[7] 返回值: 电机2错误值低位 servo2_low
Data[8] 返回值: 电机3错误值高位 servo3_high
Data[9] 返回值: 电机3错误值低位 servo3_low
Data[10] 返回值: 电机4错误值高位 servo4_high
Data[11] 返回值: 电机4错误值低位 servo4_low
Data[12] 返回值: 电机5错误值高位 servo5_high
Data[13] 返回值: 电机5错误值低位 servo5_low
Data[14] 返回值: 电机6错误值高位 servo6_high
Data[15] 返回值: 电机6错误值低位 servo6_low
Data[16] 返回值: 电机7错误值高位 servo7_high
Data[17] 返回值: 电机7错误值低位 servo7_low
Data[18] 返回值: 电机8错误值高位 servo8_high
Data[19] 返回值: 电机8错误值低位 servo8_low
Data[20] 结束帧 0XFA

示例:

假设 Atom 已成功连接:

端口返回:fe fe fe 12 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fa


清除机器人异常

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 命令帧 0X16
Data[4] 结束帧 0XFA

示例:

串口传输: FE FE 02 16 FA


读取接收指令队列总长度

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 命令帧 0X17
Data[4] 结束帧 0XFA

示例:

端口返回:FE FE 03 17 03 FA

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 识别帧 0XFE
Data[1] 返回值: 识别帧 0XFE
Data[2] 返回值: 数据长度帧 0X03
Data[3] 命令帧 0X17
Data[4] 接收指令队列总长度 0X03
Data[5] 结束帧 0XFA

设置接收指令队列总长度

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[3] 命令帧 0X18
Data[4] 队列总长度 0X10
Data[5] 结束帧 0XFA

示例:

串口传输: FE FE 03 18 10 FA


清除接收指令队列

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 命令帧 0X19
Data[5] 结束帧 0XFA

示例:

串口传输: FE FE 02 19 FA


读取接收队列当前长度

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 命令帧 0X08
Data[4] 结束帧 0XFA

示例:

端口返回:FE FE 03 08 03 FA

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 识别帧 0XFE
Data[1] 返回值: 识别帧 0XFE
Data[2] 返回值: 数据长度帧 0X03
Data[3] 命令帧 0X08
Data[4] 接收指令队列总长度 0X03
Data[5] 结束帧 0XFA

读取单关节角度(读取走位信息)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[3] 命令帧 0X1c
Data[4] 关节序列号 0X01
Data[5] 结束帧 0XFA

示例:

串口传输: FE FE 03 1c 01 FA

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 起始帧 0XFE
Data[1] 返回值: 起始帧 0XFE
Data[2] 返回值: 数据长度帧 0X05
Data[3] 返回值: 命令帧 0X1c
Data[4] 舵机序列号 0X01
Data[5] 舵机角度高位 Angle_high
Data[6] 舵机角度低位 Angle_low
Data[7] 结束帧 0XFA

示例:

返回值 of port: FE FE 05 1c 01 00 8C FA

temp = angle_low+angle_high*256

Angle=(temp \ 33000 ?(temp – 65536) : temp)/100

解释:如果 temp 大于 33000,则 temp 减去 65536,然后除以 100;如果 temp 小于 33000,则 temp 直接除以 100。


读取角度(读取走位信息)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 命令帧 0X20
Data[4] 结束帧 0XFA

示例:

串口传输: FE FE 02 20 FA

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 起始帧 0XFE
Data[1] 返回值: 起始帧 0XFE
Data[2] 返回值: 数据长度帧 0X0A
Data[3] 返回值: 命令帧 0X20
Data[4] 1 号舵机角度高位 Angle1_high
Data[5] 1 号舵机角度低位 Angle1_low
Data[6] 2 号舵机角度高位 Angle2_high
Data[7] 2 号舵机角度低位 Angle2_low
Data[8] 3 号舵机角度高位 Angle3_high
Data[9] 3 号舵机角度低位 Angle3_low
Data[10] 4 号舵机角度高位 Angle4_high
Data[11] 4 号舵机角度低位 Angle4_low
Data[12] 5 号舵机角度高位 Angle5_high
Data[13] 5 号舵机角度低位 Angle5_low
Data[14] 6 号舵机角度高位 Angle6_high
Data[15] 6 号舵机角度低位 Angle6_low
Data[16] 7 号舵机角度高位 Angle7_high
Data[17] 7 号舵机角度低位 Angle7_low
Data[18] 结束帧 0XFA

示例:

返回值 of port: FE FE 0E 20 00 8C 00 3D FF E6 FF 3F 00 AF FF 51 00 3B 00 4F FA

如何获取关节角度 1:

temp = angle1_low+angle1_high*256

Angle1=(temp \ 33000 ?(temp – 65536) : temp)/100

解释:如果 temp 大于 33000,则 temp 减去 65536,然后除以 100;如果 temp 小于 33000,则 temp 直接除以 100。

其他关节角度的计算方法与此类似。


发送角度

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X06
Data[3] 命令帧 0X21
Data[4] 舵机序列号 joint_no
Data[5] 高角度 angle_high
Data[6] 低角度 angle_low
Data[7] 指定速度 sp
Data[8] 结束帧 0XFA

示例:

让 1 号舵机移动到零位

串口传输: FE FE 06 21 01 00 00 14 FA

关节号:1-7

angle_high: byte

计算方法:角度值乘以 100 并转换为积分形式,得到十六进制高字节

angle_low: byte

计算方法:角度值乘以 100 并转换为积分形式,得到十六进制低字节

无返回值


发送所有角度

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X11
Data[3] 命令帧 0X22
Data[4] 1 号舵机角度高位 Angle1_high
Data[5] 1 号舵机角度低位 Angle1_low
Data[6] 2 号舵机角度高位 Angle2_high
Data[7] 2 号舵机角度低位 Angle2_low
Data[8] 3 号舵机角度高位 Angle3_high
Data[9] 3 号舵机角度低位 Angle3_low
Data[10] 4 号舵机角度高位 Angle4_high
Data[11] 4 号舵机角度低位 Angle4_low
Data[12] 5 号舵机角度高位 Angle5_high
Data[13] 5 号舵机角度低位 Angle5_low
Data[14] 6 号舵机角度高位 Angle6_high
Data[15] 6 号舵机角度低位 Angle6_low
Data[16] 7 号舵机角度高位 Angle7_high
Data[17] 7 号舵机角度低位 Angle7_low
Data[18] 指定速度 Sp
Data[19] 结束帧 0XFA

示例:

向整个关节发送 0 角度,让舵机移动到零位。

串口传输: FE FE 0F 22 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1E FA

angle1_high: byte

计算方法:角度值乘以 100 并转换为积分形式,得到十六进制高字节

angle1_low: byte

计算方法:角度值乘以 100 并转换为积分形式,得到十六进制低字节

其他角度的计算方法与此类似。

no 返回值


机器人停止运动

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 命令帧 0X29
Data[4] 结束帧 0XFA

示例:

串口传输: FE FE 02 26 FA

无返回值


移动检查

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 命令帧 0X2B
Data[4] 结束帧 0XFA

示例:

串口传输: FE FE 02 2B FA

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 帧头 0XFE
Data[1] 返回值: 帧头 0XFE
Data[2] 返回值: 数据长度帧 0X03
Data[3] 返回值: 命令帧 0X2B
Data[4] 运动/不运动 0X01/0X00
Data[5] 结束帧 0XFA

示例:

假设程序正在运行:

port 返回值: FE FE 03 2B 01 FA


发送电位值

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X05
Data[3] 命令帧 0X3A
Data[4] 舵机序列号 Joint
Data[5] 电位值高位 Encoder_high
Data[6] 电位值低位 Encoder_low
Data[7] 结束帧 0XFA

示例:

将 5 号关节设置为 2048 电位

串口传输: FE FE 05 3A 05 08 00 FA

关节序号从 0 到 5

Joint 的数据类型:byte

Encoder_high 的数据类型:byte

计算方法:获取电位值高位(十六进制形式)

Encoder_low 的数据类型:byte

计算方法:获取电位值低位(十六进制形式)

无返回值


获取电位值

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[3] 命令帧 0X3B
Data[4] 关节序号 joint
Data[5] 结束帧 0XFA

示例:

获取 NO.2 舵机的潜力

joint_no 取值范围:1-7

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 识别帧 0XFE
Data[1] 返回值: 识别帧 0XFE
Data[2] 返回值: 数据长度帧 0X04
Data[3] 返回值: 命令帧 0X3B
Data[4] 舵机电位值高位 Encoder_high
Data[5] 舵机电位值低位 Encoders_low
Data[6] 结束帧 0XFA

示例:

串口传输: FE FE 04 3B 08 07 FA

如何计算电位值:

电位值 = 电位值低位 + 电位值高位 * 256


发送七个舵机的电位值

2\3舵机方向相反,非2048零位时,需要比如2号:1800;那么3号需要为2296

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X13
Data[3] 命令帧 0X3C
Data[4] 1 号舵机的高字节 encoder_1_high
Data[5] 1 号舵机的低字节 encoder_1_low
Data[6] 2 号舵机的高字节 encoder_2_high
Data[7] 2 号舵机的低字节 encoder_2_low
Data[8] 3 号舵机的高字节 encoder_3_high
Data[9] 3 号舵机的低字节 encoder_3_low
Data[10] 4 号舵机的高字节 encoder_4_high
Data[11] 4 号舵机的低字节 encoder_4_low
Data[12] 5 号舵机的高字节 encoder_5_high
Data[13] 5 号舵机的低字节 encoder_5_low
Data[14] 6 号舵机的高字节 encoder_6_high
Data[15] 6 号舵机的低字节 encoder_6_low
Data[16] 7 号舵机的高字节 encoder_7_high
Data[17] 7 号舵机的低字节 encoder_7_low
Data[18] 8 号舵机的高字节 encoder_8_high
Data[19] 8 号舵机的低字节 encoder_8_low
Data[20] 指定速度 Sp
Data[21] 结束帧 0XFA

示例:

发送所有电机的电位值均为 2048,速度为 20

串口传输: FE FE 13 3C 08 00 08 00 08 00 08 00 08 00 08 00 08 00 08 00 14 FA

参考上方发送单独电位值

encoder_1_high 的数据类型: byte

计算方法:将 1 号舵机的电位转换为积分形式,得到高字节十六进制数

encoder_1_low 的数据类型: byte

计算方法:将 1 号舵机的电位转换为积分形式,得到低字节十六进制数

sp: 字节数据类型,范围为 0 至 100

无返回值

发送七个舵机的电位值

2\3舵机方向相反,非2048零位时,需要比如2号:1800;那么3号需要为2296

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X22
Data[3] 命令帧 0X3E
Data[4] 1 号舵机的高字节 encoder_1_high
Data[5] 1 号舵机的低字节 encoder_1_low
Data[6] 2 号舵机的高字节 encoder_2_high
Data[7] 2 号舵机的低字节 encoder_2_low
Data[8] 3 号舵机的高字节 encoder_3_high
Data[9] 3 号舵机的低字节 encoder_3_low
Data[10] 4 号舵机的高字节 encoder_4_high
Data[11] 4 号舵机的低字节 encoder_4_low
Data[12] 5 号舵机的高字节 encoder_5_high
Data[13] 5 号舵机的低字节 encoder_5_low
Data[14] 6 号舵机的高字节 encoder_6_high
Data[15] 6 号舵机的低字节 encoder_6_low
Data[16] 7 号舵机的高字节 encoder_7_high
Data[17] 7 号舵机的低字节 encoder_7_low
Data[18] 8 号舵机的高字节 encoder_8_high
Data[19] 8 号舵机的低字节 encoder_8_low
Data[20] 1号舵机指定速度 Sp
Data[21] 2号舵机指定速度 Sp
Data[22] 3号舵机指定速度 Sp
Data[23] 4号舵机指定速度 Sp
Data[24] 5号舵机指定速度 Sp
Data[25] 6号舵机指定速度 Sp
Data[26] 7号舵机指定速度 Sp
Data[27] 8号舵机指定速度 Sp
Data[28] 结束帧 0XFA

示例:

发送所有电机的电位值均为 2048,速度为 20

串口传输: FE FE 22 3E 08 00 08 00 08 00 08 00 08 00 08 00 08 00 08 00 14 14 14 14 14 14 14 14 FA

参考上方发送单独电位值

encoder_1_high 的数据类型: byte

计算方法:将 1 号舵机的电位转换为积分形式,得到高字节十六进制数

encoder_1_low 的数据类型: byte

计算方法:将 1 号舵机的电位转换为积分形式,得到低字节十六进制数

sp: 字节数据类型,范围为 0 至 100

无返回值


读取七个舵机的电位值

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 命令帧 0X3D
Data[4] 结束帧 0XFA

示例:

串口传输: FE FE 02 3D FA

返回值: 数据结构

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X12
Data[3] 命令帧 0X3D
Data[4] 1 号舵机电位值的高字节 encoder_1_high
Data[5] 1 号舵机电位值的低字节 encoder_1_low
Data[6] 2 号舵机电位值的高字节 encoder_2_high
Data[7] 2 号舵机电位值的低字节 encoder_2_low
Data[8] 3 号舵机电位值的高字节 encoder_3_high
Data[9] 3 号舵机电位值的低字节 encoder_3_low
Data[10] 4 号舵机电位值的高字节 encoder_4_high
Data[11] 4 号舵机电位值的低字节 encoder_4_low
Data[12] 5 号舵机电位值的高字节 encoder_5_high
Data[13] 5 号舵机电位值的低字节 encoder_5_low
Data[14] 6 号舵机电位值的高字节 encoder_6_high
Data[15] 6 号舵机电位值的低字节 encoder_6_low
Data[16] 5 号舵机的高字节 encoder_7_high
Data[17] 5 号舵机的低字节 encoder_7_low
Data[18] 6 号舵机的高字节 encoder_8_high
Data[19] 6 号舵机的低字节 encoder_8_low
Data[20] 结束帧 0XFA

示例:

假设当前机械臂各关节都处于 0 位

串口返回值: FE FE 12 3D 08 00 08 00 08 00 08 00 08 00 08 00 FA

如何计算电位值

电位值 = 电位值低位 + 电位值高位 * 256


读取速度

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 命令帧 0XE1
Data[4] 结束帧 0XFA

示例:

串口传输: FE FE 02 E1 FA

返回值: 数据结构

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[3] 命令帧 0XE1
Data[4] specified speed Sp
Data[5] 结束帧 0XFA

示例:

假设速度为 50

port 返回值: FE FE 03 E1 32 FA


读取所有关节的最小角度

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 命令帧 0X4A
Data[4] 结束帧 0XFA

示例:

串口传输: FE FE 02 4A FA

joint_no 取值范围:1-7

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 识别帧 0XFE
Data[1] 返回值: 识别帧 0XFE
Data[2] 返回值: 数据长度帧 0X0A
Data[3] 返回值: 命令帧 0X4A
Data[4] 关节1角度值高位 Angle_high
Data[5] 关节1角度值低位 Angle_low
Data[6] 关节2角度值高位 Angle_high
Data[7] 关节2角度值低位 Angle_low
Data[8] 关节3角度值高位 Angle_high
Data[9] 关节3角度值低位 Angle_low
Data[10] 关节4角度值高位 Angle_high
Data[11] 关节4角度值低位 Angle_low
Data[12] 关节5角度值高位 Angle_high
Data[13] 关节5角度值低位 Angle_low
Data[14] 关节6角度值高位 Angle_high
Data[15] 关节6角度值低位 Angle_low
Data[16] 关节7角度值高位 Angle_high
Data[17] 关节7角度值低位 Angle_low
Data[18] 结束帧 0XFA

示例:

port 返回值: FE FE 0A 4A F9 F2 F9 F2 F9 F2 F9 F2 F9 F2 F9 F2 F9 F2 FA

如何得出关节最小角度

temp = angle1_low+angle1_high*256

Angle1=(temp \ 33000 ?(temp – 65536) : temp)/10

计算方式:角度值低位 + 角度高位值乘以 256 先判断是否大于 33000 如果大于 33000 就再减去 65536 最后除以 10 如果小于 33000 就直接除以 10


读取所有关节的最大角度

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 命令帧 0X4B
Data[4] 结束帧 0XFA

joint_no 取值范围:1-7

示例:

串口传输: FE FE 02 4B FA

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 识别帧 0XFE
Data[1] 返回值: 识别帧 0XFE
Data[2] 返回值: 数据长度帧 0X0A
Data[3] 返回值: 命令帧 0X4B
Data[4] 关节1角度值高位 Angle_high
Data[5] 关节1角度值低位 Angle_low
Data[6] 关节2角度值高位 Angle_high
Data[7] 关节2角度值低位 Angle_low
Data[8] 关节3角度值高位 Angle_high
Data[9] 关节3角度值低位 Angle_low
Data[10] 关节4角度值高位 Angle_high
Data[11] 关节4角度值低位 Angle_low
Data[12] 关节5角度值高位 Angle_high
Data[13] 关节5角度值低位 Angle_low
Data[14] 关节6角度值高位 Angle_high
Data[15] 关节6角度值低位 Angle_low
Data[16] 关节7角度值高位 Angle_high
Data[17] 关节7角度值低位 Angle_low
Data[18] 结束帧 0XFA

示例:

port 返回值: FE FE 0A 4B F9 F2 F9 F2 F9 F2 F9 F2 F9 F2 F9 F2 F9 F2 FA

如何得出关节最大角度

temp = angle1_low+angle1_high*256

Angle1=(temp \ 33000 ?(temp – 65536) : temp)/10

计算方式:角度值低位 + 角度高位值乘以 256 先判断是否大于 33000 如果大于 33000 就再减去 65536 最后除以 10 如果小于 33000 就直接除以 10


设置关节最大角度

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X05
Data[3] 命令帧 0X4D
Data[4] 关节舵机序号 Joint_number
Data[5] highbyte of steering gear Angle_high
Data[6] lowbyte of steering gear Angle_low
Data[7] 结束帧 0XFA

示例:

设置 2 号关节最大角度为 45

joint_no 取值范围:1-7

port 返回值: FE FE 03 41 32 FA

angle1_high:数据类型 byte

计算方式:舵机角度值乘以 100 先转换成 int 形式 再取十六进制的高字节

angle1_low:数据类型 byte

计算方式:舵机角度值乘以 100 先转换成 int 形式 再取十六进制的低字节

串口传输: FE FE 05 4C 02 11 94 FA

无返回值


查看舵机是否全部上电

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 命令帧 0X51
Data[5] 结束帧 0XFA

示例:

串口传输: FE FE 02 51 FA

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 识别帧 0XFE
Data[1] 返回值: 识别帧 0XFE
Data[2] 返回值: 数据长度帧 0X03
Data[3] 返回值: 命令帧 0X51
Data[4] power on/off 0X01/0X00
Data[5] 结束帧 0XFA

示例:

全部舵机已上电

串口返回值: FE FE 03 51 01 FA


获取所有伺服电机的温度

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 命令帧 0XE5
Data[5] 结束帧 0XFA

示例:

串口传输: FE FE 02 E5 FA

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 识别帧 0XFE
Data[1] 返回值: 识别帧 0XFE
Data[2] 返回值: 数据长度帧 0X0A
Data[3] 返回值: 命令帧 0XE5
Data[4] 电机1温度 servo1_temp
Data[5] 电机2温度 servo2_temp
Data[6] 电机3温度 servo3_temp
Data[7] 电机4温度 servo4_temp
Data[8] 电机5温度 servo5_temp
Data[9] 电机6温度 servo6_temp
Data[10] 电机7温度 servo7_temp
Data[11] 电机8温度 servo8_temp
Data[12] 结束帧 0XFA

示例:

串口返回值: FE FE 0A E5 14 14 14 14 14 14 14 14 FA


获取所有伺服电机的电压

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 命令帧 0XE3
Data[5] 结束帧 0XFA

示例:

串口传输: FE FE 02 E3 FA

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 识别帧 0XFE
Data[1] 返回值: 识别帧 0XFE
Data[2] 返回值: 数据长度帧 0X0A
Data[3] 返回值: 命令帧 0XE3
Data[4] 电机1电压 servo1_vol
Data[5] 电机2电压 servo2_vol
Data[6] 电机3电压 servo3_vol
Data[7] 电机4电压 servo4_vol
Data[8] 电机5电压 servo5_vol
Data[9] 电机6电压 servo6_vol
Data[10] 电机7电压 servo7_vol
Data[11] 电机8电压 servo8_vol
Data[12] 结束帧 0XFA

示例:

串口返回值: FE FE 0A E5 00 00 00 00 00 00 00 00 FA


获取所有伺服电机的电流

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 命令帧 0XE2
Data[5] 结束帧 0XFA

示例:

串口传输: FE FE 02 E2 FA

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 识别帧 0XFE
Data[1] 返回值: 识别帧 0XFE
Data[2] 返回值: 数据长度帧 0X12
Data[3] 返回值: 命令帧 0XE2
Data[4] 电机1温度 servo1_current_high
Data[5] 电机1温度 servo1_current_low
Data[6] 电机2温度 servo2_current_high
Data[7] 电机2温度 servo2_current_low
Data[8] 电机3温度 servo3_current_high
Data[9] 电机3温度 servo3_current_low
Data[10] 电机4温度 servo4_current_high
Data[11] 电机4温度 servo4_current_low
Data[12] 电机5温度 servo5_current_high
Data[13] 电机5温度 servo5_current_low
Data[14] 电机6温度 servo6_current_high
Data[15] 电机6温度 servo6_current_low
Data[16] 电机7温度 servo7_current_high
Data[17] 电机7温度 servo7_current_low
Data[18] 电机8温度 servo8_current_high
Data[19] 电机8温度 servo8_current_low
Data[20] 结束帧 0XFA

示例:

串口返回值: FE FE 12 E2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FA


获取所有伺服电机的所有状态

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 命令帧 0XE4
Data[5] 结束帧 0XFA

示例:

串口传输: FE FE 02 E3 FA

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 识别帧 0XFE
Data[1] 返回值: 识别帧 0XFE
Data[2] 返回值: 数据长度帧 0X0A
Data[3] 返回值: 命令帧 0XE4
Data[4] 电机1电压 servo1_status
Data[5] 电机2电压 servo2_status
Data[6] 电机3电压 servo3_status
Data[7] 电机4电压 servo4_status
Data[8] 电机5电压 servo5_status
Data[9] 电机6电压 servo6_status
Data[10] 电机7电压 servo7_status
Data[11] 电机8电压 servo8_status
Data[12] 结束帧 0XFA

示例:

串口返回值: FE FE 0A E4 00 00 00 00 00 00 00 00 FA


获取所有伺服电机保护电流

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 命令帧 0XE6
Data[5] 结束帧 0XFA

示例:

串口传输: FE FE 02 E6 FA

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 识别帧 0XFE
Data[1] 返回值: 识别帧 0XFE
Data[2] 返回值: 数据长度帧 0X12
Data[3] 返回值: 命令帧 0XE6
Data[4] 电机1温度 servo1_protect_current_high
Data[5] 电机1温度 servo1_protect_current_low
Data[6] 电机2温度 servo2_protect_current_high
Data[7] 电机2温度 servo2_protect_current_low
Data[8] 电机3温度 servo3_protect_current_high
Data[9] 电机3温度 servo3_protect_current_low
Data[10] 电机4温度 servo4_protect_current_high
Data[11] 电机4温度 servo4_protect_current_low
Data[12] 电机5温度 servo5_protect_current_high
Data[13] 电机5温度 servo5_protect_current_low
Data[14] 电机6温度 servo6_protect_current_high
Data[15] 电机6温度 servo6_protect_current_low
Data[16] 电机7温度 servo7_protect_current_high
Data[17] 电机7温度 servo7_protect_current_low
Data[18] 电机8温度 servo8_protect_current_high
Data[19] 电机8温度 servo8_protect_current_low
Data[20] 结束帧 0XFA

示例:

串口返回值: FE FE 12 E6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FA


设置电机使能

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X04
Data[3] 命令帧 0X13
Data[4] 舵机序号 servo_no
Data[6] 使能/掉使能 0X01/0X00
Data[6] 结束帧 0XFA

示例:

使能一号舵机

串口传输: FE FE 04 13 01 01 FA

servo_no 取值范围:1-8

无返回值


设置舵机零点

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[3] 命令帧 0X54
Data[4] 关节舵机序号 servo_no
Data[5] 结束帧 0XFA

示例:

设置 1 号舵机的零位

串口传输: FE FE 03 54 01 FA

servo_no 取值范围:1-8

无返回值


设置指定伺服电机的位置环P比例系数

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X04
Data[3] 命令帧 0X70
Data[4] 舵机序号 servo_no
Data[5] 舵机序号 data
Data[6] 结束帧 0XFA

示例:

串口传输: FE FE 04 70 01 01 FA

servo_no 取值范围:1-8

无返回值


设置指定伺服电机的位置环D比例系数

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X04
Data[3] 命令帧 0X71
Data[4] 舵机序号 servo_no
Data[5] 舵机序号 data
Data[6] 结束帧 0XFA

示例:

串口传输: FE FE 04 71 01 01 FA

servo_no 取值范围:1-8

无返回值


设置指定伺服电机的位置环I比例系数

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X04
Data[3] 命令帧 0X72
Data[4] 舵机序号 servo_no
Data[5] 舵机序号 data
Data[6] 结束帧 0XFA

示例:

串口传输: FE FE 04 72 01 01 FA

servo_no 取值范围:1-8

无返回值


读取指定伺服电机的位置环P比例系数

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[3] 命令帧 0XE7
Data[4] 电机序号 servo_no
Data[5] 结束帧 0XFA

示例:

串口传输: FE FE 03 E7 01 FA

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 识别帧 0XFE
Data[1] 返回值: 识别帧 0XFE
Data[2] 返回值: 数据长度帧 0X04
Data[3] 返回值: 命令帧 0XE7
Data[4] 电机序号 servo_no
Data[5] 位置环P比例系数 P
Data[6] 结束帧 0XFA

示例:

串口返回值: FE FE 04 E7 01 01 FA


读取指定伺服电机的位置环D比例系数

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[3] 命令帧 0XE8
Data[4] 电机序号 servo_no
Data[5] 结束帧 0XFA

示例:

串口传输: FE FE 03 E8 01 FA

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 识别帧 0XFE
Data[1] 返回值: 识别帧 0XFE
Data[2] 返回值: 数据长度帧 0X04
Data[3] 返回值: 命令帧 0XE8
Data[4] 电机序号 servo_no
Data[5] 位置环P比例系数 D
Data[6] 结束帧 0XFA

示例:

串口返回值: FE FE 04 E8 01 01 FA


读取指定伺服电机的位置环I比例系数

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[3] 命令帧 0XE9
Data[4] 电机序号 servo_no
Data[5] 结束帧 0XFA

示例:

串口传输: FE FE 03 E9 01 FA

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 识别帧 0XFE
Data[1] 返回值: 识别帧 0XFE
Data[2] 返回值: 数据长度帧 0X04
Data[3] 返回值: 命令帧 0XE7
Data[4] 电机序号 servo_no
Data[5] 位置环P比例系数 I
Data[6] 结束帧 0XFA

示例:

串口返回值: FE FE 04 E9 01 01 FA


设置指定伺服电机的编码器顺时针不灵敏区

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X04
Data[3] 命令帧 0X73
Data[4] 舵机序号 servo_no
Data[5] 顺时针不灵敏区值 data
Data[6] 结束帧 0XFA

示例:

串口传输: FE FE 04 73 01 01 FA

servo_no 取值范围:1-8 data 取值范围:0-32

无返回值


读取指定伺服电机的编码器顺时针不灵敏区

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[3] 命令帧 0XEA
Data[4] 电机序号 servo_no
Data[5] 结束帧 0XFA

示例:

串口传输: FE FE 03 E7 01 FA

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 识别帧 0XFE
Data[1] 返回值: 识别帧 0XFE
Data[2] 返回值: 数据长度帧 0X04
Data[3] 返回值: 命令帧 0XEA
Data[4] 电机序号 servo_no
Data[5] 顺时针不灵敏区值 data
Data[6] 结束帧 0XFA

示例:

串口返回值: FE FE 04 EA 01 01 FA


设置指定伺服电机的编码器逆时针不灵敏区

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X04
Data[3] 命令帧 0X74
Data[4] 舵机序号 servo_no
Data[5] 逆时针不灵敏区值 data
Data[6] 结束帧 0XFA

示例:

串口传输: FE FE 04 74 01 01 FA

servo_no 取值范围:1-8 data 取值范围:0-32

无返回值


读取指定伺服电机的编码器逆时针不灵敏区

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[3] 命令帧 0XEB
Data[4] 电机序号 servo_no
Data[5] 结束帧 0XFA

示例:

串口传输: FE FE 03 EB 01 FA

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 识别帧 0XFE
Data[1] 返回值: 识别帧 0XFE
Data[2] 返回值: 数据长度帧 0X04
Data[3] 返回值: 命令帧 0XEB
Data[4] 电机序号 servo_no
Data[5] 逆时针不灵敏区值 data
Data[6] 结束帧 0XFA

示例:

串口返回值: FE FE 04 EB 01 01 FA


读取舵机参数

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X05
Data[3] 命令帧 0X53
Data[4] 关节舵机序号 Joint_number
Data[5] 数据地址 data_id
Data[5] 读取长度 data_len
Data[6] 结束帧 0XFA

示例:

读取 1 号舵机位置 P 比例参数

串口传输: FE FE 03 53 01 15 02 FA

joint_no 取值范围:1-8

data_len :1/2 1字节/2字节

Data_id: 数据类型 byte,取值如下表

地址 功能 取值范围 初始值 取值解析
20 LED 报警 0-254 0 1/0:打开/关闭 LED 警报器
21 位置环 P 0-254 10 控制电机的比例系数
22 位置环 I 0-254 0 控制电机的微分系数
23 位置环 D 0-254 1 控制电机的积分系数
24 最小启动力 0-1000 0 设置最小输出力矩 1000 = 100%

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 识别帧 0XFE
Data[1] 返回值: 识别帧 0XFE
Data[2] 返回值: 数据长度帧 0X03
Data[3] 返回值: 命令帧 0X53
Data[5] 数据地址 data_id
Data[5] 返回值: data data_high
Data[4] 返回值: data data_low
Data[5] 结束帧 0XFA

设置舵机伺服参数

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X05
Data[3] 命令帧 0X52
Data[4] 关节舵机序号 Joint_no
Data[5] 数据地址 data_id
Data[5] 数据高位 data_high
Data[5] 数据低位 data_low
Data[6] 结束帧 0XFA

示例:

设置 1 号舵机位置 P 比例参数为 1

串口传输: FE FE 05 52 01 15 00 01 FA

joint_no 取值范围:1-8

无返回值

Data_id:数据类型 byte,具体值见下图:

地址 功能 取值范围 初始值 取值解析
20 LED 报警 0-254 0 1/0:打开/关闭 LED 警报器
21 位置环 P 0-254 10 控制电机的比例系数
22 位置环 I 0-254 0 控制电机的微分系数
23 位置环 D 0-254 1 控制电机的积分系数
24 最小启动力 0-1000 0 设置最小输出力矩 1000 = 100%

设置 Atom 模式

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X04
Data[3] 命令帧 0X60
Data[4] 引脚序号 pin_no
Data[5] 输入/输出 00X00/00X01
Data[6] 结束帧 0XFA

示例:

设置 atom pin22 为输入模式

串口传输: FE FE 04 60 16 00 FA

Pin_no: 数据类型 byte

Pin_mode:0/1

无返回值


设置 Atom IO(setDigitalOutput)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X04
Data[3] 命令帧 0X61
Data[4] 引脚序号 pin_no
Data[5] 电平信号 0X00/0X01
Data[6] 结束帧 0XFA

示例:

设置引脚 P2 为高电平

串口传输: FE FE 04 61 02 01 FA

pin_no:1/2

无返回值


读取 Atom IO(getDigitalInput)

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[3] 命令帧 0X62
Data[4] 引脚序号 pin_no
Data[5] 结束帧 0XFA

示例:

读取引脚 P2 的电平信号

串口传输: FE FE 03 62 02 FA

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 识别帧 0XFE
Data[1] 返回值: 识别帧 0XFE
Data[2] 返回值: 数据长度帧 0X03
Data[3] 返回值: 命令帧 0X53
Data[4] 引脚序号 pin_no
Data[5] 电平信号 0X00/0X01
Data[6] 结束帧 0XFA

示例:

假设引脚 P2 为高电平

Port 返回值: FE FE 04 62 02 01 FA


设置主控 IO 输出

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X04
Data[3] 命令帧 0X65
Data[4] 引脚序号 Pin_no
Data[5] 电平信号 0X00/0X01
Data[4] 结束帧 0XFA

示例:

设置引脚 2 输出高电平

串口传输: FE FE 04 65 02 01 FA


读取主控 IO 输出

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[3] 命令帧 0X66
Data[4] 引脚序号 Pin_no
Data[4] 结束帧 0XFA

串口传输: FE FE 03 66 02 FA

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 识别帧 0XFE
Data[1] 返回值: 识别帧 0XFE
Data[2] 返回值: 数据长度帧 0X04
Data[3] 返回值: 命令帧 0X66
Data[4] 引脚序号 Pin_no
Data[5] 电平信号 0X00/0X01
Data[6] 结束帧 0XFA

示例:

假设引脚 2 为高电平

Port 返回值: FE FE 04 66 02 01 FA


设定 atom 屏幕 RGB 灯的颜色

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X05
Data[3] 命令帧 0X6A
Data[4] R 0X00/0XFF
Data[5] G 0X00/0XFF
Data[6] B 0X00/0XFF
Data[7] 结束帧 0XFA

示例:

设置 RGB 为蓝色

串口传输: FE FE 05 6A 00 00 FF FA

无返回值


读取末端led按下状态

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X02
Data[3] 命令帧 0X6B
Data[4] 结束帧 0XFA

串口传输: FE FE 02 6B FA

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 识别帧 0XFE
Data[1] 返回值: 识别帧 0XFE
Data[2] 返回值: 数据长度帧 0X03
Data[3] 返回值: 命令帧 0X6B
Data[5] 按下/未按下 0X00/0X01
Data[6] 结束帧 0XFA

设置底座 IO 输出

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X04
Data[3] 命令帧 0Xa0
Data[4] 引脚序号 Pin_no
Data[5] 电平信号 0X00/0X01
Data[4] 结束帧 0XFA

示例:

设置引脚 2 输出高电平

串口传输: FE FE 04 a0 02 01 FA


读取底座 IO 输出

数据域 说明 数据
Data[0] 识别帧 0XFE
Data[1] 识别帧 0XFE
Data[2] 数据长度帧 0X03
Data[3] 命令帧 0Xa1
Data[4] 引脚序号 Pin_no
Data[4] 结束帧 0XFA

串口传输: FE FE 03 a1 02 FA

返回值: 数据结构

数据域 说明 数据
Data[0] 返回值: 识别帧 0XFE
Data[1] 返回值: 识别帧 0XFE
Data[2] 返回值: 数据长度帧 0X04
Data[3] 返回值: 命令帧 0Xa1
Data[4] 引脚序号 Pin_no
Data[5] 电平信号 0X00/0X01
Data[6] 结束帧 0XFA

示例:

假设引脚 2 为高电平

Port 返回值: FE FE 04 a1 02 01 FA


← 上一节 | 下一章 →

results matching ""

    No results matching ""