C

Choturobo 智能机器人控制平台

@vishalmysore/choturobo
0 Stars 296 次浏览 vishalmysore 更新于 2026-08-23

一种集成了基于Arduino的机器人技术(ESP32或Arduino Nano)与人工智能的MCP服务器,允许通过人工智能助手控制LED、电机、伺服和传感器等硬件组件。

该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

Chotu Robo 服务器 - Arduino 的 MCP 服务器

演示

👉 Chotu 机器人演示 1

👉 Chotu 机器人演示 2

👉 Chotu 机器人演示 3

👉 Chotu 机器人演示 4

👉 Chotu 机器人文章

👉 Chotu 机器人文章 2

概述

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

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

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

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

有线模式 - Arduino Nano 368

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

无线模式 - 带 Wi-Fi 的 ESP32 网络服务器

在无线模式下,机器人由 ESP32 板供电。ESP32 连接到本地 Wi-Fi 网络并启动一个带 Wi-Fi 的网络服务器,通过 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 框架: Model Context Protocol 框架,用于处理与外部系统的请求和交互,实现基于 AI 的通信。
  • 传感器和执行器
    • LED(用于指示状态)
    • 蜂鸣器
    • 舵机
    • 电机
    • 继电器模块
    • 超声波距离传感器
    • 温度传感器

工作原理

Chotu Robo 服务器作为处理来自 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
    

    在 Arduino IDE 上设置 ESP32 或 Arduino Nano 368:

    如果使用 ESP32 或 Arduino Nano 368 板,请在 Arduino IDE 中安装 ESP32 板支持。
    通过 USB 将 NodeMCU ESP32 或 Arduino Nano 368 连接到您的计算机。
    将代码上传到板上:

    使用 Arduino IDE 将提供的代码上传到 ESP32 或 Arduino Nano 368。

    运行服务器:
    
         通过运行脚本来启动 MCP 服务器。这将设置服务器并与硬件建立通信。
         连接到 AI:
    
         从 AI 系统(如 Claude)发送命令来控制机器人。
    

示例 AI 命令

移动 Chotu:

命令: "Move Chotu forward by 5 steps."
动作: 机器人将根据指定的步数移动。
设置速度:

命令: "Set speed to 10."
动作: 机器人的速度将相应调整。
左转:

命令: "Turn Chotu left."
动作: 机器人将向左旋转。

使用 MCP Inspector 调试:

npx @modelcontextprotocol/inspector node build/choturobo.js

未来改进

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

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

按照这些步骤,你可以为Chotu Robo项目添加更多高级功能,并更好地与AI和基于Java的系统集成。

相关 MCP 服务