让吃灰的乐高EV3接入小智AI:ESP32-S3 AI智能摄像头 + EV3 语音控制小车实战
前言:被遗忘在角落的 EV3
如果你是一位创客或STEM教育从业者,家里或学校的柜子里大概率躺着一台乐高 MINDSTORMS EV3。它曾是乐高机器人系列的旗舰产品,拥有强大的电机控制能力和丰富的传感器生态。但随着乐高官方逐渐将重心转向 SPIKE 系列,以及 micro:bit、行空板、Arduino 等开源硬件平台的崛起,EV3 渐渐被束之高阁,成为"吃灰"设备。
与此同时,AI 语音助手正在快速普及。以"小智AI"为代表的开源语音交互方案,让我们可以用极低的成本,把自然语言对话能力嵌入到自己的硬件项目中。而 ESP32-S3 AI智能摄像头 这类集成了麦克风、扬声器、摄像头和 Wi-Fi 的开发板,更是为语音交互提供了理想的硬件载体。
这篇文章要做的,就是把这两者结合起来:用 ESP32-S3 AI智能摄像头 运行小智AI固件作为语音交互入口,通过 MCP(Model Context Protocol) 桥接,远程控制乐高EV3的电机。让吃灰多年的 EV3 重新动起来,而且是用"说话"来驱动。
项目效果
对着 ESP32-S3 AI智能摄像头说一句"小车前进",EV3 上的 B 口和 C 口电机同时正转,小车向前行驶;说"左转""右转""后退""停止",EV3 都能准确响应。
整个系统不需要在 EV3 上运行任何 AI 模型,也不需要昂贵的硬件升级。EV3 只负责它最擅长的事——精确控制电机;AI 理解和语音交互,交给 ESP32-S3 AI智能摄像头和云端小智完成。

系统架构
整个控制链路分为四层:
┌─────────────────────────┐
│ ESP32-S3 AI智能摄像头 │ 运行小智AI固件,负责语音识别与合成
│ (小智AI固件) │
└────────────┬────────────┘
│ MCP over WebSocket
▼
┌─────────────────────────┐
│ 电脑端 │ 运行 mcp2xiaozhi 桥接器 + EV3 MCP 服务器
│ (MCP 桥接器) │ 接收小智指令,通过 SSH 转发到 EV3
└────────────┬────────────┘
│ SSH (USB 网络共享)
▼
┌─────────────────────────┐
│ 乐高 EV3 │ 运行 ev3dev + Python 脚本
│ (ev3dev) │ 执行电机控制:B口 + C口
└─────────────────────────┘
为什么需要电脑做桥接? 因为 EV3 上的 ev3dev 系统 Python 版本较旧(3.5.3),无法直接运行小智 MCP 的 Python 库。把桥接器放在电脑上,EV3 只负责执行简单的电机控制脚本,各司其职。
硬件准备
| 硬件 | 数量 | 说明 |
|---|---|---|
| 乐高 EV3 主机 | 1 | 任意版本均可 |
| 大型电机 | 2 | 分别接在 B 口和 C 口 |
| ESP32-S3 AI智能摄像头 | 1 | 运行小智AI固件 |
| microSD 卡 | 1 | 至少 8GB,用于烧录 ev3dev |
| USB 数据线 | 1 | 连接 EV3 和电脑 |
| 小车底盘 | 1 | 可用乐高科技件自行搭建 |

第一步:给 EV3 安装 ev3dev 系统
ev3dev 是一个可以运行在 EV3 上的完整 Debian Linux 发行版。它不需要替换官方固件——只需把系统烧录到 SD 卡,插入 EV3,开机就会从 SD 卡启动。拔掉 SD 卡,EV3 又回到官方系统。
- 前往 ev3dev 官网 下载最新的 EV3 镜像文件。
- 使用 balenaEtcher 或 Raspberry Pi Imager 将镜像烧录到 microSD 卡。

- 将 SD 卡插入 EV3,开机启动。
启动后,EV3 屏幕上会显示 Brickman 可视化界面。


第二步:配置 USB 网络共享
由于 EV3 的 Wi-Fi 支持有限,我们用 USB 线把 EV3 连到电脑上,通过 Windows 的"Internet 连接共享"让 EV3 联网。这样也顺便建立了电脑和 EV3 之间的网络通道,后续 SSH 就靠它。
在 Windows 11 上操作:
- 用 USB 线连接 EV3 和电脑。
- 按
Win + R,输入ncpa.cpl,打开"网络连接"窗口。 - 找到你上网用的网卡(如 WLAN),右键 → 属性 → 共享选项卡。
- 勾选"允许其他网络用户通过此计算机的 Internet 连接来连接"。
- 在下拉菜单中选择 EV3 对应的网卡(通常显示为"远程 NDIS 兼容设备"或"以太网")。
- 点击确定。

在 EV3 上操作:
进入 Brickman 的 Wireless and Networks → All Network Connections → Wired,选择 Connect。状态变为 Online 即表示成功。
第三步:配置 SSH 免密登录
我们需要让电脑能自动通过 SSH 向 EV3 发送命令,而不需要每次输入密码。
在 Windows CMD 中执行:
:: 生成密钥对(如果还没有)
ssh-keygen -t rsa
:: 把公钥复制到 EV3
type %USERPROFILE%\.ssh\id_rsa.pub | ssh robot@ev3dev.local "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
这一步会要求输入一次密码(默认 maker)。完成后测试:
ssh robot@ev3dev.local "echo hello"
如果直接输出 hello 而没有要求密码,说明免密配置成功。

第四步:在 EV3 上创建电机控制脚本
通过 SSH 登录 EV3:
ssh robot@ev3dev.local
创建 motor_control.py:
nano motor_control.py

粘贴以下代码:
#!/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()
tank.off()

保存退出(Ctrl+O → 回车 → Ctrl+X),赋予执行权限:
chmod +x motor_control.py
手动测试:
python3 motor_control.py forward
如果 B 口和 C 口电机同时转动 2 秒,说明脚本正常。
第五步:在电脑上部署 MCP 桥接器
小智AI通过 MCP 协议调用外部工具。我们需要在电脑上运行一个 MCP 服务器,它暴露一个 control_ev3_motor 工具,接收到指令后通过 SSH 让 EV3 执行动作。
安装依赖:
pip install mcp2xiaozhi mcp
创建 ev3_mcp_server.py:
import subprocess
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("EV3 Motor Control")
SCRIPT_PATH = "/home/robot/motor_control.py"
def run_ev3_command(action):
"""通过 SSH 在 EV3 上后台执行命令,立即返回"""
ssh_cmd = [
"ssh",
"robot@ev3dev.local",
f"nohup python3 {SCRIPT_PATH} {action} > /dev/null 2>&1 &"
]
try:
result = subprocess.run(
ssh_cmd,
capture_output=True,
text=True,
timeout=10,
stdin=subprocess.DEVNULL
)
print(f"[EV3] 指令: {action}, 返回码: {result.returncode}")
if result.returncode == 0:
return f"指令 '{action}' 已发送"
else:
return f"指令 '{action}' 发送失败: {result.stderr.strip()}"
except subprocess.TimeoutExpired:
return f"指令 '{action}' SSH 连接超时"
except Exception as e:
return f"指令 '{action}' 执行异常: {str(e)}"
@mcp.tool()
def control_ev3_motor(action: str) -> str:
"""
控制 EV3 机器人的 B 口和 C 口电机。
参数 action 可选: forward(前进), backward(后退),
turn_left(左转), turn_right(右转), stop(停止)
"""
if action not in ["forward", "backward", "turn_left", "turn_right", "stop"]:
return "无效的动作指令。"
return run_ev3_command(action)
if __name__ == "__main__":
mcp.run(transport='stdio')
关键点:用 nohup ... & 让 EV3 上的脚本在后台运行,SSH 命令不等电机转完就返回。否则电机转动 2 秒会让 MCP 调用阻塞,导致小智语音反馈超时。
创建 mcp_config.json:
{
"mcpServers": {
"ev3-motor": {
"type": "stdio",
"command": "python",
"args": ["ev3_mcp_server.py"]
}
}
}
第六步:配置 ESP32-S3 AI智能摄像头运行小智AI固件
ESP32-S3 AI智能摄像头是一款集成了摄像头、麦克风、扬声器和 Wi-Fi 的开发板,非常适合运行小智AI固件。具体烧录步骤请参考小智AI官方文档和硬件厂商提供的教程。
烧录完成后,在 xiaozhi.me 控制台创建一个智能体,获取 MCP 接入点地址(以 wss:// 开头)。

第七步:启动桥接器并联调
在电脑上打开 CMD,切换到存放 mcp_config.json 和 ev3_mcp_server.py 的目录:
cd /d D:\ev3
set MCP_ENDPOINT=wss://api.xiaozhi.me/mcp/?token=你的token
mcp2xiaozhi run ev3-motor
看到以下日志说明桥接成功:
Registered server 'ev3-motor' (stdio) -> wss://api.xiaozhi.me/mcp/?<redacted>
[ev3-motor] bridge starting (stdio <-> ws)
[ev3-motor] WebSocket connected

现在对着 ESP32-S3 AI智能摄像头说"小车前进",EV3 应该就会动起来。
踩坑记录与解决方案
坑1:小智语音反馈"执行失败"或"超时"
现象:EV3 电机确实转了,但小智说"执行失败"。
原因:EV3 脚本里 on_for_seconds 是阻塞调用,电机转 2 秒期间 SSH 命令一直不返回,MCP 调用超时。
解决:在 SSH 命令里加 nohup ... &,让 EV3 后台执行,SSH 立即返回。
坑2:EV3 的 Python 版本太旧
EV3 上的 ev3dev 预装 Python 3.5.3,无法直接安装小智 MCP 的 Python 库(要求 3.7+)。这就是为什么我们采用"电脑桥接 + EV3 执行"的架构,而不是把 MCP 直接跑在 EV3 上。
坑3:Windows 网络共享不稳定
Windows 的 Internet 连接共享(ICS)偶尔会无故停止工作。如果 EV3 突然断网,重新取消勾选再勾选一次共享即可。
坑4:SSH 免密登录失效
如果重新烧录了 SD 卡,或者 EV3 的 ~/.ssh/authorized_keys 权限被改乱,免密登录会失效。重新执行第三步的公钥复制命令即可。
坑5:ESP32-S3 AI智能摄像头固件烧录失败
不同厂商的 ESP32-S3 AI智能摄像头硬件设计略有差异,烧录前请确认固件版本与硬件型号匹配。如果烧录后无法启动,检查 USB 驱动和烧录工具版本,必要时按住 BOOT 键再上电进入下载模式。
扩展思路
这个项目只是一个起点。基于"小智AI + MCP + EV3"的架构,你还可以做很多事:
- 接入传感器:在 EV3 脚本里读取颜色传感器、超声波传感器,让 EV3 根据环境自主决策,小智负责语音播报。
- 多设备联动:用同一个 MCP 桥接器同时控制多台 EV3,实现编队行驶。
- 接入更多工具:在 MCP 服务器里添加更多工具函数,比如"查询天气""播放音乐",让小智的能力不局限于控制电机。
- 脱离电脑:把 MCP 桥接器部署到树莓派或 NAS 上,实现 7×24 小时运行。
- 视觉能力:ESP32-S3 AI智能摄像头自带摄像头,后续可以结合视觉识别,让 EV3 根据"看到"的东西自主行动。
结语
乐高EV3是一台被低估的设备。它的电机控制精度、传感器生态和结构件兼容性,在今天依然有很高的价值。它缺的不是能力,而是一个跟上时代的交互入口。
小智AI和 MCP 协议的出现,恰好补上了这块短板。通过 ESP32-S3 AI智能摄像头作为语音入口,电脑作为协议桥接,EV3 作为执行终端,我们让一台"吃灰"多年的设备,重新拥有了自然语言交互的能力。
希望这篇文章能给你带来一些灵感。如果你手里也有一台闲置的 EV3,不妨试试让它"开口说话"。
项目参考资源:
- ev3dev 官网:https://www.ev3dev.org/
- 小智AI控制台:https://xiaozhi.me
- mcp2xiaozhi:https://pypi.org/project/mcp2xiaozhi/
- DF创客社区:https://mc.dfrobot.com.cn/
本文首发于 DF 创客社区,转载请注明出处。



