Arduino LLM代理
llm-arduino-mcp
一个智能后端服务器,使用大型语言模型(LLM)自动生成、编译和上传Arduino、ESP8266和ESP32固件,由Ollama和Arduino CLI提供支持。
LLM+MCP启发的流程
使用自然语言提示和本地Ollama LLM模型自动生成、编译和上传Arduino草图。
特性
- Ollama本地LLM API专用代码生成
- 使用Arduino CLI自动编译和上传
- 支持多个板:Arduino Uno、ESP8266、ESP32——易于扩展
- Simple Express API-插入您自己的前端
快速开始
- 安装并运行Olama(
ollama serve)
- ollama run llama3.2
- 安装和配置
arduino-cli - 克隆此仓库
npm run start(或bun run版本) - 按照提示发送POST请求:
curl -X POST http://localhost:3000/generate-arduino \
-H "Content-Type: application/json" \
-d '{"prompt": "Write Arduino code to blink LED on pin 2 using ESP32."}'
______________________________________________________________________
MCP(模型上下文协议)状态
本项目部分遵循MCP(模型上下文协议)原则:
- 使用结构化系统+用户角色。
- 以清晰的格式传递提示上下文。
- 根据生成的上下文自动化外部工具(Arduino CLI)。
MCP合规性的计划改进
- \[\]添加版本 上下文注册表 用于可重用的系统指令。
- \[\]支持通过REST创建和切换自定义上下文。
- \[\]标准化请求/响应有效负载,以完全符合OpenAI的Chat API格式。
- \[\]将工具/插件调用添加为结构化操作。
- \[\]存储完整的思维链并编译/上传日志。
- \[\]为上下文控制添加基于角色的API身份验证。
______________________________________________________________________
目标是将该项目发展成为嵌入式LLM工作流的可重用、标准友好的MCP后端。
先决条件
- 安装arduino-cli
- 请参考:https://arduino.github.io/arduino-cli/1.2/
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh或者下载Arduino CLI的副本,将其放置在您选择的目录中,并确保根据您的操作系统将其添加到系统的PATH中。
arduino-cli core update-index
arduino-cli core install arduino:avr
arduino-cli core install esp8266:esp8266
arduino-cli core install esp32:esp32- 将arduino-cli添加到系统路径
- 确保Ollama已安装在您的机器上
- 请参考:https://ollama.com/download
要安装依赖项,请执行以下操作:
bun install更新server.js
- 根据您的Ollama设置更新Ollama模型
- 使用llama3.2进行测试:最新版本
- 为您的板更新端口
const OLLAMA_URL = 'http://localhost:11434/api/chat'; // Change if your Ollama server is running on a different port
const SERIAL_PORT = 'COM5'; // Change as per your board
const OLLAMA_MODEL = 'llama3.2:latest'; // Change as per your Ollama setup要运行:
bun run start用法
- 确保Arduino板连接到com端口
- 从终端运行以下命令
curl --location 'http://localhost:3000/generate-arduino' \
--header 'Content-Type: application/json' \
--data '{
"prompt": "Write Arduino code for ESP8266 board to blink an LED on pin LED_BUILTIN every 3 seconds. Do not include any libraries."
}'
______________________________________________________________________
路线图和未来改进
该项目是将LLM与嵌入式自动化相结合的有力起点。以下是进一步推进该计划的想法:
- \[ \] Web UI增强功能
- 添加一个带有代码语法高亮显示的适当web前端(例如Ace Editor或Monaco)。 - 使用下载或复制按钮很好地显示生成的代码。 - 实时显示编译日志和上传状态。
- \[ \] 董事会管理
- 在UI中添加下拉菜单,手动选择支持的板。 - 从配置文件动态获取电路板列表(boards.json). - 自动检测连接的板和可用的串行端口。
- \[ \] 用户提示和模板
- 为常见任务提供现成的提示模板(闪烁LED、读取传感器等)。 - 添加提示历史记录并重新运行支持。
- \[ \] 项目文件
- 允许多个草图和自动存档生成的代码。 - 提供下载选项 .ino 就像拉链一样。
- \[ \] 安全和权限
- 添加基本的API身份验证或API密钥。 - 为了安全起见,在编译/上传之前验证生成的代码。
- \[ \] Docker和部署
- 添加一个Dockerfile,将Ollama、Arduino CLI和服务器打包在一起。 - 提供在本地网络或边缘设备上部署的说明。
- \[ \] CI/CD集成
- 使用GitHub Actions来整理、测试和部署后端。 - 添加代码块和电路板解析的单元测试。
- \[ \] 可扩展性
- 支持其他微控制器系列(RP2040、STM32等)。 - 模块化插件系统,适用于新电路板或新编码器型号。
- \[ \] 监控
- 添加LLM使用的基本日志和指标,编译统计数据,成功/失败率。
______________________________________________________________________
想贡献吗?\ 欢迎为任何这些改进打开问题或PR!如果你喜欢,一定要开始这个项目。
