esp32-car/packet.md

147 lines
3.0 KiB
Markdown
Raw Normal View History

2024-12-15 18:09:40 +08:00
# 数据包格式
## 基础
| 含义 | 数据 |
| ---- | ---- |
| 发送包头 | 0x00 |
| 发送包尾 | 0xff |
| 返回包头 | 0x01 |
| 返回包尾 | 0xfe |
`数据包头` + `包体长度` + `指令` + `数据包体` + `数据包尾`
如:
`00 06 20 AA BB FF`
## 信息查询
### 查询蓝牙连接状态 `0x10`
查询示例 `00 04 10 FF`
| 返回数据 | 含义 |
| -------- | ---- |
| 01 | 已连接 |
| 00 | 未连接 |
返回示例 `01 05 10 01 FE`
2024-12-18 16:10:26 +08:00
### 查询 SPI Flash 挂载状态 `0x11`
2024-12-15 21:42:43 +08:00
查询示例 `00 04 11 FF`
2024-12-18 16:10:26 +08:00
| 返回数据 | 含义 |
| -------- | ---- |
| 01 | 已挂载 |
| 00 | 未挂载 |
返回示例 `01 05 11 01 FE`
### 查询超声波距离 `0x12`
查询示例 `00 04 12 FF`
2024-12-15 21:42:43 +08:00
返回一个 4 字节浮点数,表示距离,单位 m
2024-12-18 16:10:26 +08:00
返回示例 `01 08 12 距离3 距离2 距离1 距离0 FE`
2024-12-15 21:42:43 +08:00
2024-12-15 18:09:40 +08:00
## 控制
### 行进控制 `0x20`
| 方向数据 | 含义 |
| -------- | ---- |
| 0x00 | 停止 |
| 0x01 | 前进 |
| 0x02 | 后退 |
包体 `00 06 20 方向 速度 FF`
控制示例 `00 06 20 01 FF FF`
2024-12-19 01:08:39 +08:00
### 方向控制 `0x21`
2024-12-15 18:09:40 +08:00
| 方向数据 | 含义 |
| -------- | ---- |
2024-12-19 01:08:39 +08:00
| 0x00 | 左转 |
| 0x01 | 右转 |
2024-12-15 18:09:40 +08:00
2024-12-19 01:08:39 +08:00
包体 `00 06 21 方向 差速 FF`
2024-12-15 18:09:40 +08:00
2024-12-18 14:12:46 +08:00
控制示例 `00 06 21 01 01 FF`
2024-12-18 17:31:35 +08:00
### 单轮控制 `0x22`
| 轮数据 | 含义 |
| -------- | ---- |
| 0x00 | 左前轮 |
| 0x01 | 左后轮 |
| 0x02 | 右后轮 |
| 0x03 | 右前轮 |
| 方向数据 | 含义 |
| -------- | ---- |
| 0x00 | 停止 |
| 0x01 | 顺时针 |
| 0x02 | 逆时针 |
包体 `00 07 22 轮 方向 速度 FF`
控制示例 `00 07 22 01 01 01 FF`
2024-12-19 01:08:39 +08:00
### 原地控制 `0x23`
| 方向数据 | 含义 |
| -------- | ---- |
| 0x00 | 顺时针 |
| 0x01 | 逆时针 |
包体 `00 06 23 方向 时间 FF`
控制示例 `00 06 23 01 01 FF`
2024-12-18 14:12:46 +08:00
2024-12-20 00:11:04 +08:00
### XYR 控制 `0x24`
> ⚠️ 注意: X Y R 的取值范围为 -100 到 100为有符号 8 位整数
包体 `00 07 24 X Y R FF`
控制示例 `00 07 24 01 01 01 FF`
2024-12-27 10:16:08 +08:00
## 设置
### 设置设备名称 `0xA1`
> ⚠️ 注意: 设备名称长度不能超过 16 个字符,此时最大包体长度 20仅支持 ASCII 码
包体 `00 包体长度 A1 设备名称 FF`
> 示例WhiteTiger
设置示例 `00 0E A1 57 68 69 74 65 54 69 67 65 72 FF`
2024-12-27 10:34:06 +08:00
### 设置 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`
2024-12-19 01:08:39 +08:00
## 状态回报
2024-12-18 14:12:46 +08:00
2024-12-27 11:32:09 +08:00
### 设备状态回报 `0xE0`
2024-12-18 14:12:46 +08:00
2024-12-27 11:32:09 +08:00
包体 `01 0E 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 红外引脚数量 红外数据 FE`
2024-12-18 14:12:46 +08:00
2024-12-27 11:32:09 +08:00
| 数据 | 类型 | 表示 |
| -------- | ---- | ---- |
| IN_1_2 | 无符号整数 | 按位表示 IN1 IN2 的值, 0000 00 IN2 IN1 |
| PWM | 无符号整数 | - |
| 红外引脚数量 | 无符号整数 | - |
| 红外数据 | 无符号整数 | 按位表示红外循迹模块数据, 0001 1111 |
示例 `01 0E E0 01 FF 02 FF 02 FF 01 FF 05 1F FE`