178 lines
3.8 KiB
Markdown
178 lines
3.8 KiB
Markdown
# 数据包格式
|
||
|
||
## 基础
|
||
|
||
| 含义 | 数据 |
|
||
| ---- | ---- |
|
||
| 发送包头 | 0x00 |
|
||
| 发送包尾 | 0xff |
|
||
| 返回包头 | 0x01 |
|
||
| 返回包尾 | 0xfe |
|
||
|
||
`数据包头` + `包体长度` + `指令` + `数据包体` + `数据包尾`
|
||
|
||
如:
|
||
|
||
`00 06 20 AA BB FF`
|
||
|
||
## 信息查询
|
||
|
||
### 查询蓝牙连接状态 `0x10`
|
||
|
||
查询示例 `00 04 10 FF`
|
||
|
||
| 返回数据 | 含义 |
|
||
| -------- | ---- |
|
||
| 01 | 已连接 |
|
||
| 00 | 未连接 |
|
||
|
||
返回示例 `01 05 10 01 FE`
|
||
|
||
### 查询 SPI Flash 挂载状态 `0x11`
|
||
|
||
查询示例 `00 04 11 FF`
|
||
|
||
| 返回数据 | 含义 |
|
||
| -------- | ---- |
|
||
| 01 | 已挂载 |
|
||
| 00 | 未挂载 |
|
||
|
||
返回示例 `01 05 11 01 FE`
|
||
|
||
### 查询超声波距离 `0x12`
|
||
|
||
查询示例 `00 04 12 FF`
|
||
|
||
返回一个 4 字节浮点数,表示距离,单位 m
|
||
|
||
返回示例 `01 08 12 距离3 距离2 距离1 距离0 FE`
|
||
|
||
## 控制
|
||
|
||
### 行进控制 `0x20`
|
||
|
||
| 方向数据 | 含义 |
|
||
| -------- | ---- |
|
||
| 0x00 | 停止 |
|
||
| 0x01 | 前进 |
|
||
| 0x02 | 后退 |
|
||
|
||
包体 `00 06 20 方向 速度 FF`
|
||
|
||
控制示例 `00 06 20 01 FF FF`
|
||
|
||
### 方向控制 `0x21`
|
||
|
||
| 方向数据 | 含义 |
|
||
| -------- | ---- |
|
||
| 0x00 | 左转 |
|
||
| 0x01 | 右转 |
|
||
|
||
包体 `00 06 21 方向 差速 FF`
|
||
|
||
控制示例 `00 06 21 01 01 FF`
|
||
|
||
### 单轮控制 `0x22`
|
||
|
||
| 轮数据 | 含义 |
|
||
| -------- | ---- |
|
||
| 0x00 | 左前轮 |
|
||
| 0x01 | 左后轮 |
|
||
| 0x02 | 右后轮 |
|
||
| 0x03 | 右前轮 |
|
||
|
||
| 方向数据 | 含义 |
|
||
| -------- | ---- |
|
||
| 0x00 | 停止 |
|
||
| 0x01 | 顺时针 |
|
||
| 0x02 | 逆时针 |
|
||
|
||
包体 `00 07 22 轮 方向 速度 FF`
|
||
|
||
控制示例 `00 07 22 01 01 01 FF`
|
||
|
||
### 原地控制 `0x23`
|
||
|
||
| 方向数据 | 含义 |
|
||
| -------- | ---- |
|
||
| 0x00 | 顺时针 |
|
||
| 0x01 | 逆时针 |
|
||
|
||
包体 `00 06 23 方向 时间 FF`
|
||
|
||
控制示例 `00 06 23 01 01 FF`
|
||
|
||
### XYR 控制 `0x24`
|
||
|
||
> ⚠️ 注意: X Y R 的取值范围为 -100 到 100,为有符号 8 位整数
|
||
|
||
| 数据 | 正数 | 负数 |
|
||
| --- | ---- | ---- |
|
||
| X | 左 | 右 |
|
||
| Y | 前 | 后 |
|
||
| R | 逆时针 | 顺时针 |
|
||
|
||
包体 `00 07 24 X Y R FF`
|
||
|
||
控制示例 `00 07 24 01 01 01 FF`
|
||
|
||
## 模式切换 `0x30`
|
||
|
||
| 模式数据 | 含义 |
|
||
| -------- | ---- |
|
||
| 0x00 | 手动模式 |
|
||
| 0x01 | 巡线模式 |
|
||
|
||
包体 `00 05 30 模式 FF`
|
||
|
||
控制示例 `00 05 30 01 FF`
|
||
|
||
## 设置
|
||
|
||
### 设置设备名称 `0xA1`
|
||
|
||
> ⚠️ 注意: 设备名称长度不能超过 16 个字符,此时最大包体长度 20,仅支持 ASCII 码
|
||
|
||
包体 `00 包体长度 A1 设备名称 FF`
|
||
|
||
> 示例:WhiteTiger
|
||
|
||
设置示例 `00 0E A1 57 68 69 74 65 54 69 67 65 72 FF`
|
||
|
||
### 设置 PID 参数 `0xA2`
|
||
|
||
> ⚠️ 注意: Kp Ki Kd 类型为 float,每个参数 4 个字节
|
||
|
||
包体 `00 07 A2 Kp1 Kp2 Kp3 Kp4 Ki1 Ki2 Ki3 Ki4 Kd1 Kd2 Kd3 Kd4 FF`
|
||
|
||
设置示例 `00 11 A2 01 01 01 01 01 01 01 01 01 01 01 01 01 FF`
|
||
|
||
### 设置循迹速度 `0xA3`
|
||
|
||
包体 `00 06 A3 基础速度 转弯速度 FF`
|
||
|
||
设置示例 `00 06 A3 50 50 FF`
|
||
|
||
### 设置循迹转弯灵敏度 `0xA4`
|
||
|
||
包体 `00 05 A4 灵敏度 FF`
|
||
|
||
设置示例 `00 05 A4 03 FF`
|
||
|
||
## 状态回报
|
||
|
||
### 设备状态回报 `0xE0`
|
||
|
||
包体 `01 13 E0 运行模式 电机A_IN_1_2 电机A_PWM 电机B_IN_1_2 电机B_PWM 电机C_IN_1_2 电机C_PWM 电机D_IN_1_2 电机D_PWM 红外引脚数量 红外数据 超声波距离3 超声波距离2 超声波距离1 超声波距离0 FE`
|
||
|
||
| 数据 | 类型 | 表示 |
|
||
| -------- | ---- | ---- |
|
||
| 运行模式 | 无符号整数 | 0x00 手动模式,0x01 巡线模式 |
|
||
| IN_1_2 | 无符号整数 | 按位表示 IN1 IN2 的值, 0000 00 IN2 IN1 |
|
||
| PWM | 无符号整数 | - |
|
||
| 红外引脚数量 | 无符号整数 | - |
|
||
| 红外数据 | 无符号整数 | 按位表示红外循迹模块数据, 0001 1111 |
|
||
| 超声波距离 | 无符号整数 | 4 字节浮点数,表示距离,单位 m |
|
||
|
||
示例 `01 13 E0 00 01 FF 02 FF 02 FF 01 FF 05 1F FE 01 01 01 01 FE`
|