# ESP32 + IMU 采集与夹爪控制 本项目使用 MicroPython 在 ESP32 上读取 IMU 的 TTL 串口数据,并通过板载 CP2102 USB 串口将数据发送到电脑。 - 注意观察esp32芯片型号,参考资料可在[ESP32-D0WDQ6](https://www.alldatasheet.com/datasheet-pdf/pdf/1148025/ESPRESSIF/ESP32-D0WDQ6.html). - 最新的接线图请参考 [这个](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串口版(货架上有)连电脑直接进行调试(借助串口调试助手)。可以在使用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 ```