返回市场
快捷机器人

快捷机器人

作者:vishalmysore70 星标更新:2025-04-20

项目介绍

Chotu Robo Server - 针对Arduino的MCP服务器

<div align="center"> <img src="Chotu.png" alt="Chotu Robo" width="300" height="300"> </div>

演示

👉 Chotu Robo 演示 1

👉 Chotu Robo 演示 2

👉 Chotu Robo 演示 3

👉 Chotu Robo 演示 4

👉 Chotu Robo 文章

👉 Chotu Robo 文章 2

<div align="center"> <img src="mapleTruck.jpg" alt="Chotu Robo" width="300" height="300"> </div>

概述

该项目展示了如何通过Anthropic的Claude AI提供的MCP(模型上下文协议)框架将基于Arduino的机器人(使用NodeMCU ESP32Arduino Nano 368板)与AI集成。它提供了一个简单的接口,使硬件组件与AI之间无缝连接,用户可以通过手机或计算机控制该接口。

该系统充当一个机器人服务器(名为Chotu Robo),可以与各种物理组件如LED、电机、伺服电机、风扇、传感器等进行交互。这些组件可以通过发送命令到服务器来远程控制,服务器再通过ESP32或Arduino Nano 368微控制器控制硬件。

这种设置开启了未来基于AI的应用的可能性,例如通过移动或网络应用程序中的AI助手(如Claude)来控制机器人。

Chotu 机器人有两种模式:有线模式和无线模式,每种模式针对不同的使用场景和硬件配置设计。

有线模式 - Arduino Nano 368

在有线模式下,机器人使用Arduino Nano 368板,代码通过USB直接上传。此模式不支持实时网络命令,因为它需要物理USB连接才能运行。机器人执行预上传的代码,适用于不需要Wi-Fi或网络连接的项目。

无线模式 - 支持Wi-Fi的ESP32 Web服务器

在无线模式下,机器人由ESP32板供电。ESP32连接到本地Wi-Fi网络,并启动一个支持Wi-Fi的Web服务器,通过REST API或WebSocket监听实时命令。此模式允许机器人与外部设备交互并控制各种硬件组件,如LED、电机、伺服电机和风扇。

一旦ESP32连接到Wi-Fi,它就会接受控制硬件功能的实时命令。这些命令可以从TypeScript MCP服务器或基于Java Spring的MCP服务器发送,实现微控制器硬件与基于AI系统的自动化、机器人或物联网应用之间的无缝集成。

功能

  1. LED 控制:让LED闪烁指定的时间。
  2. 蜂鸣器控制:让蜂鸣器发出声音指定的时间。
  3. 电机控制:以特定速度运行电机一段时间。
  4. 伺服电机控制:将伺服电机移动到特定角度。
  5. 风扇控制:打开或关闭风扇。
  6. 继电器控制:切换继电器的开/关状态。
  7. 传感器读数
    • 从传感器读取温度
    • 使用超声波传感器测量距离
  8. 基于AI的命令:使用基于AI的提示控制机器人的动作,如移动、开始、停止、转向和调整速度。

使用的组件

  • NodeMCU ESP32Arduino Nano 368:负责控制硬件并与服务器通信的微控制器。
  • Johnny-Five:用于与硬件组件交互的JavaScript机器人和物联网库。
  • MCP框架:处理请求和与外部系统交互的模型上下文协议框架,使基于AI的通信成为可能。
  • 传感器与执行器
    • LED(用于指示状态)
    • 蜂鸣器
    • 伺服电机
    • 电机
    • 继电器模块
    • 超声波测距传感器
    • 温度传感器

工作原理

Chotu Robo Server作为处理来自AI系统的命令的主要枢纽。以下流程概述了系统的工作方式:

  1. 设置

    • NodeMCU ESP32Arduino Nano 368板连接到各种传感器和执行器(LED、电机等)。
    • Johnny-Five库允许服务器通过微控制器控制硬件组件。
  2. MCP集成

    • McpServer管理硬件与AI之间的通信。
    • 服务器提供多个工具(命令),如blinkLEDbuzzrunMotormoveServo等。
    • 每个工具都关联一个特定的功能,服务器等待来自AI系统的命令来执行这些操作。
  3. AI控制

    • 使用AI提示触发动作,如移动机器人(move-chotu)、控制速度(set-chotu-speed)和转向机器人(turn-chotu)。
    • AI使用Claude或其他AI助手向服务器发送命令。服务器处理这些命令并与硬件相应地交互。
  4. 实时通信

    • StdioServerTransport确保服务器能够连接到外部AI系统并在实时执行命令。
  5. 用户命令

    • AI可以发送用户友好的命令,如**“左转Chotu”“将速度设为5”**来控制机器人的行为。

命令和工具

这里是一些可用的命令及其功能:

  • 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的速度。

如何使用

要求

  1. 硬件

    • NodeMCU ESP32Arduino Nano 368(或任何支持的Arduino/ESP32板)。
    • 各种传感器和执行器(LED、伺服电机、电机、超声波传感器、温度传感器、继电器)。
  2. 软件

    • 安装Node.js
    • 安装Johnny-Five用于硬件控制。
    • 使用MCP SDK集成AI。
    • 使用Arduino IDE编程微控制器。

设置步骤

  1. 安装Node.jsJohnny-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。" 动作:机器人将向左旋转。

使用MCP Inspector调试:

npx @modelcontextprotocol/inspector node build/choturobo.js

未来改进

这个项目可以作为一个基础框架,用于开发更高级的基于AI的机器人系统。你可以通过以下方式扩展功能:

  1. 添加更多传感器,如摄像头或麦克风。
  2. 集成更先进的AI模型,以提高决策能力。
  3. 开发移动应用或网页界面,通过图形界面控制机器人。
  4. 使用Raspberry Pi
    • 设置:使用Raspberry Pi运行MCP服务器并控制硬件组件。
    • 安装
      sudo apt-get update
      sudo apt-get install nodejs npm
      npm install johnny-five
      npm install @modelcontextprotocol/sdk
      
    • 连接到基于Java的服务器
      • Java服务器设置:创建一个基于Java的MCP服务器来处理请求并与Raspberry Pi通信。
      • Java代码示例
        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
        
    • 连接Raspberry Pi到Java服务器
      • 确保Raspberry Pi和Java服务器在同一网络中。
      • 使用WebSocket或REST API从Java服务器向Raspberry Pi发送命令。
      • 从Java服务器到Raspberry Pi的示例命令:
        WebSocketClient client = new WebSocketClient(new URI("ws://raspberrypi.local:8080"));
        client.connect();
        client.send("{\"command\": \"blinkLED\", \"params\": {\"time\": 5}}");
        

通过遵循这些步骤,你可以增强Chotu Robo项目的功能,并更好地将其与基于AI和Java的系统集成。