Token导航 LogoToken导航TokenDH.com
Arduino MCP logo
运维云端stdio官方级别未说明来源级核验

Arduino MCP

MCP Server

Arduino-MCP是一个AI驱动的硬件自动化平台,通过Python API实现Arduino硬件设备的实时控制和事件驱动自动化。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
PythonAI控制云端部署

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

abhishekmallav

提供方

abhishekmallav

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install pyserial fastmcp

详细介绍

🤖 Arduino主控(Arduino MCP)

人工智能硬件自动化平台

![Python](https://www.python.org/downloads/) ![Arduino](https://www.arduino.cc/) ![FastMCP](https://github.com/jlowin/fastmcp) ![License](LICENSE)

*通过智能、事件驱动的自动化弥合人工智能代理和物理硬件之间的差距*

特性硬件快速开始例子扩展

______________________________________________________________________

📋 目录

______________________________________________________________________

🎯 什么是Arduino MCP?

Arduino MCP 是一个AI控制的自动化平台,将Python AI代理与基于Arduino的硬件外围设备连接起来。它通过结合以下内容,实现了无需人工监督的复杂、多步骤场景:

  • 实时硬件控制:显示器、传感器和执行器的实时更新
  • 事件驱动自动化:后台监控和条件触发器执行
  • 人工智能集成:为自然语言AI代理控制设计的高级工具
  • 非阻塞架构:固件无缝运行多个并发任务

它解决的问题

传统的Arduino项目需要:

  • 手动、连续控制或闭锁代码
  • 用于多设备协调的复杂状态管理
  • 持续轮询基于时间或传感器触发的事件
  • 难以与AI/自动化系统集成

解决方案

Arduino MCP提供:

  • 高级Python API 用于直观控制
  • 自动背景监控 计时器、时钟和传感器
  • 条件执行引擎 在没有轮询的情况下链接操作
  • 实时显示 无需Python干预即可在设备上进行更新
  • FastMCP集成 用于无缝的AI代理通信

______________________________________________________________________

✨ 主要特点

🖥️ 显示管理

显示类型功能关键功能
液晶显示器(16×2)实时时钟、秒表、自定义文本、背光控制lcd_show_current_time(), lcd_start_stopwatch(), lcd_write_line1/2()
TM1637 7 7段实时时钟、倒计时器、秒表、数字display_current_time(), display_timer(), display_number()

🔧 硬件控制

组件动作功能
发光二极管开/关、闪烁、切换led_on(), led_off(), led_blink(interval_ms), led_toggle()
蜂鸣器开/关,定时蜂鸣声buzzer_on(), buzzer_off(), buzzer_beep(duration_ms)
超声波传感器单读、连续监控、实时液晶流ultrasonic_read(), ultrasonic_start(), show_live_ultrasonic_on_lcd()

⚡ 条件自动化(明星功能!)

后台触发的操作 无需轮询即可自动执行:

触发器类型触发时示例用例
when_timer_finishes()倒计时达到00:00计时器结束时自动发出蜂鸣声,链式计时器
when_time_equals()时钟与特定时间匹配在计划时间开始任务
when_distance_less_than()物体靠得太近接近警报、防撞

可用操作:

  • buzzer_beep --声音警报
  • start_timer --开始倒计时
  • led_blink --视觉指示器
  • display_message --在LCD上显示文本

______________________________________________________________________

🌟 是什么让这个项目与众不同

1. 真实生活行为

与需要不断Python调用的典型Arduino草图不同,我们的固件运行显示器和计时器 自主地 在非阻塞回路中:

  • 时钟每秒自动滴答作响
  • 倒计时在没有Python干预的情况下递减
  • 与LED闪烁相同的策略——设置一次,它就永远运行

2. AI优先设计

专为通过FastMCP进行AI代理控制而构建:

  • 高级、意图驱动的功能
  • 与自然语言兼容的工具描述
  • 内置复杂场景解析(例如,“启动计时器,然后发出蜂鸣声,然后在上午7:15启动另一个计时器”)

3. 条件执行引擎

Python后台监视器监视Arduino状态消息和 自动执行排队的操作:

display_timer(1, 30)  # Start 90-second countdown
when_timer_finishes("buzzer_beep", "1000")  # Auto-beep when done
when_timer_finishes("start_timer", "02:00")  # Auto-start 2-min timer after first ends
# No polling loop needed - monitor handles everything!

4. 多设备编排

LCD、7段显示器、LED、蜂鸣器和超声波传感器的统一控制,具有同步状态管理功能。

5. 零手动轮询

传统方法: while True: check_status(); sleep(1)\ Arduino MCP方法:设置触发器→ 本底监测器→ 动作自动执行

______________________________________________________________________

🔌 硬件堆栈

组件

组件型号/类型连接备注
液晶显示器16×2 I2C(LiquidCrystal_I2C)SCL→10, SDA→11默认地址: 0x27 (试试看 0x3F 如果需要)
7段显示器4位TM1637CLK→8, DIO→9亮度可调(0-15)
超声波传感器HC-SR04或类似产品跳闸→7, ECHO→6范围:2-400cm
蜂鸣器有源蜂鸣器引脚13与LED共用引脚
发光二极管内置LED_BUILTIN通常引脚13

接线图

Arduino Uno/Nano
├── LCD I2C ────────► SCL: Pin 10, SDA: Pin 11
├── TM1637 ─────────► CLK: Pin 8, DIO: Pin 9
├── Ultrasonic ─────► TRIG: Pin 7, ECHO: Pin 6
├── Buzzer ─────────► Pin 13
└── LED (built-in) ─► Pin 13 (LED_BUILTIN)

必需的库

通过Arduino库管理器安装:

  • LiquidCrystal_I2C 作者:弗兰克·德·布拉班德
  • TM1637Display 作者Avishay Orpaz

______________________________________________________________________

🏗️ 系统架构

┌─────────────────────────────────────────────────────────────┐
│                     Python Layer (FastMCP)                   │
├─────────────────────────────────────────────────────────────┤
│  arduino_mcp_server.py                                       │
│  ├── High-level Tools (led_on, display_timer, etc.)        │
│  ├── Background Monitor Thread                              │
│  │   ├── Reads: TIMER:REMAINING, COUNTDOWN:FINISHED        │
│  │   ├── Reads: CLOCK:LCD:HH:MM:SS, DISTANCE:         │
│  │   └── Executes: Queued conditional actions              │
│  └── Conditional Engine (when_timer_finishes, etc.)        │
└─────────────────────────────────────────────────────────────┘
                            ↕ Serial (9600 baud)
┌─────────────────────────────────────────────────────────────┐
│                    Arduino Layer (Firmware)                  │
├─────────────────────────────────────────────────────────────┤
│  master_control.ino                                          │
│  ├── Non-blocking loop() orchestrates all devices           │
│  ├── Command Protocol: DEVICE:ACTION:VALUE                  │
│  │   Example: LED:BLINK:500, TM1637:COUNTDOWN:90           │
│  ├── Display Modes:                                         │
│  │   ├── LCD: clock, stopwatch, static text               │
│  │   └── TM1637: clock, countdown, stopwatch, numbers      │
│  └── Status Broadcasting (auto-reports state)              │
└─────────────────────────────────────────────────────────────┘
                            ↕
                    ┌───────────────┐
                    │   Hardware    │
                    │   Peripherals │
                    └───────────────┘

通信协议

命令格式示例描述
LED控制LED:ACTION[:VALUE]LED:BLINK:500LED每500ms闪烁一次
蜂鸣器BUZZER:ACTION[:VALUE]BUZZER:BEEP:1000蜂鸣1秒
液晶显示器LCD:ACTION:VALUELCD:LINE1:Hello World写入LCD第1行
TM1637TM1637:ACTION:VALUETM1637:COUNTDOWN:90开始90秒倒计时
超声波ULTRA:ACTIONULTRA:START开始持续监控
状态STATUSSTATUS获取所有设备状态

______________________________________________________________________

📦 先决条件

硬件

  • Arduino Uno、Nano或兼容板
  • 用于编程和串行通信的USB电缆
  • 中列出的组件 硬件堆栈

软件

要求版本目的
python3.10+MCP服务器和脚本
Arduino集成开发环境1.8+或2.x固件上传
pyserial最新串行通信
fastmcp最新AI代理集成

操作系统

  • 视窗 (默认COM端口: COM6)
  • macOS/Linux兼容COM端口调整

______________________________________________________________________

🚀 安装和设置

步骤1:Arduino固件

  1. 打开Arduino IDE
   File → Open → master_control.ino
  1. 安装所需库
   Sketch → Include Library → Manage Libraries
   Search: "LiquidCrystal_I2C" → Install
   Search: "TM1637Display" → Install
  1. 验证接线

- 仔细检查连接是否匹配 硬件堆栈 - 测试LCD I2C地址(尝试 0x27,回退 0x3F)

  1. 上传到董事会
   Tools → Board → Arduino Uno (or your model)
   Tools → Port → COM6 (or your port)
   Upload ✓

第二步:Python环境

  1. 再进行
   pip install pyserial fastmcp
  1. 配置COM端口

- 编辑 arduino_mcp_server.pymaster_control.py - 集 COM_PORT = "COM6" (根据您的端口进行调整) - 检查设备管理器(Windows)或 ls /dev/tty* (Linux/Mac)

  1. 验证连接
   from arduino_mcp_server import test_connection
   print(test_connection())
   # Expected: ✓ SUCCESS: Arduino is connected and ready on COM6

______________________________________________________________________

⚡ 快速开始

选项1:FastMCP服务器(用于AI代理)

python arduino_mcp_server.py

服务器公开了AI代理可以直接调用的工具。

选项2:交互式CLI(用于手动测试)

python master_control.py

尝试以下命令:

led blink 500
buzzer beep 200
lcd 1:Hello Arduino!
display clock
ultra start

您的第一次自动化

from arduino_mcp_server import (
    display_timer, 
    when_timer_finishes, 
    lcd_show_current_time
)

# Start a 30-second countdown on 7-segment display
display_timer(0, 30)

# When countdown finishes, beep 3 times (1 second each)
when_timer_finishes("buzzer_beep", "1000")

# Show live clock on LCD while timer runs
lcd_show_current_time()

______________________________________________________________________

💡 示例工作流

1.带警报的厨房定时器

from arduino_mcp_server import display_timer, when_timer_finishes, lcd_display_message

# 5-minute cooking timer
display_timer(5, 0)

# Show message on LCD
lcd_display_message("Cooking Timer", "5:00 remaining")

# Beep 5 times when done
when_timer_finishes("buzzer_beep", "500")

2.计划任务自动化

from arduino_mcp_server import lcd_show_current_time, when_time_equals, led_blink

# Display live clock
lcd_show_current_time()

# At 7:15 AM, start blinking LED (morning alarm)
when_time_equals("07:15:00", "led_blink", "1000")

# At 7:16 AM, show message
when_time_equals("07:16:00", "display_message", "Wake Up!|Time to Start")

3.近距离安全系统

from arduino_mcp_server import (
    ultrasonic_start, 
    when_distance_less_than, 
    show_live_ultrasonic_on_lcd
)

# Start monitoring distance and show on LCD
show_live_ultrasonic_on_lcd()

# If object closer than 15cm, trigger alarm
when_distance_less_than(15, "buzzer_beep", "2000")
when_distance_less_than(15, "led_blink", "100")

4.多级倒计时链

from arduino_mcp_server import display_timer, when_timer_finishes

# Workout timer: 45 sec work → beep → 15 sec rest → beep → repeat
display_timer(0, 45)
when_timer_finishes("buzzer_beep", "500")
when_timer_finishes("start_timer", "00:15")
# Add more stages as needed!

5.状态仪表板

from arduino_mcp_server import (
    get_current_status,
    lcd_show_current_time,
    display_current_time,
    ultrasonic_start
)

# Show time on both displays
lcd_show_current_time()
display_current_time()

# Monitor distance
ultrasonic_start()

# Check system status
print(get_current_status())

______________________________________________________________________

📚 API 参考

显示功能

功能参数说明
lcd_show_current_time()--LCD上的实时PC时间(每秒更新一次)
lcd_start_stopwatch()--从LCD上的00:00:00开始计数
lcd_write_line1(text)text: strLCD第1行上的静态文本(最多16个字符)
lcd_write_line2(text)text: strLCD第2行上的静态文本
lcd_display_message(line1, line2)line1, line2: str同时写两行
lcd_clear()--清除整个LCD
display_current_time()--7段实时PC时间(HH:MM)
display_timer(minutes, seconds)minutes, seconds: int实时倒计时 至00:00,自动发出蜂鸣声
display_start_stopwatch()--从7段00:00开始倒计时
display_number(number)number: int显示静态数字(-999到9999)
display_clear()--7段清晰显示

执行器功能

功能参数说明
led_on()--打开LED(稳定)
led_off()--关闭LED
led_blink(interval_ms)interval_ms: int (默认值:500)连续闪烁
led_toggle()--翻转LED状态一次
buzzer_on()--连续蜂鸣器(呼叫 buzzer_off() 停止)
buzzer_off()--静音蜂鸣器
buzzer_beep(duration_ms)duration_ms: int (默认值:100)单次蜂鸣,自动停止

传感器功能

功能参数说明
ultrasonic_read()--单距离测量(cm)
ultrasonic_start()--连续监测(间隔200ms)
ultrasonic_stop()--停止监控
show_live_ultrasonic_on_lcd()--LCD显示+自动更新距离

条件自动化

功能参数说明
when_timer_finishes(action, params)action: str, params: str倒计时时执行操作→ 0
when_time_equals(time, action, params)time: "HH:MM:SS", action: str, params: str在特定时钟时间执行
when_distance_less_than(cm, action, params)cm: float, action: str, params: str对象太近时执行

可用操作:

  • "buzzer_beep" --params:持续时间(ms)(例如。, "1000")
  • "start_timer" --参数: "MM:SS" 格式(例如。, "02:30")
  • "led_blink" --params:以毫秒为单位的间隔(例如。, "500")
  • "display_message" --参数: "Line1|Line2" (例如。, "Alert!|Object Near")

系统功能

功能说明
get_current_status()获取计时器、时钟、距离、待处理操作
clear_all_pending_actions()取消所有排队的触发器
all_off()关闭/清除所有设备(紧急停止)
test_connection()验证Arduino连接

______________________________________________________________________

🔧 可扩展性和未来增强功能

易于扩展

Arduino MCP是为可扩展性而设计的。以下是如何增强它:

1. 添加新硬件

示例:添加伺服电机

*Arduino固件(master_control.ino):*

#include 
Servo myservo;

void setup() {
  myservo.attach(5);  // Servo on pin 5
}

void handleServo(String action, String value) {
  if (action == "MOVE") {
    int angle = value.toInt();
    myservo.write(angle);
    Serial.println("OK:SERVO:MOVE");
  }
}

// Add to processCommand():
else if (device == "SERVO") {
  handleServo(action, value);
}

*Python服务器(arduino_mcp_server.py):*

@mcp.tool()
def servo_move(angle: int) -> str:
    """Move servo to specified angle (0-180 degrees)"""
    if angle  180:
        return "Error: Angle must be 0-180"
    response = send_command(f"SERVO:MOVE:{angle}")
    return f"Servo moved to {angle}°"

2. 添加新传感器

传感器类型集成复杂性潜在用例
温度/湿度(DHT22)轻松气候监测,自动风扇控制
光传感器(LDR)轻松自动亮度,日夜检测
PIR运动传感器简单安全警报、自动照明
气体/烟雾探测器中等安全警报,空气质量
GPS模块中等位置跟踪、地理围栏

3. 扩展条件操作

在中添加更多触发器类型 arduino_mcp_server.py:

@mcp.tool()
def when_temperature_above(threshold: float, then_action: str, params: str) -> str:
    """Execute action when temperature exceeds threshold"""
    action = {
        "trigger": "temp_above",
        "target_temp": threshold,
        "action_type": then_action,
        "params": parse_params(params)
    }
    pending_actions.append(action)
    return f"✅ Will execute '{then_action}' when temp > {threshold}°C"

4. 创建复杂场景

多设备晨间例行程序:

def morning_routine():
    # 6:30 AM: Start gentle alarm
    when_time_equals("06:30:00", "led_blink", "2000")
    
    # 6:45 AM: Louder alarm
    when_time_equals("06:45:00", "buzzer_beep", "500")
    
    # 7:00 AM: Show schedule on LCD
    when_time_equals("07:00:00", "display_message", "Good Morning!|Check Schedule")

未来增强思路

增强难度影响
网络仪表盘中等通过浏览器实时监控
MQTT集成中等物联网设备网络兼容性
语音控制中高“Alexa,启动计时器”
数据记录历史传感器数据存储
移动应用通过智能手机进行远程控制
多板支持中等控制多个Arduino
机器学习基于模式的预测自动化
继电器控制易于控制高压电器
RGB LED灯带Easy Medium高级照明效果
SD卡记录中等离线数据持久性

______________________________________________________________________

📁 项目结构

Arduino-MCP/
│
├── arduino_mcp_server.py      # FastMCP server with tools + conditional engine
│   ├── Tool definitions (@mcp.tool decorators)
│   ├── Background monitor thread
│   ├── Conditional execution engine
│   └── Serial communication layer
│
├── master_control.ino          # Arduino firmware
│   ├── Non-blocking loop() architecture
│   ├── Device handlers (LED, buzzer, LCD, TM1637, ultrasonic)
│   ├── Command parser
│   └── Status broadcasting
│
├── master_control.py           # Async CLI controller for manual testing
│   ├── Interactive command menu
│   ├── Human-friendly interface
│   └── Testing utilities
│
├── README.md                   # This file
├── LICENSE                     # MIT License
└── .gitignore                  # Git ignore rules

______________________________________________________________________

🐛 故障排除

常见问题

问题解决方案
LCD什么也不显示•尝试I2C地址 0x3F 而不是 0x27 在固件中

•检查接线(SCL→10, SDA→11) •验证背光是否打开: lcd_backlight_on() | | 未找到端口错误 |•检查设备管理器(Windows)或 ls /dev/tty* (Linux) •更新 COM_PORT 在Python文件中 •确保没有其他程序正在使用该端口| | 时钟显示错误的时间 |•时钟从PC时间开始初始化,然后滴答作响 •重新呼叫 lcd_show_current_time() 重新同步| | 倒计时不响 |•确保蜂鸣器连接到引脚13 •需要主动蜂鸣器(非被动) •检查 buzzer_beep() 功能独立工作| | 超声波给出-1 |•检查接线(跳闸→7, ECHO→6) •确保物体距离2-400cm •传感器需要清晰的视线| | 命令没有响应 |•Arduino可能已重置(连接后等待2秒) •检查固件和Python中的波特率是否为9600 •电话 test_connection() 验证|

调试模式

启用详细日志记录:

import logging
logging.basicConfig(level=logging.DEBUG)

检查Arduino状态:

from arduino_mcp_server import get_current_status
print(get_current_status())

______________________________________________________________________

🤝 贡献

欢迎投稿!以下是您可以提供帮助的方式:

贡献领域

  • 🔧 新的硬件集成(传感器、执行器)
  • 📚 文档改进
  • 🐛 Bug修复和测试
  • 💡 功能建议和实现
  • 🌍 多语言支持
  • 🎨 Web仪表板开发

开发设置

  1. 分叉存储库
  2. 创建要素分支: git checkout -b feature/amazing-feature
  3. 用实际硬件进行彻底测试
  4. 提交更改: git commit -m 'Add amazing feature'
  5. 推送到分支: git push origin feature/amazing-feature
  6. 打开拉取请求

______________________________________________________________________

📄 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

______________________________________________________________________

🙏 致谢

  • FastMCP Marvin Halbach为优秀的MCP框架
  • Arduino社区 硬件库及其启示
  • AI代理开发人员 谁启发了智能硬件控制

______________________________________________________________________

🌟 如果你觉得这个仓库有用,就把它标上!

建于❤️ 面向制造商、修补匠和人工智能爱好者

目录标签

目录标签

PythonAI控制云端部署硬件自动化本地部署事件驱动ArduinoPythonAPI

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP