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 서버**

데모

👉 초투 로보 데모 1

👉 초투 로보 데모 2

👉 초투 로보 데모 3

👉 초투 로보 기사

개요

이 프로젝트는 Anthropic의 Claude AI에서 제공하는 MCP(Model Context Protocol) 프레임워크를 사용하여 Arduino 기반 로봇( NodeMCU ESP32 또는 Arduino Nano 368 보드 사용)을 AI 와 통합하는 방법을 보여줍니다. 사용자가 휴대폰이나 컴퓨터를 통해 제어할 수 있는 간단한 인터페이스를 통해 하드웨어 구성 요소와 AI를 원활하게 연결합니다.

이 시스템은 LED, 모터, 서보, 팬, 센서 등 다양한 물리적 구성 요소와 상호 작용할 수 있는 로봇 서버 ( Chotu Robo ) 역할을 합니다. 이러한 구성 요소는 서버에 명령을 전송하여 원격으로 제어할 수 있으며, 서버는 ESP32 또는 Arduino Nano 368 마이크로컨트롤러를 통해 하드웨어를 제어합니다.

이러한 설정은 모바일이나 웹 애플리케이션에서 AI 보조원(예: 클로드)을 통해 로봇을 제어하는 등 향후 AI 기반 애플리케이션의 가능성을 열어줍니다.

Chotu 로봇은 유선 모드와 무선 모드의 두 가지 모드로 작동하며, 각각 다른 사용 사례와 하드웨어 구성에 맞게 설계되었습니다.

유선 모드 - Arduino Nano 368

유선 모드에서는 로봇이 Arduino Nano 368 보드를 사용하며, 코드는 USB를 통해 직접 업로드됩니다. 이 모드에서는 작동을 위해 물리적인 USB 연결이 필요하므로 네트워크를 통한 실시간 명령을 지원하지 않습니다. 로봇은 미리 업로드된 코드를 실행하므로 Wi-Fi 또는 네트워크 연결이 필요하지 않은 프로젝트에 적합합니다.

무선 모드 - ESP32 Wi-Fi 지원 웹 서버

무선 모드에서 로봇은 ESP32 보드로 구동됩니다. ESP32는 로컬 Wi-Fi 네트워크에 연결하여 REST API 또는 웹소켓을 통해 실시간 명령을 수신하는 Wi-Fi 지원 웹 서버를 시작합니다. 이 모드에서 로봇은 외부 장치와 상호 작용하고 LED, 모터, 서보, 팬과 같은 다양한 하드웨어 구성 요소를 제어할 수 있습니다.

ESP32가 Wi-Fi에 연결되면 하드웨어 기능을 실시간으로 제어하는 수신 명령을 수신합니다. 이러한 명령은 TypeScript MCP 서버 또는 Java Spring 기반 MCP 서버에서 전송할 수 있으며, 이를 통해 자동화, 로봇 공학 또는 IoT 애플리케이션을 위한 마이크로컨트롤러 하드웨어와 AI 기반 시스템 간의 원활한 통합이 가능합니다.

특징

  1. LED 제어 : 지정된 시간 동안 LED를 깜박입니다.
  2. 부저 제어 : 지정된 시간 동안 부저를 울립니다.
  3. 모터 제어 : 모터를 특정 속도로 일정 시간 동안 작동시킵니다.
  4. 서보 제어 : 서보 모터를 특정 각도로 움직입니다.
  5. 팬 제어 : 팬을 켜거나 끕니다.
  6. 릴레이 제어 : 릴레이를 켜거나 끕니다.
  7. 센서 판독값 :
    • 센서에서 온도를 읽습니다.
    • 초음파 센서를 사용하여 거리를 측정합니다.
  8. AI 기반 명령 : 이동, 시작, 정지, 회전, 속도 조절 등의 동작에 대한 AI 기반 프롬프트를 사용하여 로봇을 제어합니다.

사용된 구성 요소

  • NodeMCU ESP32 또는 Arduino Nano 368 : 하드웨어를 제어하고 서버와 통신하는 역할을 하는 마이크로컨트롤러입니다.
  • Johnny-Five : 하드웨어 구성 요소와 상호 작용하는 JavaScript 로봇 및 IoT 라이브러리입니다.
  • MCP 프레임워크 : 외부 시스템과의 요청 및 상호작용을 처리하여 AI 기반 커뮤니케이션을 구현하는 모델 컨텍스트 프로토콜 프레임워크입니다.
  • 센서 및 액추에이터 :
    • LED (상태 표시용)
    • 부저
    • 서보 모터
    • 모터
    • 릴레이 모듈
    • 초음파 거리 센서
    • 온도 센서

작동 원리

Chotu Robo Server는 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는 클로드 나 다른 AI 비서를 사용하여 서버에 명령을 전송합니다. 서버는 이러한 명령을 처리하고 그에 따라 하드웨어와 상호 작용합니다.
  4. 실시간 커뮤니케이션 :
    • StdioServerTransport는 서버가 외부 AI 시스템에 연결하고 실시간으로 명령을 실행할 수 있도록 보장합니다.
  5. 사용자 명령 :
    • AI는 "초투를 좌회전해" 또는 "속도를 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 ESP32 또는 Arduino Nano 368 (또는 지원되는 Arduino/ESP32 보드).
    • 다양한 센서 및 액추에이터(LED, 서보, 모터, 초음파 센서, 온도 센서, 릴레이).
  2. 소프트웨어 :
    • Node.js 를 설치합니다.
    • 하드웨어 제어를 위해 Johnny-Five를 설치합니다.
    • MCP SDK를 사용하여 AI와 통합하세요.
    • Arduino IDE를 사용하여 마이크로컨트롤러를 프로그래밍합니다.

설정 단계

  1. Node.jsJohnny-Five를 설치하세요:지엑스피1서버를 실행합니다:
    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 명령의 예 Move Chotu:

명령: "초투를 5걸음 전진시키세요." 동작: 로봇은 지정된 걸음 수에 따라 이동합니다. 속도 설정:

명령: "속도를 10으로 설정." 동작: 로봇의 속도가 그에 따라 조정됩니다. 좌회전:

명령: "초투를 왼쪽으로 돌린다." 동작: 로봇이 왼쪽으로 회전합니다.

MCP Inspector를 사용하여 디버깅:

npx @modelcontextprotocol/inspector node build/choturobo.js

향후 개선 사항

이 프로젝트는 더욱 발전된 AI 기반 로봇 시스템 개발을 위한 기반 프레임워크 역할을 할 수 있습니다. 다음과 같은 방법으로 기능을 확장할 수 있습니다.

  1. 카메라나 마이크 등 센서를 더 추가합니다 .
  2. 더 나은 의사결정을 위해 고급 AI 모델을 통합합니다 .
  3. 그래픽 인터페이스를 통해 로봇을 제어하는 모바일 앱이나 웹 인터페이스를 개발합니다 .
  4. 라즈베리파이 사용하기 :
    • 설정 : Raspberry Pi를 사용하여 MCP 서버를 실행하고 하드웨어 구성 요소를 제어합니다.
    • 설치 :
      sudo apt-get update sudo apt-get install nodejs npm npm install johnny-five npm install @modelcontextprotocol/sdk
    • Java 기반 서버에 연결 :
      • Java 서버 설정 : Raspberry Pi와 요청을 처리하고 통신하기 위한 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); // 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

Arduino 기반 로봇(ESP32 또는 Arduino Nano)을 AI와 통합하는 MCP 서버로, 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