该项目展示了如何通过Anthropic的Claude AI提供的MCP(模型上下文协议)框架将基于Arduino的机器人(使用NodeMCU ESP32或Arduino Nano 368板)与AI集成。它提供了一个简单的接口,使硬件组件与AI之间无缝连接,用户可以通过手机或计算机控制该接口。
该系统充当一个机器人服务器(名为Chotu Robo),可以与各种物理组件如LED、电机、伺服电机、风扇、传感器等进行交互。这些组件可以通过发送命令到服务器来远程控制,服务器再通过ESP32或Arduino Nano 368微控制器控制硬件。
这种设置开启了未来基于AI的应用的可能性,例如通过移动或网络应用程序中的AI助手(如Claude)来控制机器人。
Chotu 机器人有两种模式:有线模式和无线模式,每种模式针对不同的使用场景和硬件配置设计。
在有线模式下,机器人使用Arduino Nano 368板,代码通过USB直接上传。此模式不支持实时网络命令,因为它需要物理USB连接才能运行。机器人执行预上传的代码,适用于不需要Wi-Fi或网络连接的项目。
在无线模式下,机器人由ESP32板供电。ESP32连接到本地Wi-Fi网络,并启动一个支持Wi-Fi的Web服务器,通过REST API或WebSocket监听实时命令。此模式允许机器人与外部设备交互并控制各种硬件组件,如LED、电机、伺服电机和风扇。
一旦ESP32连接到Wi-Fi,它就会接受控制硬件功能的实时命令。这些命令可以从TypeScript MCP服务器或基于Java Spring的MCP服务器发送,实现微控制器硬件与基于AI系统的自动化、机器人或物联网应用之间的无缝集成。
Chotu Robo Server作为处理来自AI系统的命令的主要枢纽。以下流程概述了系统的工作方式:
设置:
MCP集成:
blinkLED、buzz、runMotor、moveServo等。AI控制:
move-chotu)、控制速度(set-chotu-speed)和转向机器人(turn-chotu)。实时通信:
用户命令:
这里是一些可用的命令及其功能:
blinkLED:让LED闪烁指定的时间。buzz:激活蜂鸣器一段特定时间。runMotor:以给定的速度运行电机一段时间。moveServo:将伺服电机移动到指定的角度。controlFan:打开或关闭风扇。toggleRelay:切换继电器模块的开/关状态。readTemperature:获取当前温度读数。readDistance:使用超声波传感器测量距离。move-chotu:根据AI提示移动Chotu特定步数。start-chotu:启动Chotu并准备运行。stop-chotu:停止Chotu并关闭操作。turn-chotu:将Chotu转向指定方向(左或右)。set-chotu-speed:设置Chotu的速度。硬件:
软件:
安装Node.js和Johnny-Five:
npm install johnny-five
npm install @modelcontextprotocol/sdk
设置ESP32或Arduino Nano 368在Arduino IDE上:
在Arduino IDE中安装ESP32板支持,如果使用ESP32或Arduino Nano 368板。
通过USB将NodeMCU ESP32或Arduino Nano 368连接到电脑。
将代码上传到板子:
使用Arduino IDE将提供的代码上传到ESP32或Arduino Nano 368。
运行服务器:
通过运行脚本启动MCP服务器。这将设置服务器并建立与硬件的通信。 连接到AI:
从AI系统(如Claude)发送命令来控制机器人。 示例AI命令 移动Chotu:
命令:"向前移动Chotu 5步。" 动作:机器人将根据指定的步数移动。 设置速度:
命令:"将速度设为10。" 动作:机器人的速度将相应调整。 左转:
命令:"左转Chotu。" 动作:机器人将向左旋转。
npx @modelcontextprotocol/inspector node build/choturobo.js
这个项目可以作为一个基础框架,用于开发更高级的基于AI的机器人系统。你可以通过以下方式扩展功能:
sudo apt-get update
sudo apt-get install nodejs npm
npm install johnny-five
npm install @modelcontextprotocol/sdk
import org.modelcontextprotocol.server.McpServer;
import org.modelcontextprotocol.server.transport.WebSocketTransport;
public class ChotuRoboServer {
public static void main(String[] args) {
McpServer server = new McpServer();
WebSocketTransport transport = new WebSocketTransport("ws://raspberrypi.local:8080");
server.connect(transport);
// 在此处定义工具和提示
server.tool("blinkLED", params -> {
// 实现LED闪烁逻辑
});
server.start();
}
}
javac -cp modelcontextprotocol-sdk.jar ChotuRoboServer.java
java -cp .:modelcontextprotocol-sdk.jar ChotuRoboServer
WebSocketClient client = new WebSocketClient(new URI("ws://raspberrypi.local:8080"));
client.connect();
client.send("{\"command\": \"blinkLED\", \"params\": {\"time\": 5}}");
通过遵循这些步骤,你可以增强Chotu Robo项目的功能,并更好地将其与基于AI和Java的系统集成。