esp32-car/packet.md

165 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 数据包格式
## 基础
| 含义 | 数据 |
| ---- | ---- |
| 发送包头 | 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 FE`
## 设置
### 设置设备名称 `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`
## 状态回报
### 设备状态回报 `0xE0`
包体 `01 0F 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`
| 数据 | 类型 | 表示 |
| -------- | ---- | ---- |
| 运行模式 | 无符号整数 | 0x00 手动模式0x01 巡线模式 |
| IN_1_2 | 无符号整数 | 按位表示 IN1 IN2 的值, 0000 00 IN2 IN1 |
| PWM | 无符号整数 | - |
| 红外引脚数量 | 无符号整数 | - |
| 红外数据 | 无符号整数 | 按位表示红外循迹模块数据, 0001 1111 |
示例 `01 0F E0 00 01 FF 02 FF 02 FF 01 FF 05 1F FE`