Arduino代码生成服务

一个使用大型语言模型(LLM)自动生成、编译和上传Arduino、ESP8266和ESP32固件的智能后端服务器。

  • by bkrajendra
  • JavaScript
  • 本地部署
  • 10 星标
  • 更新于
在 GitHub 查看 bkrajendra/arduino-llm-agent

使用说明

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-插入您自己的前端

快速开始

  1. 安装并运行Olama(ollama serve)
    • ollama run llama3.2
  2. 安装和配置 arduino-cli
  3. 克隆此仓库 npm run start (或 bun run 版本)
  4. 按照提示发送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!如果你喜欢,一定要开始这个项目。