4.1 KiB
ESP32 + IMU 采集与夹爪控制
本项目使用 MicroPython 在 ESP32 上读取 IMU 的 TTL 串口数据,并通过板载 CP2102 USB 串口将数据发送到电脑。
硬件连接概览
IMU -> TTL UART -> ESP32 -> CP2102 -> USB -> 电脑
一、准备软件
-
安装 Thonny。
-
使用支持数据传输的 Micro-USB 线连接 ESP32。
-
打开终端,查看 ESP32 对应的串口设备:
ls /dev/ttyUSB*通常会看到:
/dev/ttyUSB0 -
也可以使用以下命令确认 CP210x 设备:
lsusb dmesg | tail -
记住对应的串口设备,例如
/dev/ttyUSB0。
如果当前用户没有串口访问权限,执行:
sudo usermod -aG dialout $USER
执行后注销并重新登录 Ubuntu,使权限生效。也可以重新启动电脑。
二、安装 MicroPython 固件
打开 Thonny,然后执行以下步骤:
-
选择
工具 -> 选项 -> 解释器。 -
解释器选择:
MicroPython (ESP32) -
端口选择 ESP32 对应的设备,例如
/dev/ttyUSB0。 -
点击“安装或更新 MicroPython”。
-
目标端口选择对应的
/dev/ttyUSB0。 -
芯片选择
ESP32。 -
建议勾选“擦除闪存”。
-
点击安装。
如果提示无法连接:
- 按住 ESP32 上的
BOOT按钮。 - 点击安装。
- 出现连接或写入进度后松开
BOOT。
安装完成后,Thonny 下方 Shell 中通常会显示:
MicroPython ...
>>>
三、上传 main.py
ESP32 端程序位于:
在 Thonny 中:
- 选择
文件 -> 打开。 - 打开仓库中的
main.py。 - 选择
文件 -> 另存为。 - 选择保存到“MicroPython设备”。
- 将文件名填写为
main.py。
保存后,Thonny 左侧“MicroPython设备”中应能看到:
/main.py
ESP32 启动时会依次自动执行:
boot.py
main.py
因此,程序必须准确命名为 main.py。
四、连接 IMU
TTL 串口
| IMU | ESP32 |
|---|---|
| VCC | 按模块要求连接 3.3V 或 5V |
| GND | GND |
| TX | GPIO16 |
| RX | GPIO17 |
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。
五、重新上电运行
上传完成后:
- 关闭 Thonny,或者点击 Thonny 的“停止/断开”。
- 按一下 ESP32 的
EN/RESET按钮。 - 也可以拔掉 USB 后重新连接。
以后每次 ESP32 上电时,都会自动运行 main.py:
IMU -> TTL -> ESP32 -> CP2102 -> USB -> 电脑
六、电脑接收数据
电脑端程序位于:
安装 Python 串口依赖:
python3 -m pip install pyserial
如果 Ubuntu 提示当前 Python 环境由系统管理,建议使用虚拟环境:
python3 -m venv .venv
source .venv/bin/activate
pip install pyserial
运行程序:
python3 pc_reader.py /dev/ttyUSB0
将 /dev/ttyUSB0 替换为 ESP32 的实际串口设备。
正常输出类似:
# 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 工业控制信号。必须使用光耦隔离模块、晶体管或其他合适的电平转换和驱动电路。
项目文件
.
|-- README.md
|-- main.py
`-- pc_reader.py