Arduino AI控制服务器

通过MCP协议实现AI(如Claude Desktop)对Arduino硬件的远程控制,支持LED开关等基础操作,展示AI与物理设备的交互能力。

  • by AimanMadan
  • Python
  • 本地部署
  • 13 星标
  • 更新于
在 GitHub 查看 AimanMadan/Arduino_MCP_Server

使用说明

Arduino MCP服务器:用AI控制你的Arduino!

欢迎来到Arduino MCP服务器项目!该项目允许您使用名为的特殊连接从计算机控制Arduino板 MCP(模型上下文协议)。把它想象成使用智能AI助手向Arduino发出指令!

这个项目是干什么的?

在这个项目中,我们正在构建一个“服务器”,用于监听来自人工智能(如克劳德桌面)的命令。当人工智能告诉它,我们的Arduino将打开或关闭一些LED。这是一种非常酷的方式来了解人工智能如何与现实世界互动!

你需要什么

在我们开始之前,请确保您已经:

  • Arduino板: 任何像Uno或Nano这样的Arduino板都可以工作。
  • 两个LED: 一个白色,一个红色。
  • 两个1k电阻器: 这些对于保护您的LED非常重要。
  • 跳线: 连接一切。
  • USB电缆: 将Arduino连接到计算机。
  • 克劳德桌面: 这是我们将要使用的AI助手。
  • Python 3.12或更高版本: 我们的代码是用Python编写的。
  • uv (超快Python包安装程序和解析器): 我们用它来管理我们的Python库。
  • 克劳德桌面

如何设置Arduino

  1. 连接LED:

    • 白色LED: 将白色LED的长腿(正极)连接到 数字引脚12 通过220欧姆的电阻器连接到Arduino上。将较短的腿(负极)连接到 国民总需求 Arduino上的(接地)引脚。
    • 红色LED: 将红色LED的长腿(正极)连接到 数字引脚11 通过220欧姆的电阻器连接到Arduino上。将较短的腿(负极)连接到 国民总需求 Arduino上的(接地)引脚。

    (记住始终使用带LED的电阻器,以防止它们烧坏!)

  2. 上传StandardFirmataPlus草图:

    • 打开Arduino IDE(集成开发环境)。
    • 去图书馆 Library Manager >搜索和下载 Firmata
    • 首选 File > Examples > Firmata > StandardFirmata.
    • 从以下位置选择Arduino板 Tools > Board.
    • 从中选择正确的端口 Tools > Port.
    • 上传 StandardFirmata 在Arduino板上绘制草图。这个程序允许Python控制Arduino。

准备好Python代码

  1. 下载项目: 如果您还没有,请将此项目下载或克隆到您的计算机上。

  2. 打开终端/命令提示符: 导航到保存此项目的文件夹。

  3. 安装Python依赖项: 我们将使用 uv 安装Python代码所需的一切。

    uv pip install
    

    此命令读取 pyproject.toml 文件并安装 fastmcp 和 pyfirmata2 图书馆。

理解Python代码(main.py)

让我们快速浏览一下Python代码的主要部分:

  • from fastmcp import FastMCP:此行导入 FastMCP 库,它帮助我们创建MCP服务器。
  • import pyfirmata2:这条线进口 pyfirmata2,这是一个让Python与Arduino对话的库。
  • Arduino = pyfirmata2.Arduino('/dev/cu.usbmodem212201'): 重要! 你需要改变 '/dev/cu.usbmodem212201' 到 COM端口 您的Arduino已连接到。您可以在Arduino IDE中找到它 Tools > Port。它可能看起来像 COM3 在Windows或 /dev/ttyUSB0 在Linux上。
  • @ArduinoMCP.tool:这些特殊线路(@ArduinoMCP.tool)他们被称为“装饰师” FastMCP 它们下面的功能是AI客户端可以使用的“工具”。
  • white_led_ON(), red_led_ON(), led_OFF():这些是我们的函数(小程序),告诉Arduino打开白色LED、打开红色LED或关闭两个LED。
  • ArduinoMCP.run():此行启动我们的MCP服务器,使其准备好接收命令!

设置Claude桌面

现在,让我们告诉Claude Desktop如何连接到我们的Arduino服务器。

  1. 打开您的MCP客户端 在这种情况下 Claude Desktop
  2. 首选 Settings > Developer > Edit Config >并打开配置文件 claude_desktop_config.json
  3. 复制并粘贴以下内容并更新路径:
    {
        "mcpServers": {
            "arduino": {
                "command": "/Users/aiman/.local/bin/uv", # this too
                "args": [
                    "--directory",
                    "/Users/aiman/Dev/Arduino_MCP", # update to the path 
                    "run",
                    "main.py"
                ]
            }
        }
    }
    
    • "command": 这应该是你的完整路径 uv 可执行。如果你使用的是Windows,它可能类似于 C:\Users\YourUser\AppData\Local\uv\uv.exe。在macOS/Linux上,它通常位于用户的本地bin目录中,如图所示。
    • "--directory": 这应该是 完整路径 到 Arduino_MCP 您计算机上的文件夹 main.py 文件已找到。请确保此路径正确!
    • "run", "main.py": 这些告诉 uv 运行您的 main.py 脚本。

运行项目!

  1. 启动克劳德桌面。

  2. MCP服务器应自动启动。 Claude Desktop将使用 claude_desktop_config.json 启动Arduino MCP服务器的文件。

  3. 和克劳德谈谈! 现在你可以让Claude控制你的Arduino。试着说这样的话:

    • “打开白色LED。”
    • “打开红色LED。”
    • “关闭所有LED。”

    Claude Desktop将理解您的命令并将其发送到Arduino MCP服务器,然后该服务器将告诉您的Arduino该做什么!

享受用AI控制Arduino的乐趣!这只是你能做的事情的开始!