# Choturobo 智能机器人控制平台
## 基本信息
- Slug: `vishalmysore-choturobo`
- Source: modelscope
- Publisher: @vishalmysore/choturobo
- Categories: os-automation / home-automation-and-iot
- Hosted: No
- License: MIT License
- Source URL: https://www.modelscope.cn/mcp/servers/@vishalmysore/choturobo
## 简介
一种集成了基于Arduino的机器人技术（ESP32或Arduino Nano）与人工智能的MCP服务器，允许通过人工智能助手控制LED、电机、伺服和传感器等硬件组件。
## 安装提示

```bash
npm install johnny-five npm install @modelcontextprotocol/sdk
```

## MCP Server 详情

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

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

## 演示

👉 [Chotu 机器人演示 1](https://www.linkedin.com/posts/vishalrow_robotics-artificialintelligence-openai-activity-7312972405512028160-FfPB?utm_source=share&utm_medium=member_desktop&rcm=ACoAAABupTgBwY_78GTh-90OXNsbtOgGHbRO7HQ)

👉 [Chotu 机器人演示 2](https://www.linkedin.com/posts/vishalrow_claudeai-anthropic-ai-activity-7307097300147834880-Mi7n?utm_source=share&utm_medium=member_desktop&rcm=ACoAAABupTgBwY_78GTh-90OXNsbtOgGHbRO7HQ)

👉 [Chotu 机器人演示 3](https://www.linkedin.com/posts/vishalrow_autonomousrobot-springboot-artificialintelligence-activity-7316839291148554240-jFyM?utm_source=share&utm_medium=member_desktop&rcm=ACoAAABupTgBwY_78GTh-90OXNsbtOgGHbRO7HQ)

👉 [Chotu 机器人演示 4](https://www.linkedin.com/feed/update/urn:li:activity:7319065900031098880/)  

👉 [Chotu 机器人文章](https://www.linkedin.com/pulse/arduino-robot-controlled-artificial-intelligence-using-vishal-mysore-kwltc/?utm_source=share&utm_medium=member_android&utm_campaign=share_via)

👉 [Chotu 机器人文章 2](https://www.linkedin.com/pulse/choturobo-mapletruck-step-guide-building-ai-powered-vishal-mysore-elvzc/?trackingId=0oj6GKrfS5eZu%2B9OYuIb3w%3D%3D)  

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

## 概述

该项目展示了如何使用 Anthropic 的 Claude AI 提供的 **MCP（Model Context Protocol）** 框架将基于 Arduino 的机器人（使用 **NodeMCU ESP32** 或 **Arduino 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 ESP32** 或 **Arduino Nano 368**: 微控制器负责控制硬件并与服务器通信。
- **Johnny-Five**: 用于与硬件组件交互的 JavaScript 机器人和物联网库。
- **MCP 框架**: Model Context Protocol 框架，用于处理与外部系统的请求和交互，实现基于 AI 的通信。
- **传感器和执行器**：
    - **LED**（用于指示状态）
    - **蜂鸣器**
    - **舵机**
    - **电机**
    - **继电器模块**
    - **超声波距离传感器**
    - **温度传感器**

## 工作原理

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

1. **设置**：
    - **NodeMCU ESP32** 或 **Arduino Nano 368** 板连接到各种传感器和执行器（如 LED、电机等）。
    - **Johnny-Five** 库允许服务器通过微控制器控制硬件组件。

2. **MCP 集成**：
    - **McpServer** 管理硬件与 AI 之间的通信。
    - 服务器提供了几个**工具**（命令），如 `blinkLED`、`buzz`、`runMotor`、`moveServo` 等。
    - 每个工具都关联一个特定的功能，服务器等待来自 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 ESP32** 或 **Arduino Nano 368**（或其他支持的 Arduino/ESP32 板）。
    - 各种传感器和执行器（LED、伺服电机、电机、超声波传感器、温度传感器、继电器）。

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

### 设置步骤

1. 安装 **Node.js** 和 **Johnny-Five**：
   ```bash
   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服务器并控制硬件组件。
    - **安装**：
        ```bash
        sudo apt-get update
        sudo apt-get install nodejs npm
        npm install johnny-five
        npm install @modelcontextprotocol/sdk
        ```
    - **连接到基于Java的服务器**：
        - **Java服务器设置**：创建一个基于Java的MCP服务器来处理请求并与树莓派通信。
        - **Java代码示例**：
            ```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")…

