225 lines
4.8 KiB
Markdown
225 lines
4.8 KiB
Markdown
# ESP32 + IMU 采集与夹爪控制
|
||
|
||
本项目使用 MicroPython 在 ESP32 上读取 IMU 的 TTL 串口数据,并通过板载 CP2102 USB 串口将数据发送到电脑。
|
||
|
||
- 注意观察esp32芯片型号,参考资料可在[此次查找](https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32/esp32-devkitc/user_guide.html#functional-description).
|
||
|
||
- 最新的接线图请参考 [这个](https://nicecart-my.sharepoint.com/:p:/g/personal/zheng_liu_nicecart_ai/IQAd1vjTOFRTQJdIf7uh9ybCASTbYUrugCMrXxhclWS-Yn0?e=4C3Z6G),与嵌入式组沟通。
|
||
|
||
- 将电脑USB口与ESP32用线连起来时,理论上ESP32板子将有5V及3.3V 供电。
|
||
|
||
- IMU支持串口通信,所以可以通过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
|
||
```
|