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 Server - Servidor MCP para Arduino**

MANIFESTACIÓN

👉 Demostración 1 de Chotu Robo

👉 Demostración 2 de Chotu Robo

👉 Demostración 3 de Chotu Robo

👉 Artículo de Chotu Robo

Descripción general

Este proyecto muestra cómo integrar la robótica basada en Arduino (mediante la placa NodeMCU ESP32 o Arduino Nano 368 ) con la IA mediante el framework MCP (Protocolo de Contexto de Modelo) de Claude AI de Anthropic. Proporciona una conexión fluida entre los componentes de hardware y la IA mediante una interfaz sencilla que el usuario puede controlar desde un teléfono móvil o un ordenador.

Este sistema actúa como un servidor robótico (llamado Chotu Robo ) que puede interactuar con diversos componentes físicos como LED, motores, servos, ventiladores, sensores y más. Estos componentes se pueden controlar remotamente enviando comandos al servidor, que a su vez controla el hardware mediante el microcontrolador ESP32 o Arduino Nano 368.

Esta configuración abre la posibilidad de futuras aplicaciones basadas en IA, como controlar el robot a través de asistentes de IA (como Claude) desde aplicaciones móviles o web.

El robot Chotu funciona en dos modos: modo cableado y modo inalámbrico, cada uno diseñado para diferentes casos de uso y configuraciones de hardware.

Modo cableado - Arduino Nano 368

En modo cableado, el robot utiliza una placa Arduino Nano 368, donde el código se carga directamente por USB. Este modo no admite comandos en tiempo real a través de la red, ya que requiere una conexión USB física para funcionar. El robot ejecuta el código precargado, lo que lo hace ideal para proyectos que no requieren conexión a internet ni wifi.

Modo inalámbrico: servidor web ESP32 con Wi-Fi habilitado

En modo inalámbrico, el robot se alimenta mediante una placa ESP32. El ESP32 se conecta a su red Wi-Fi local e inicia un servidor web habilitado para Wi-Fi que recibe comandos en tiempo real mediante la API REST o WebSocket. Este modo permite al robot interactuar con dispositivos externos y controlar diversos componentes de hardware, como LED, motores, servos y ventiladores.

Una vez conectado al Wi-Fi, el ESP32 acepta comandos entrantes que controlan la funcionalidad del hardware en tiempo real. Estos comandos pueden enviarse desde un servidor MCP TypeScript o un servidor MCP basado en Java Spring, lo que permite una integración fluida entre el hardware del microcontrolador y los sistemas basados en IA para aplicaciones de automatización, robótica o IoT.

Características

  1. Control de LED : hace parpadear un LED durante una duración determinada.
  2. Control de timbre : hace sonar un timbre durante un tiempo específico.
  3. Control del motor : hacer funcionar un motor a una velocidad determinada durante un tiempo determinado.
  4. Control servo : mueve un servomotor a un ángulo específico.
  5. Control del ventilador : enciende o apaga un ventilador.
  6. Control de relé : enciende o apaga un relé.
  7. Lecturas del sensor :
    • Leer la temperatura de un sensor.
    • Mida la distancia utilizando un sensor ultrasónico.
  8. Comandos impulsados por IA : controla el robot usando indicaciones basadas en IA para acciones como moverse, iniciar, detener, girar y ajustar la velocidad.

Componentes utilizados

  • NodeMCU ESP32 o Arduino Nano 368 : Microcontroladores encargados de controlar el hardware y comunicarse con el servidor.
  • Johnny-Five : la biblioteca de IoT y robótica de JavaScript para interactuar con los componentes de hardware.
  • Marco MCP : el marco del Protocolo de Contexto Modelo para gestionar solicitudes e interacciones con sistemas externos, lo que permite la comunicación basada en IA.
  • Sensores y actuadores :
    • LED (para indicar el estado)
    • Zumbador
    • Servomotor
    • Motor
    • Módulo de relé
    • Sensor de distancia ultrasónico
    • Sensor de temperatura

Cómo funciona

El servidor Chotu Robo actúa como el centro principal para gestionar los comandos de un sistema de IA. El siguiente flujo describe el funcionamiento del sistema:

  1. Configuración :
    • La placa NodeMCU ESP32 o Arduino Nano 368 está conectada a varios sensores y actuadores (LED, motores, etc.).
    • La biblioteca Johnny-Five permite al servidor controlar componentes de hardware a través del microcontrolador.
  2. Integración MCP :
    • El McpServer gestiona la comunicación entre el hardware y la IA.
    • El servidor proporciona varias herramientas (comandos) como blinkLED , buzz , runMotor , moveServo y más.
    • Cada herramienta está asociada a una función específica y el servidor espera comandos del sistema de IA para ejecutar esas acciones.
  3. Control de IA :
    • Las indicaciones de IA se utilizan para activar acciones como mover el robot ( move-chotu ), controlar la velocidad ( set-chotu-speed ) y girar el robot ( turn-chotu ).
    • La IA utiliza a Claude u otros asistentes de IA para enviar comandos al servidor. Este procesa estos comandos e interactúa con el hardware según corresponda.
  4. Comunicación en tiempo real :
    • StdioServerTransport garantiza que el servidor pueda conectarse a sistemas de IA externos y ejecutar comandos en tiempo real.
  5. Comandos de usuario :
    • La IA puede enviar comandos fáciles de usar como "girar a Chotu a la izquierda" o "establecer la velocidad a 5" para controlar el comportamiento del robot.

Comandos y herramientas

A continuación se muestran algunos de los comandos disponibles y sus funcionalidades:

  • blinkLED : hace parpadear el LED durante un tiempo específico.
  • buzz : activa el timbre durante una duración determinada.
  • runMotor : inicia el motor a una velocidad determinada durante un período establecido.
  • moveServo : Mueve el servomotor a un ángulo especificado.
  • controlFan : Enciende o apaga el ventilador.
  • toggleRelay : enciende o apaga un módulo de relé.
  • readTemperature : obtiene la lectura de temperatura actual.
  • readDistance : mide la distancia utilizando el sensor ultrasónico.
  • move-chotu : Mueve a Chotu en pasos específicos (a través de indicaciones de IA).
  • start-chotu : Inicia Chotu y prepárate para operar.
  • stop-chotu : Detener Chotu y cerrar operaciones.
  • turn-chotu : gira Chotu en una dirección específica (izquierda o derecha).
  • set-chotu-speed : establece la velocidad para Chotu.

Cómo utilizar

Requisitos

  1. Hardware :
    • NodeMCU ESP32 o Arduino Nano 368 (o cualquier placa Arduino/ESP32 compatible).
    • Varios sensores y actuadores (LED, servo, motor, sensor ultrasónico, sensor de temperatura, relé).
  2. Software :
    • Instalar Node.js .
    • Instalar Johnny-Five para el control del hardware.
    • Utilice el SDK de MCP para integrarlo con IA.
    • Utilice el IDE de Arduino para programar el microcontrolador.

Pasos para la configuración

  1. Instalar Node.js y Johnny-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.
    Ejecutar el servidor:
    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.

Ejemplos de comandos de IA mueven a Chotu:

Comando: "Avanza Chotu 5 pasos". Acción: El robot se moverá según el número de pasos especificado. Velocidad:

Comando: "Ajustar velocidad a 10". Acción: La velocidad del robot se ajustará según corresponda. Girar a la izquierda:

Comando: "Gira a Chotu a la izquierda". Acción: El robot girará a la izquierda.

Depurar usando el inspector MCP:

npx @modelcontextprotocol/inspector node build/choturobo.js

Mejoras futuras

Este proyecto puede servir como marco fundamental para el desarrollo de sistemas robóticos más avanzados basados en IA. Puede ampliar su funcionalidad mediante:

  1. Agregar más sensores como cámaras o micrófonos.
  2. Integración de modelos de IA avanzados para una mejor toma de decisiones.
  3. Desarrollar una aplicación móvil o una interfaz web para controlar el robot a través de una interfaz gráfica.
  4. Usando una Raspberry Pi :
    • Configuración : utilice una Raspberry Pi para ejecutar el servidor MCP y controlar los componentes de hardware.
    • Instalación :
      sudo apt-get update sudo apt-get install nodejs npm npm install johnny-five npm install @modelcontextprotocol/sdk
    • Conexión al servidor basado en Java :
      • Configuración del servidor Java : cree un servidor MCP basado en Java para manejar solicitudes y comunicarse con Raspberry Pi.
      • Ejemplo de código 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(); } }
      • Ejecutando el servidor :
        javac -cp modelcontextprotocol-sdk.jar ChotuRoboServer.java java -cp .:modelcontextprotocol-sdk.jar ChotuRoboServer
    • Conexión de Raspberry Pi al servidor Java :
      • Asegúrese de que Raspberry Pi y el servidor Java estén en la misma red.
      • Utilice WebSocket o API REST para enviar comandos desde el servidor Java a Raspberry Pi.
      • Ejemplo de comando del servidor Java a Raspberry Pi:
        WebSocketClient client = new WebSocketClient(new URI("ws://raspberrypi.local:8080")); client.connect(); client.send("{\"command\": \"blinkLED\", \"params\": {\"time\": 5}}");

Siguiendo estos pasos, puede mejorar el proyecto Chotu Robo con funciones más avanzadas y una mejor integración con sistemas basados en IA y Java.

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

Un servidor MCP que integra robótica basada en Arduino (ESP32 o Arduino Nano) con IA, lo que permite el control de componentes de hardware como LED, motores, servos y sensores a través de asistentes de IA.

  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