원클릭으로
upy-select-hw
第二步——MCU 选型 + 固件核验 + 引脚分配 + BOM 生成。输入 upy-analyze 的 project-manifest.json,输出完整的硬件方案。触发:upy-analyze 完成后自动进入。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
第二步——MCU 选型 + 固件核验 + 引脚分配 + BOM 生成。输入 upy-analyze 的 project-manifest.json,输出完整的硬件方案。触发:upy-analyze 完成后自动进入。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | upy-select-hw |
| description | 第二步——MCU 选型 + 固件核验 + 引脚分配 + BOM 生成。输入 upy-analyze 的 project-manifest.json,输出完整的硬件方案。触发:upy-analyze 完成后自动进入。 |
给定 project-manifest.json(devices + requirements + mcu_specified),完成 MCU 选型、固件核验、引脚分配、BOM 生成。不写代码,不管驱动。
python --version
mcu_specified 有值)1. 核验 MicroPython 固件是否支持:
已知支持型号 → 直接通过(见下表)
非常见型号 → WebSearch: site:micropython.org/download {型号}
无固件 → 停止!告知用户并建议替代:
ESP32 (最通用) / Pico (性价比) / ESP32-S3 (AI 能力)
2. 输出固件下载链接:
URL: https://micropython.org/download/{BOARD_NAME}/
推荐策略:优先 Pico 系列和 ESP32 系列(MPY 适配最好)。
打分逻辑:
需要 WiFi/BLE → +1 ESP32 系列, +1 Pico W
需要 AI/语音/摄像头 → +1 ESP32-S3
低功耗 + 电池供电 → +1 ESP32-C3
纯 GPIO 控制 → +1 Pico 系列
极致低价 → +1 ESP8266 / Pico
新手入门 → +1 Pico (USB 拖拽烧录) / ESP32
最终推荐 Top 1,附简短理由。
备选:Top 2(用户可切换)
推荐输出示例:
推荐主控:Raspberry Pi Pico W
理由:需要 WiFi(requirements.network=wifi),RP2040 性价比高,
MPY 适配极好,USB 拖拽烧录对新手友好。
备选:ESP32(WiFi + BLE,生态最全,接口更多)
确认使用哪个?或者指定其他型号。
| MCU | BOARD_NAME | 烧录方式 |
|---|---|---|
| ESP32 | ESP32_GENERIC | esptool.py |
| ESP32-S3 | ESP32_GENERIC_S3 | esptool.py |
| ESP32-C3 | ESP32_GENERIC_C3 | esptool.py |
| ESP32-S2 | ESP32_GENERIC_S2 | esptool.py |
| ESP32-C6 | ESP32_GENERIC_C6 | esptool.py |
| Pico | RPI_PICO | 按住 BOOTSEL 拖拽 .uf2 |
| Pico W | RPI_PICO_W | 同上 |
| Pico 2 | RPI_PICO2 | 同上 |
| Pico 2 W | RPI_PICO2_W | 同上 |
| ESP8266 | ESP8266_GENERIC | esptool.py |
| STM32F4DISC | STM32F4DISC | dfu-util |
| STM32F7DISC | STM32F7DISC | dfu-util |
| Pyboard | PYBV11 | dfu-util |
| Teensy 4.0 | TEENSY40 | Teensy Loader |
| Teensy 4.1 | TEENSY41 | Teensy Loader |
请上传你的开发板引脚图(照片/截图/PDF 均可)。
搜索 "{MCU型号} pinout" 或 "{MCU型号} 引脚图" 即可找到。
若用户说"找不到" → 用 WebSearch 搜 {MCU型号} pinout diagram,取第一张图给用户确认。
从引脚图中提取:
LLM 按以下规则推理分配:
规则 1 — I2C 器件:
├─ 所有 I2C 器件挂同一条 I2C 总线(默认 I2C0)
├─ 地址冲突 → 用第二组 I2C(如有) 或 Software I2C(任意 GPIO)
└─ 每条 I2C 总线占 2 个 GPIO(SCL + SDA)
规则 2 — SPI 器件:
├─ 共享 MOSI/MISO/SCK,每个器件独立 CS
├─ 用硬件 SPI 默认引脚
└─ N 个 SPI 器件占 3 + N 个 GPIO
规则 3 — UART 器件:
├─ 优先 UART1/UART2(UART0 被 REPL 占用)
└─ 每个 UART 器件占 2 个 GPIO(TX + RX)
规则 4 — GPIO 简单器件(LED/蜂鸣器/按键/继电器):
├─ 优先用远离 I2C/SPI 总线的引脚
├─ 避开启动敏感引脚
├─ 避开只读引脚
└─ 每个器件占 1 个 GPIO
规则 5 — ADC 器件:
├─ 只能用 ADC 引脚(如 ESP32: GPIO32-39 中的 ADC1)
└─ 注意 ESP32 ADC2 与 WiFi 冲突
规则 6 — 冲突检测:
├─ 同一 GPIO 不能被分配两次
├─ 打印分配后引脚占用表
└─ 标注共享引脚(如 I2C 总线上的多个器件)
分配输出格式:
引脚分配方案:
I2C 总线 (I2C0):
SCL = GPIO22, SDA = GPIO21
器件:SHT30 (0x44), SSD1306 (0x3C), BMP280 (0x76)
地址无冲突 ✓
GPIO 独立:
蜂鸣器 = GPIO4
LED = GPIO13
未使用默认引脚:SPI(无 SPI 器件)
引脚占用:6/26 GPIO
冲突检查:通过 ✓
引脚电气类型 (type) 枚举映射:
| 引脚用途 | type 值 |
|---|---|
| 3.3V 电源输出 | power_3v3 |
| 5V 电源输出 | power_5v |
| GND | gnd |
| I2C SDA | i2c_data |
| I2C SCL | i2c_clock |
| SPI MOSI | spi_mosi |
| SPI MISO | spi_miso |
| SPI SCK | spi_sck |
| SPI CS | spi_cs |
| UART TX | uart_tx |
| UART RX | uart_rx |
| GPIO 输出 (LED/蜂鸣器/继电器) | gpio_out |
| GPIO 输入 (按键) | gpio_in |
| GPIO 输入+上拉 | gpio_in_pullup |
| ADC 输入 | adc |
| PWM 输出 | pwm |
| I2S | i2s |
物理引脚编号 (physical_pin) 获取规则:
LLM 必须把电源引脚也写入 pinout:
电源引脚分配:
3V3(OUT) → 所有 I2C/SPI 器件的 VCC(传感器、屏幕等)
5V(VBUS) → 需要 5V 的大功率器件(舵机、电机等)
GND → 所有器件的 GND(每个器件一根)
pinout 增加条目:
{device: "电源", pin_name: "3V3(OUT)", gpio: "3V3", physical_pin: 36, type: "power_3v3", side: "right", pos: 16}
{device: "电源", pin_name: "GND", gpio: "GND", physical_pin: 38, type: "gnd", side: "right", pos: 18}
物料清单:
# 名称 型号 数量 单价 备注
1 主控 {MCU型号} 1 ¥{xx} 含 USB 线
2 {器件1} {型号} 1 ¥{xx} {接口}
3 {器件2} {型号} 1 ¥{xx} {接口}
- 面包板 830 孔 1 ¥8 可选
- 杜邦线 公母各 20 根 1 ¥5
- USB 数据线 Micro-USB 1 ¥5 (若主控不含)
预估总价:¥{total}
vs 用户预算:{budget_yuan}
{超预算/预算内}
价格来源:LLM 知识 + 常识估算。
调用脚本写入 project-manifest.json:
python G:/MicroPython_Skills/upy-select-hw/scripts/update_manifest.py \
--project-dir {project_dir} \
--input {llm_output_json}
--- 写入字段:
phase: "select-hw"mcu: {model, board, firmware_url, flash_tool}pinout: [{device, pin_name, gpio, physical_pin, type, side, pos, notes}]
physical_pin: 物理引脚编号(如 Pico 的 GP4 = Pin 6)type: 引脚电气类型枚举(见下方映射表)side: 引脚在 MCU 哪一侧(left/right/top/bottom)pos: 在 side 上的顺序位置(0-based)bom: [{name, model, quantity, unit_price_yuan, notes}]upy-analyze:输入 manifestupy-scaffold:传入完整硬件方案(mcu + pinout + bom)Analyze MicroPythonOS App ideas directly or when invoked by mpos-plan-app. Use to turn natural-language MPOS App requests into requirements, default app identity, manifest draft, Activity/Service plan, MPOS/LVGL API plan, dependency risk, test/deploy plan, mandatory MicroPythonOS resource links, and a JSON handoff before code generation.
Deploy or preview a MicroPythonOS app on desktop, web, device copy, MPK install, or installer/flash guidance paths. Use when Codex needs to launch a confirmed app for manual preview, copy it to a board with mpremote, validate an MPK on-device, or route firmware install and erase to install.micropythonos.com. Does not own app generation, static lint, packaging, or default smoke testing.
MicroPythonOS 基础开发知识库。提供代码架构、App/MPK 约束、LVGL 编程约定、MPY API reference、官方 docs 专题 reference、AGENTS 本地强约束。mpos-plan-app / mpos-analyze-app / mpos-prepare-deps / mpos-gen-app / mpos-test-app / mpos-package-app / mpos-deploy-app / mpos-publish-app 均依赖此 skill。
Generate, update, and repeatedly repair MicroPythonOS App code after requirements are confirmed. Use after mpos-analyze-app and optionally mpos-prepare-deps to create or modify an internal_filesystem/apps package directory with root MANIFEST.JSON, root icon_64x64.png, assets/*.py entrypoints/dependencies, dependency adapters, and validation results. Always defaults to a two-phase flow: first produce a generation plan and ask for confirmation, then write files only after explicit user confirmation. Supports repeated calls for user feature changes and test-failure repair loops. Does not analyze vague requirements, prepare external dependencies, package MPK files, deploy devices, flash firmware, publish to upystore, or rebuild lvgl_micropython.
Package and validate a single MicroPythonOS App as an MPK release artifact. Use when Codex needs to create a .mpk, validate an MPOS App manifest/icon/package structure, emit one app_index_entry.json fragment, run optional temporary install validation, or prepare AppStore/upystore publishing artifacts without uploading.
Orchestrate a MicroPythonOS App workflow across analyze, dependency preparation, generation, testing, packaging, deployment, and upystore publishing. Use when Codex needs to start from a natural-language app request, continue or resume an interrupted MPOS app task, decide the next mpos-* skill, maintain per-app plan_state.json and activity_log.jsonl under tmp/mpos-plan-app, handle user requirement changes with invalidation confirmation, or run the default path through mpos-publish-app. Does not implement code, download dependencies, test, package, deploy, flash, or upload directly.