Chotu Robo Server

by vishalmysore
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Controls Arduino-based hardware components like LEDs, motors, servos, fans, sensors, and relays through an Arduino Nano 368 board when running in Wired Mode

  • Provides Johnny-Five JavaScript robotics library integration for hardware control and communication with the microcontroller

  • Uses the Johnny-Five JavaScript robotics library to interact with hardware components and manage the MCP server functionality

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

演示

👉 Chotu Robo 演示 1

👉 Chotu Robo Demo 2

👉 Chotu Robo Demo 3

👉 Chotu Robo 文章

概述

该项目展示了如何利用 Anthropic 公司 Claude AI 的MCP(模型上下文协议)框架,将基于 Arduino 的机器人技术(使用NodeMCU ESP32Arduino Nano 368开发板)与人工智能 (AI) 集成。它通过一个简单的界面,实现了硬件组件与人工智能 (AI) 之间的无缝连接,用户可以通过手机或电脑进行控制。

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

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

Chotu 机器人有两种运行模式:有线模式和无线模式,每种模式都针对不同的用例和硬件配置而设计。

有线模式 - Arduino Nano 368

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

无线模式 - ESP32 Wi-Fi 启用 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. 人工智能命令:使用基于人工智能的提示控制机器人执行移动、启动、停止、转动和调整速度等操作。

使用的组件

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

工作原理

Chotu Robo 服务器是处理 AI 系统命令的主要枢纽。以下流程概述了该系统的工作原理:

  1. 设置
    • NodeMCU ESP32Arduino Nano 368板连接到各种传感器和执行器(LED、电机等)。
    • Johnny-Five库允许服务器通过微控制器控制硬件组件。
  2. MCP集成
    • McpServer管理硬件和 AI 之间的通信。
    • 该服务器提供了多种工具(命令),例如blinkLEDbuzzrunMotormoveServo等。
    • 每个工具都与特定功能相关联,服务器等待来自 AI 系统的命令来执行这些操作。
  3. 人工智能控制
    • AI 提示用于触发移动机器人( move-chotu )、控制速度( set-chotu-speed )和转动机器人( turn-chotu )等动作。
    • AI使用Claude或其他AI助手向服务器发送命令,服务器处理这些命令并相应地与硬件进行交互。
  4. 实时通信
    • StdioServerTransport确保服务器可以连接到外部 AI 系统并实时执行命令。
  5. 用户命令
    • 人工智能可以发送用户友好的命令,例如**“将 Chotu 左转”“将速度设置为 5”**来控制机器人的行为。

命令和工具

以下是一些可用的命令及其功能:

  • blinkLED :使 LED 闪烁指定时间。
  • buzz :激活蜂鸣器一段时间。
  • runMotor :以给定的速度启动电机并运行一段时间。
  • moveServo :将伺服电机移动到指定角度。
  • controlFan :打开或关闭风扇。
  • toggleRelay :打开或关闭继电器模块。
  • readTemperature :获取当前温度读数。
  • readDistance :使用超声波传感器测量距离。
  • move-chotu :按照特定步骤移动 Chotu(通过 AI 提示)。
  • 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 Set up the ESP32 or Arduino Nano 368 on the Arduino IDE: Install the ESP32 board support in the Arduino IDE for ESP32 or Arduino Nano 368 board if using. Connect the NodeMCU ESP32 or Arduino Nano 368 to your computer via USB. Upload the Code to the Board: Use the Arduino IDE to upload the provided code to the ESP32 or Arduino Nano 368.
    运行服务器:
    Start the MCP server by running the script. This will set up the server and establish communication with the hardware. Connect to the AI: Send commands from the AI system (like Claude) to control the robot.

AI 命令移动 Chotu 示例:

指令:“让 Chotu 向前移动 5 步。” 动作:机器人将根据指定的步数移动。设置速度:

指令:“将速度设置为10。” 动作:机器人的速度将相应调整。左转:

命令:“将 Chotu 向左转。” 动作:机器人将向左旋转。

使用 MCP 检查器进行调试:

npx @modelcontextprotocol/inspector node build/choturobo.js

未来的改进

该项目可以作为开发更先进的基于AI的机器人系统的基础框架。您可以通过以下方式扩展其功能:

  1. **添加更多传感器,**如摄像头或麦克风。
  2. 整合先进的人工智能模型,以便做出更好的决策。
  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); // Define tools and prompts here server.tool("blinkLED", params -> { // Implement LED blinking logic }); 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 的系统集成。

-
security - not tested
A
license - permissive license
-
quality - not tested

MCP 服务器将基于 Arduino 的机器人(ESP32 或 Arduino Nano)与 AI 相集成,允许通过 AI 助手控制 LED、电机、伺服器和传感器等硬件组件。

  1. DEMO
    1. Overview
      1. Wired Mode - Arduino Nano 368
      2. Wireless Mode - ESP32 Wi-Fi Enabled Web Server
    2. Features
      1. Components Used
        1. How It Works
          1. Commands and Tools
            1. How to Use
              1. Requirements
              2. Steps to Setup
              3. Debug using the MCP Inspector:
            2. Future Improvements
              ID: fjq5opdbhr