Files
Gripper_UMI/README.md
LiuzhengSJ 421684855c 1. acc_calib in body
2. acc_calib in world
2026-07-03 12:14:41 +01:00

229 lines
5.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.

# ESP32 + IMU 采集与夹爪控制
本项目使用 MicroPython 在 ESP32 上读取 IMU 的 TTL 串口数据,并通过板载 CP2102 USB 串口将数据发送到电脑。
- 注意观察esp32芯片型号参考资料可在[ESP-WROOM-32](https://git.nicecart.ai/ZhengLiu-cart/Gripper_UMI/src/branch/main/ESP32%E5%BC%80%E5%8F%91%E6%9D%BF%E8%B5%84%E6%96%99/ESP32%E8%B5%84%E6%96%99%E6%96%87%E6%A1%A3/esp_wroom_32_datasheet_cn.pdf).
- 最新的接线图请参考 [这个](https://nicecart-my.sharepoint.com/:p:/g/personal/zheng_liu_nicecart_ai/IQAd1vjTOFRTQJdIf7uh9ybCASTbYUrugCMrXxhclWS-Yn0?e=4C3Z6G),与嵌入式组沟通。
- 将电脑USB口与ESP32用线连起来时理论上ESP32板子将有5V及3.3V 供电,无需额外供电。
- [IMU 资料](https://wit-motion.yuque.com/wumwnr/docs/ovet650wkalmx779)
- [ESP32 京东链接](https://ic-item.jd.com/100200013859.html#product-detail)
-IMU本身支持串口通信所以可以通过USB转TTL串口版办公室货架上有连电脑直接进行调试(借助串口调试助手可以参考这个IMU资料 [链接](https://wit-motion.yuque.com/wumwnr/bf4d0f/ppm3hc?#%20%E3%80%8A%E6%A8%A1%E5%9D%97%E7%B1%BB%E4%BC%A0%E6%84%9F%E5%99%A8%E4%BD%BF%E7%94%A8%E4%B8%89%E5%90%88%E4%B8%80-%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B%E3%80%8B))。可以在使用ESP32板通过串口通信前先使用USB转TTL串口版测试其功能是否正常。
- **以下内容供参考,根据实际情况修改**。
## 硬件连接概览
```text
IMU -> TTL UART -> ESP32 -> CP2102 -> USB -> 电脑
```
## 一、准备软件
1. 安装 [Thonny](https://thonny.org/)。
2. 使用支持数据传输的 Micro-USB 线连接 ESP32。
3. 打开终端,查看 ESP32 对应的串口设备:
```bash
ls /dev/ttyUSB*
```
通常会看到:
```text
/dev/ttyUSB0
```
4. 也可以使用以下命令确认 CP210x 设备:
```bash
lsusb
dmesg | tail
```
5. 记住对应的串口设备,例如 `/dev/ttyUSB0`。
如果当前用户没有串口访问权限,执行:
```bash
sudo usermod -aG dialout $USER
```
执行后注销并重新登录 Ubuntu使权限生效。也可以重新启动电脑。
## 二、安装 MicroPython 固件
打开 Thonny然后执行以下步骤
1. 选择 `工具 -> 选项 -> 解释器`。
2. 解释器选择:
```text
MicroPython (ESP32)
```
3. 端口选择 ESP32 对应的设备,例如 `/dev/ttyUSB0`。
4. 点击“安装或更新 MicroPython”。
5. 目标端口选择对应的 `/dev/ttyUSB0`。
6. 芯片选择 `ESP32`。
7. 建议勾选“擦除闪存”。
8. 点击安装。
如果提示无法连接:
1. 按住 ESP32 上的 `BOOT` 按钮。
2. 点击安装。
3. 出现连接或写入进度后松开 `BOOT`。
安装完成后Thonny 下方 Shell 中通常会显示:
```text
MicroPython ...
>>>
```
## 三、上传 main.py
ESP32 端程序位于:
[main.py](./main.py)
在 Thonny 中:
1. 选择 `文件 -> 打开`。
2. 打开仓库中的 `main.py`。
3. 选择 `文件 -> 另存为`。
4. 选择保存到“MicroPython设备”。
5. 将文件名填写为 `main.py`。
保存后Thonny 左侧“MicroPython设备”中应能看到
```text
/main.py
```
ESP32 启动时会依次自动执行:
```text
boot.py
main.py
```
因此,程序必须准确命名为 `main.py`。
## 四、连接 IMU
### TTL 串口
| IMU | ESP32 |
|---|---|
| VCC | 按模块要求连接 3.3V 或 5V |
| GND | GND |
| TX | GPIO16 |
| RX | GPIO17 |
```text
IMU VCC -> ESP32 3.3V/5V
IMU GND -> ESP32 GND
IMU TX -> ESP32 GPIO16
IMU RX -> ESP32 GPIO17
```
> ESP32 GPIO 不能承受 5V。连接前必须确认 IMU 的 TTL 信号电平兼容 3.3V。
### 四路数字输入
| 输入 | ESP32 |
|---|---|
| DIN1 | GPIO25 |
| DIN2 | GPIO26 |
| DIN3 | GPIO27 |
| DIN4 | GPIO32 |
| 信号地 | GND |
数字输入电压不能超过 `3.3V`。
## 五、重新上电运行
上传完成后:
1. 关闭 Thonny或者点击 Thonny 的“停止/断开”。
2. 按一下 ESP32 的 `EN/RESET` 按钮。
3. 也可以拔掉 USB 后重新连接。
以后每次 ESP32 上电时,都会自动运行 `main.py`
```text
IMU -> TTL -> ESP32 -> CP2102 -> USB -> 电脑
```
## 六、电脑接收数据
电脑端程序位于:
[pc_reader.py](./pc_reader.py)
安装 Python 串口依赖:
```bash
python3 -m pip install pyserial
```
如果 Ubuntu 提示当前 Python 环境由系统管理,建议使用虚拟环境:
```bash
python3 -m venv .venv
source .venv/bin/activate
pip install pyserial
```
运行程序:
```bash
python3 pc_reader.py /dev/ttyUSB0
```
将 `/dev/ttyUSB0` 替换为 ESP32 的实际串口设备。
正常输出类似:
```text
# 1 200.0Hz DIN=[1, 1, 0, 1] DOUT=[0, 0] ACC=[...] GYRO=[...] ANGLE=[...]
```
电脑接收程序使用 `230400` 波特率。
> 运行 `pc_reader.py` 前必须断开 Thonny否则串口可能被 Thonny 占用。
## 七、夹爪控制命令
运行 `pc_reader.py` 后,可以输入以下命令并按回车:
| 命令 | 操作 |
|---|---|
| `o` | 打开夹爪 |
| `c` | 闭合夹爪 |
| `s` | 停止,两路控制输出均释放 |
ESP32 使用以下管脚控制外部驱动电路:
| 功能 | ESP32 |
|---|---|
| 控制输出1 | GPIO18 |
| 控制输出2 | GPIO19 |
ESP32 GPIO 只能输出 `3.3V`,不能直接连接 12V 工业控制信号。必须使用光耦隔离模块、晶体管或其他合适的电平转换和驱动电路。
## 项目文件
```text
.
|-- README.md
|-- main.py
`-- pc_reader.py
```