家里或学校的柜子里大概率躺着一台乐高MINDSTORMS EV3,随着micro:bit、Arduino等开源硬件平台崛起,EV3渐渐被束之高阁。这篇文章用ESP32-S3 AI智能摄像头运行小智AI固件作为语音入口,通过MCP桥接远程控制EV3电机,让吃灰多年的EV3用"说话"来驱动。

系统架构
ESP32-S3 AI智能摄像头(小智AI固件)
| MCP over WebSocket
v
电脑端(MCP桥接器) --SSH(USB网络共享)--> 乐高EV3(ev3dev+Python)EV3上ev3dev的Python版本较旧(3.5.3),无法直接运行小智MCP库,所以用电脑做桥接,EV3只负责执行电机控制。
硬件清单
| 硬件 | 数量 | 说明 |
|---|---|---|
| 乐高EV3主机 | 1 | 任意版本均可 |
| 大型电机 | 2 | 分别接在B口和C口 |
| ESP32-S3 AI智能摄像头 | 1 | 运行小智AI固件 |
| microSD卡 | 1 | 至少8GB,烧录ev3dev |
| USB数据线 | 1 | 连接EV3和电脑 |

关键步骤
1. 安装ev3dev:从ev3dev官网下载镜像烧录到SD卡,插入EV3开机即从SD卡启动。

2. 配置USB网络共享:在Windows网络连接中启用共享,EV3通过USB线联网。

3. 配置SSH免密登录:生成密钥对,将公钥复制到EV3。
4. 创建电机控制脚本:
#!/usr/bin/env python3
from ev3dev2.motor import MoveTank, OUTPUT_B, OUTPUT_C, SpeedPercent
import sys
action = sys.argv[1] if len(sys.argv) > 1 else "stop"
tank = MoveTank(OUTPUT_B, OUTPUT_C)
if action == "forward":
tank.on_for_seconds(SpeedPercent(50), SpeedPercent(50), seconds=2)
elif action == "backward":
tank.on_for_seconds(SpeedPercent(-50), SpeedPercent(-50), seconds=2)
elif action == "turn_left":
tank.on_for_seconds(SpeedPercent(0), SpeedPercent(50), seconds=2)
elif action == "turn_right":
tank.on_for_seconds(SpeedPercent(50), SpeedPercent(0), seconds=2)
else:
tank.off()5. 部署MCP桥接器:pip install mcp2xiaozhi mcp,创建服务器暴露control_ev3_motor工具,通过SSH让EV3后台执行。
关键:用nohup后台执行,SSH不等电机转完就返回,避免MCP调用阻塞。
6. 配置小智AI:在xiaozhi.me控制台创建智能体,获取MCP接入点。启动桥接器后即可语音控制。

踩坑记录
电机阻塞导致语音反馈超时:加nohup后台执行解决。Windows网络共享偶尔失效:重新勾选共享即可。SSH免密失效:重新复制公钥。
扩展思路
接入传感器让EV3自主决策;多台EV3编队行驶;部署到树莓派实现7x24运行;结合视觉识别自主行动。





电脑桥接+EV3执行的架构设计合理,各司其职
踩坑记录太有价值了
EV3+MCP+小智AI这个组合很有创意,老设备焕发新生
用nohup后台执行避免阻塞这个技巧实用